DPXBASE

March 29, 2018 | Author: cesarlv78 | Category: Table (Database), Computer Program, Sql, Compiler, Computer File


Comments



Description

ProgramaciónTABLA DE CONTENIDO PROGRAMACIÓN............................................................................................................................................3 FICHEROS.......................................................................................................................................................22 aplicaciones o modulo del sistema................................................................................................................22 TAbla de datos ..............................................................................................................................................22 Generador de Browses o Listas.................................................................................................................24 Opciones Para Los Campos.....................................................................................................................25 menú de acceso..............................................................................................................................................27 Definición del Menú................................................................................................................................28 programas fuentes dpXbase........................................................................................................................28 Botones de la Barra del menú Principal .....................................................................................................31 enlace entre tablas.........................................................................................................................................32 otras funciones..................................................................................................................................................32 Generador de Informes..................................................................................................................................32 Diseño de Formularios..................................................................................................................................32 Continuidad EN Datapro para Tablas DBF................................................................................................36 Continuidad en el Léxico XBase desde los Productos DOS..........................................................................36 Componente DataSet.....................................................................................................................................36 Clase TDataSet:.........................................................................................................................................38 FUNCIONES PARA SENTENCIAS SQL......................................................................................................40 FUNCIONES PARA EL MANEJO DE DATOS............................................................................................41 OpenTable(cSql,lData).............................................................................................................................41 asql(csql)...................................................................................................................................................41 SQLdELETE(Ctabla,CwHERE)...............................................................................................................42 SQLUPDATE(Ctabla,CCAMPO,xVALOR,,CWHERE).........................................................................42 SQLGET(Ctabla,CCAMPO,CWHERE)..................................................................................................42 DTOSQL(dfecha)......................................................................................................................................43 sqltodate(cfecha).......................................................................................................................................43 BDLIST(cTable,aFields,lGroup,cWhere).................................................................................................43 BDSELECT(cTable,aFields,lGroup,cwhere))..........................................................................................44 OBJETOS .....................................................................................................................................................46 GridEdit(cTable , cLinkdHead , cLinkGrid , cSql )......................................................................................50 archivos de ayuda..........................................................................................................................................51 Clases Propietarias Datapro............................................................................................................................52 TPUBLIC.......................................................................................................................................................52 Ttable.............................................................................................................................................................53 TDPEDIT.......................................................................................................................................................58 Manual del Usuario Capítulo VI. Pag: 1 Programación CONTROLES de la librería fivewin para formularios................................................................................62 Módulos HRB....................................................................................................................................................66 utilizacion de otras herramientas de desarrollo.............................................................................................68 utilizacion de REPORTES DISEñADOS CON FOXPRO...........................................................................68 Manual del Usuario Capítulo VI. Pag: 2 Programación PROGRAMACIÓN DPXBASE es un ambiente de desarrollo para léxico de tipo Xbase y diseñado para crear aplicaciones de tipo comercial de manera rápida y sencilla. Además incorpora un conjunto de componentes tecnológicos que logran aportar robustez en las aplicaciones finales. Dentro de ellas tenemos: 1. Lenguaje de Programación xHarbour para 32 bits y C++ de Borland. 2. Acceso a Bases de Datos de tipo SQL a través de ODBC o Nativo MySQL. 3. Uso de Integridad Referencial en las bases de datos. 4. Reportes a Través de Crystal Report. 5. Generador de Reportes para la clase Treport. 6. Generador de Código Fuente para Formularios de múltiple propósitos: Mantenimiento de registros, Ventanas de Diálogos, Ventanas MDI. DPxbase, posee un (DataBase IDE) que permite definir todas las tablas “SQL” que serán utilizadas por el sistema de manera jerárquica: Campos, Índices, Claves Primarias y referencias entre tablas. Además; importa estructuras desde formatos DBF. Tipos de Datos: DpXbase soporta los mismos tipos de datos de las Tablas de Formato DBF de Dbase o Foxpro, adicionalmente soporta tipos de datos exclusivos de Clipper tales como: Bloques de Código, Arreglos, Objetos y Nulos . Para una fácil compresión o lectura de programas escritos en DpXbase utilizamos la notación Húngara que consiste en una técnica para declarar las variables con un prefijo que indica el tipo de dato que lo representa, ejemplo: LOCAL LOCAL LOCAL LOCAL LOCAL LOCAL LOCAL nNumerico:=100 cCaracter:=”Caracteres” dFecha:=DATE() lLogico:=.T. bBloq :={||NIL} aArray :={1,2,3,4,5} oObjeto:=OpenTable(“SELECT * FROM DPINV”) Manual del Usuario Capítulo VI. Pag: 3 5. entre otras.6} aLista:={“Uno”. debe utilizar la siguiente forma: aLista:={} AADD(aLista.CTOD().T. o Falso .2.2.. Igualmente soporta valores enteros (sin decimales). se debe utilizar la siguiente sintaxis: Manual del Usuario Capítulo VI. Ejemplo: aLista:={1.CMES().} Para declarar arreglos multidimensionales. Date o Fecha: Soporta datos según el formato “dd/mm/aaaa” y se refiere a fechas que pueden soportar operaciones matemáticas y su uso está vinculado con las funciones DAY(). Pag: 4 . Nulos: Se refiere al valor por defecto que posee una variable cuando se declara sin valor. Arreglos: También llamados vectores son listas de valores de una sola dimensión.6}) // Puede Notar que estamos adicionando una lista de números Para mostrar el primer elemento. soporta 19 enteros y siete decimales.4.date(). La lista de los arreglos se declaran con {}.3.{1.DOW(). Carácter o Memo: Acepta caracteres o cadenas de datos y soporta hasta 4 Gigas por cada variable.T. “LOCAL nValor”.MONTH().Programación Numéricos.F.3.DTOC(). Lógicos: Se obtiene por las comparaciones de valores mediante operadores lógicos y relacionales. DpXbase al igual que clipper no soporta arreglos multimensionales en forma literal sin embargo un arreglo puede esta compuestos de listas contentivas de arreglos logrando la manipulación de arreglos multidimensionales.nil. DTOS().2. se refiere a valores de tipo numéricos.5. Si preguntamos por su valor: MsgAlert(ValType(nValor)). otra ventaja de los arreglos es que su contenido puede estar compuesto por datos de varios tipos. de esta manera nValor es NIL. siempre su valor es verdadero . mostrará NIL.4. ”POSGRES”} nAt:=ASCAN(aData.2}) {“FECHA” . // Buscar en un arreglo Multidimensional #INCLUDE “DPXBASE. ADEL(). AADD(aCampos. AADD(aCampos. ASCAN().T. Veamos sus más importantes usos: // Buscar en un arreglo Unidimensional #INCLUDE “DPXBASE.2}) nAt:=ASCAN(aCampos.1])) // Mostrará 1 También puede utilizarse aLista[1][1] DpXbase provee un conjunto de funciones diseñadas exclusivamente para el manejo de arreglos: AADD(). El uso de arreglos ha sido altamente explotado en DpXbase.CH” PROCE MAIN() LOCAL aData:={“MYSQL”.”D”. AEVAL(). AADD(aCampos.”M”. El ambos ejemplos podemos notar la siguiente sintaxis aplicada en la función ascan() nAt:=ASCAN(aCampos.n| a=”POSGRES”) ? nAt. ASIZE(). ACLONE() Etc. Pag: 5 . ARREDUCE().10.”C”. AADD(aCampos.16.n| a[2]=”L”) Manual del Usuario Capítulo VI.”Econtrado en 3” RETURN .2}) {“MEMO” .{|a. logrando una potencial herramienta de programación.CH” PROCE MAIN() LOCAL aCampos:={} AADD(aCampos.n| a[2]=”L”) ? nAt.01. se utilizan conjuntamente con bloques de código y objetos.Programación MsgAlert(STR(aLista[1. {“CARACTER”.0}) {“NUMERICO”.{|a. AINS().08.”L”.{|a. ASORT().10.T. “SQL-SERVER”.”N”.2}) {“LOGICO” .”Encontrado en 3era posición” RETURN . es decir. Pag: 6 .n| se refiere a: a Corresponde al elemento que está en evaluación n Se refiere al número del elemento.”Este es el mensaje”) Los bloques de código se comportan en forma similar a una función de un programa. El Bloque de código es un potencial altamente aplicado en todo DpXbase y en las reglas de negocio encargadas de generar las transacciones comerciales. Declaración: bBloque:={||MsgAlert(“Hola DpXbase”)}) Para ejecutarlo: Eval(bBloque) // Muestra en un dialogo “Hola DpXbase” También recibe parámetros. en cada vuelta serán enviados como parámetros el elemento del arreglo “a” y la posición “n” del mismo. ejemplo: FUNCTION SUMAR(nValor1. la gran diferencia entre un programa ejecutable “Binario” y un bloque de código están en que el programa ejecutable se encuentra almacenado en un fichero de extensión EXE y el bloque de código está almacenado en una variable. ejemplo: bBloque:={|cMensaje|MsgAlert(cMensaje)}) Eval(bBloque. si el arreglo está compuesto de 10 elemento. se ejecutará un proceso cíclico de 10 vueltas. Bloques de Código: Como su nombre lo indica son datos que contienen código de ejecución “que ejecutan como si fuese parte del EXE”. La funciones ASCAN() y AEVAL() realizan un recorrido ascendente del arreglo.Programación Estos dos parámetros |a. pueden recibir parámetros y devolver valores.nValor2) LOCAL nResp:=nValor1+nValor2 RETURN nResp Manual del Usuario Capítulo VI. Conocer ampliamente y dominar el concepto de bloque de código le ayudará a conocer DpXbase y construir soluciones aprovechando el potencial de los bloques de código.nValor2|nValor1+nValor2} Para ejecutar la Suma. Menú.1 BUTTON oBtn PROMPT “Cerrar” oBtn:bAction:={||oDlg:End() ACTIVATE DIALOG oDLG RETURN NIL En este ejemplo puede observar que la acción de botón “Cerrar” está definida mediante un bloque de código.20) y devuelve 30 La traducción literal de la función SUMAR() hacia bloque de código es: BSumar:={|nValor1. Cada vez que el usuario presiona CLICK en un control está haciendo uso de un bloque de código que contiene la ejecución del control.). Pag: 7 . principalmente donde están las ejecuciones. etc.Programación Para Ejecutar la suma es necesario llamar a la función sumar de la siguiente manera: SUMAR(10.10. gran parte de las funciones DpXbase utilizan bloques de código en especial las funciones orientada al manejo de arreglos. Los bloques de código están en todo el uso de DpXbase.20) // Devuelve 30 Los bloques de código están en todas partes del sistema. es necesario utilizar la función EVAL() de la siguiente manera: EVAL(bSumar.oBtn DEFINE DIALOG oDLG TITLE “Bloque de Código” @ 1. tales como: Clic en un control (Botón. ejemplo: #DEFINE “DPXBASE. Manual del Usuario Capítulo VI. cuando el usuario presione “Clic” será ejecutado el bloque de código “oBtn:bAction “ que está compuesto por la llama al método “End()” cerrar del dialogo identificado con la variable “oDlg”.CH” PROCE TESTBLQ() LOCAL oDlg. Aritméticos: Se encargan de realizar operaciones aritméticas de: Asignación. Por razones de comodidad y estandarización DpXbase utiliza las mismas funciones estándar xbase de Clipper 5.DIALOG) son manipulados mediante objetos que se definen a través de comandos predefinidos en el fichero de encabezado “DPXBASE. Todos los controles Windows (GET."forms\formulario.TEXT.. Operadores: Son un conjunto de símbolos utilizados para generar resultados aritméticos y/o lógicos. etc. como por ejemplo una calculadora: Posee teclas que realizan tareas: (indicar un numero. Resta. contiene la documentación y ejemplo de cada una de las funciones estándar xbase utilizadas en DpXbase."oObjeto". sumar.edt". Pag: 8 .CH” En el fichero “DPXFUNCTION.F. restar. Los datos de tipo objeto se obtiene mediante la llamada a una clase Objeto preexistente en DpXbase. Suma. Podemos notar que DpXbase posee una calculadora totalmente diseñada bajo el concepto de programación “Objeto”.COMBO.Programación Objetos: El concepto de Objetos utilizado por DpXbase está basado bajo el concepto clásico de “Programación Orientado a Objetos (OOP)”.2 con la diferencia que están diseñadas para 32 bits. para hacer llamada a un objeto utilizamos la siguiente sintaxis: oObjeto:=TDpEdit():New() oObjeto:=DPEDIT():New("Titulo".) y contiene datos “números del 0 al 9” para realizar operaciones matemáticas. Multiplicación y División.CHM” ubicado en la carpeta HELP de sistema de gestión empresarial o nómina. Manual del Usuario Capítulo VI.) oObjeto:Activate() Si evaluamos el tipo de dato de oObjeto con ValType(oObjeto) devuelve “O” Las funciones del objeto o mejor dicho lo que hace se denomina “Metodo()” y los datos que contiene se llama “Data”. Podemos definir que un objeto es un elemento que está compuesto por datos y que realizar actividades. CH” Manual del Usuario Capítulo VI.dFecha / Dividir. Realiza la multiplicación de valores numéricos. Ejemplo: LOCAL nMonto:=5*5 ? nMonto ** Potenciacion.dFecha * Multiplicar. Resta algebraicamente valores numéricos y fechas. Ejemplo: #INCLUDE “DPXBASE. Ejemplo: LOCAL nMonto:=5*5 ? nMonto.cChar .Restar. Ejemplo: LOCAL nMonto:=200-100 LOCAL bFecha:=DATE()-1 ? nMonto. Genera el valor potencial de un valor numérico.dFecha.Programación := Asignar: Asigna el resultado hacia una variable. Pag: 9 . LOCAL nMonto:=100+200 LOCAL bFecha:=DATE()+100 LOCAL cChar:=NETNAME()+” este es mi PC” ? nMonto. Suma en forma algebraica valores numéricos y fechas. también concatena valores de tipo carácter. ejemplo: nValor:=100+200 + Sumar. Realiza la división de valores numéricos. . Una de las condiciones debe cumplirse IF (1=0) .OR. Falso. ejemplo: lResp:=(1=0) Exactamente igual que. IF (1=0) # (1=2) .1) Mayor . O. ejemplo: lResp:=(1=0)que Cadena Asociada “A”$”ABEDARIO” Lógicos: Se encargan de realizar operaciones que generan resultados verdaderos y falsos con diversas comparaciones relacionadas. ejemplo: lResp:=(1=0) Menor que.and. ejemplo: lResp:=(1>0) Mayor o Igual que.NOT. (1=2) Tambien puede utilizar ¡ If ¡(1=0) Manual del Usuario Capítulo VI. Negación.NOT.0==1. (2=2) . ejemplo: lResp:=(1. ejemplo: lResp:=(1<=0) Diferente que. ejemplo: lResp:=(0<1) Menor o Igual que.OR. todas las condiciones deben cumplirse: IF (1=1) .F. Verdadero o .T.AND. (1=1) El símbolo # puede ser usado por . IF . Y . = == > >= < <= <> $ Igual que. Pag: 10 .or.Programación LOCAL nMonto:=3**2 ? nMonto Relacionales: Utilizado para realizar comparaciones entre valores y generan valores lógicos . Rellenar un arreglo Para rellenar el arreglo del carácter X: AFILL(aArray. los arreglos de dentro de un arreglo conforman arreglos multidimensionales o concatenados.3.6} . generando una lista: aLista:={1. ejemplo: aLista[2].2. Recordemos que los arreglos es un tipo de datos compuestos por otro tipo de datos.”X”) ? aData[1] // Muestra X Agregar un nuevo elemento: AADD(aData.Programación Manipulación de Datos: DpXbase al igual que Clipper tienen consideraciones especiales para manipular datos de tipo arreglos y bloques de código. Manipulación de Arreglos: Este tipo de datos se manipulan mediante las siguientes funciones especialmente diseñadas para el manejo de arreglos y listas. La referencia de cualquier elemento se establece mediante su posición. Pag: 11 . Iniciación de Arreglo: aArray:={} Declaración de un Arreglo de elementos: aArray:=ARRAY(20) ? aData[1] // Muestra NIL Genera un arreglo con 20 elementos nulos.”Nuevo”) Medir la longitud del arreglo: Manual del Usuario Capítulo VI. se refiere al segundo elemento de la lista. una de las grandes ventajas de los arreglos es que soportan cualquier tipo de datos incluyendo arreglos.4.5. { |x.{“A”. aData:=ASIZE(LEN(aData)-1) // Reduce el tamaño de la lista.1) elemento. También se puede remover un elemento con la siguiente función: ARREDUCE(aData.{“B”.”Primero”) // Inserta un nuevo elemento en la primera posición Ordenar un Arreglo ASORT(aData) Ordenar un Arreglo Multidimensional LOCAL aData:={}. la lista se mantiene en 21 elementos.. y| x[1] < y[1] }) Manual del Usuario Capítulo VI. Pag: 12 ..2}) AADD(aData.{“Z”.1}) aData:=ASORT(aData. ahora queda con 20 elementos.NIL) // Agrega un nuevo elemento al final AINS(aData.Programación ? LEN(aData) // Genera 21 Remover o Quitar el primer elemento del arreglo: ADEL(aData.1) // Remueve el primer elemento con valor NIL.3}) AADD(aData. // Elimina físicamente el primer Asignar un Valor en cualquier posición del Arreglo: aData[1]:=”Nuevo Valor” Insertar un nuevo Elemento: AADD(aData.nAt AADD(aData. 2}) AADD(aData. { |x.”X”) // Realiza elementos de la lista.nTotal:=0 AADD(aData. y| x[2] < y[2] }) Buscar en la Lista.nAt AADD(aData. ASCAN(aData. Para arreglos multidimensionales: LOCAL aData:={}.2}) AADD(aData. Pag: 13 ..{“B”.2}) Manual del Usuario Capítulo VI. {|a.3}) aNuevo:=Aclone(aData) Recorrer una lista LOCAL aData:={}.{“C”.1}) AADD(aData.{“B”.n| a[1]=”B” ? nAt // Respuesta 2 }) la búsqueda de X en los Visualizar un Arreglo: ViewArray(aData) Duplicar Arreglo: LOCAL aData:={}.1}) AADD(aData.{“C”.{“A”.aNuevo AADD(aData.3}) nAt:=ASCAN(aData.{“B”..{“A”.{“A”.1}) AADD(aData.Programación // Si se require Ordenar por la segunda Columna numérica aData:=ASORT(aData. aTotal:=0 AADD(aData.5.{“B”. {|a.3}) AADD(aData.{“B”.4.2}) AADD(aData.{“C”.2.4}) aTotales:=TOTALES(aData) ? aTotales[2] // Respuesta 10 Manipulación de Cadenas: El tipo de dato carácter se puede concatenar en forma literal. DpXbase Incluye un conjunto de funciones que permiten trabajar ampliamente con este tipo de datos.{“C”.4}) Aeval(aData.{“A”.0).1}) AADD(aData.3. LOCAL cChar:=”” CChar:=cChar + “Nueva Cadena” Manual del Usuario Capítulo VI.3}) AADD(aData. Pag: 14 .n. Incrementar o Concatenar Cadenas.b| nTotal:=nTotal + b }) b:=iif( a[1]=”B”. a[2] .{“B”. puede ser ? aData[len(aData)] // Muestra 6 Totalizar una lista LOCAL aData:={}. // totaliza los elementos cuya columna es “B” Obtener el ultimo elemento : LOCAL aData:={1.6} ? ATAIL(aData) // Muestra 6 Otro uso.Programación AADD(aData. 2) ? cChar // Muestra AB LOCAL cChar:=”ABBCCDD” cChar:=RIGHT(cChar. cChar:=cChar + CRLF + “Nueva Lista” // CRLF es CHR(10)+ CHR(13) Grabando el Disco MemoWrit(¨Fichero.¨BB¨.¨bb”) ? cChar // Muestra AbbCCDD Obtener parte de una Cadena LOCAL cChar:=”ABBCCDD” cChar:=LEFT(cChar.2) ? cChar // Muestra BB Buscar Posición Manual del Usuario Capítulo VI.Programación Generando un valor de tipo Memo.cChar) Leyendo desde Disco cChar:=Memoread(cChar) También puede ser cChar =+ cChar <eemplazando valores cChar:=”ABBCCDD cChar:=STRTRAN(cChar. Pag: 15 .2.2) ? cChar // Muestra DD LOCAL cChar:=”ABBCCDD” cChar:=SUBS(cChar.txt”. C.B.cChar) // Muestra 5 Comparar Cadenas LOCAL cChar:=”ABBCCDD” ? “B”$cChar // Muestra . Conversión en Arreglos LOCAL cChar:=”A.F. ? “A”=cChar // Muestra .E” LOCAL aData aData:=_Vector(cChar) ViewArray(aData) Conversión en Numérico LOCAL cChar:=”1000” LOCAL nValor nValor:=VAL(cChar) Conversión en Fecha LOCAL cChar:=”01/01/2007” LOCAL dFecha dFecha:=CTOD(cChar) ? dFecha+1 // Muestra 02/01/2007 Manual del Usuario Capítulo VI.D.cChar) // Muestra 4 LOCAL cChar:=”ABBCCDD” ? RAT(“B”. Pag: 16 . ? “A”==cChar // Muestra .T.T.Programación LOCAL cChar:=”ABBCCDD” ? AT(“C”. Programación MacroEjecución LOCAL cChar:=”A+B” LOCAL R. Declarando Fecha LOCAL dFecha:=CTOD(“”) ? dFecha // Muestra / / Obteniendo la Fecha desde el Sistema Operativo Manual del Usuario Capítulo VI. Pag: 17 .A:=100.10) ? cChar // Muestra 0000000123 Manipulación de Fechas: El tipo de dato Fecha o Date se puede concatenar en forma literal. DpXbase Incluye un conjunto de funciones que permiten trabajar ampliamente con fechas.B:=200 R:=&cChar // Tambien puede usar R:=MACROEJE(cChar) ? R // Muestra 300 Convertir en Bloque de Código LOCAL cChar:=”A+B” LOCAL B.A:=100.B:=200 B:=BloqueCod(cChar) ? Eval(R) // Muestra 300 Repetir Carácter LOCAL cChar:=Repli(“-“. es decir se puede sumar o restar.10) ? cChar // Muestra --------Rellenar de Ceros LOCAL cChar:=STRZERO(123. Programación LOCAL dFecha:=DATE() ? dFecha // Muestra 03/03/2007 Incrementar Fecha LOCAL dFecha:=CTOD(“01/01/2007”) dFecha:=dFecha + 7 ? dFecha // Muestra 08/01/2007 Disminuir Fecha LOCAL dFecha:=CTOD(“01/01/2007”) dFecha:=dFecha - 1 ? dFecha // Muestra 31/12/2006 Días entre Fechas LOCAL dFch1:=CTOD(“01/01/2007”) LOCAL dFch2:=CTOD(“08/01/2007”) ? dFch2-dFch1 // Muestra 7 Día de la Semana LOCAL dFecha:=CTOD(“01/01/2007”) ? DOW(dFecha) // Muestra 1 Domingo // 1 es Domingo // 2 es Lunes // 3 es Martes // 4 es Miércoles // 5 es Jueves // 6 es Viernes // 7 es Sábado Número del día LOCAL dFecha:=CTOD(“01/01/2007”) Manual del Usuario Capítulo VI. Pag: 18 Programación ? DAY(dFecha) // Muestra 1 Nombre del Día LOCAL dFecha:=CTOD(“01/01/2007”) ? CSEMANA(dFecha) // Muestra Lúnes Número del mes LOCAL dFecha:=CTOD(“01/02/2007”) ? MONTH(dFecha) // Muestra 2 Nombre del Mes LOCAL dFecha:=CTOD(“01/02/2007”) ? CMES(dFecha) // Muestra Febrero Número del Año LOCAL dFecha:=CTOD(“01/02/2007”) ? YEAR(dFecha) // Muestra 2007 Principio del Mes LOCAL dFecha:=CTOD(“15/02/2007”) ? FchIniMes(dFecha) // Muestra 01/02/2007 Fecha SQL LOCAL cChar:= SQLDATE(DATE()) ? cChar // Muestra 2007-03-08 // Depende de la configuración de fecha SQL Fin del Mes LOCAL dFecha:=CTOD(“15/02/2007”) ? FchFinMes(dFecha) // Muestra 28/02/2007 Manual del Usuario Capítulo VI. Pag: 19 Programación Primer día del año LOCAL cCharLOCAL dFecha cChar:=”01/01/”+STRZERO(YEAR(DATE()),4) ? cChar // Muestra 01/01/2007 DFecha:=CTOD(dFecha) ? cChar // Muestra 01/01/2007 Funciones de Uso General: Son un conjunto de funciones que se puede utilizar con varios tipos de datos. Detectar tipo de Dato LOCAL LOCAL LOCAL LOCAL LOCAL ? ? ? ? ? dFecha:=DATE() nValor:=100 lLogico:=.T. aData :={} indef ValType(dFecha) // Muestra D ValType(nValor) // Muestra N ValType(lLogico) // Muestra L ValType(aData) // Muestra A ValType(indef) // Muestra U Valores Iniciales: Se definen en el fichero DATAPRO.INI y tiene como finalidad la asignación de valores necesarias para configurar valores del sistema que debe ser tomado en cuenta antes de iniciar cualquier proceso. Manual del Usuario Capítulo VI. Pag: 20 Indica con . Presenta el menú del sistema con una presentación acorde al estilo XP. Además la sentencia SQL es copiar en el ClipBoard de Windows para luego ser pegada con <Pegar o Paste> en el programa de administración de base de datos. Recuerde que los permisos se otorgan por razones de seguridad de acceso para evitar que otro usuario con acceso a la dirección IP del servidor se conecte y pueda manipular o afectar los datos.T. para así conocer los procesos que se ejecutan durante el inicio del sistema. muestra en el titulo de la ventana principal el nombre del programa DpXbase que está en ejecución. líneas. es decir. puede ser utilizado para Nativo y ODBC. TRACERSQL :=Con .T.Programación NATIVO. consume más recursos debido a las imágenes. si la conexión para la base de datos se realiza en forma nativa.F. muestra en el título de la ventana principal la sentencia SQL que está en ejecución desde que se inicia el sistema. Antes de instalar el sistema debe instalar la base de datos en el servidor y otorgarle permisos por cada usuario que le permita al sistema lograr la conexión.T. Si el valor es . Con .doc” basado en experiencia de uso con este fabuloso motor de base de datos relacional. MENUXP: Presenta el menú principal del sistema en forma clásica. pueden ser utilizando en Windows cuando requiere mayor rendimiento en la aplicación. puede crearlos para acceder a la base de datos desde otras aplicaciones como Excel mediante MsQuery. Además optimiza su ejecución debido a que no posee gráficos ni líneas.T. colores y sonidos que puede utilizar. BASE DE DATOS MYSQL Para mayor comodidad hemos creado un manual “c:\dpadmwin\docs\mysql. TRACER : Con . utilizará conexión ODBC mediante DSN. CREADSN. Si la BD es MySQL algunos procesos de datos serán realizados en forma nativa debido a su alto rendimiento. Manual del Usuario Capítulo VI. necesaria para el uso del sistema desde Linux mediante emuladores para Windows. suguiere que genere los conectores DSN desde el formulario de “Conexión con la Base de Datos”.T. sin utilizar tecnología ODBC de MS que requiere previamente la definición de DSN para acceder a la base de datos. Pag: 21 . también. Con Valor . Si el sistema trabaja en forma nativa no necesita los DSN para ODBC. se solicita la dirección IP del Servidor. hace Manual del Usuario Capítulo VI. Cuando DPxbase detecta que un campo esta referenciado con otra tabla que incluye un formulario con toda la sintaxis en formato xBase. Pag: 22 . campos únicos y un sin número de utilidades. CHECK.” y atributos para cada campo. Imprimir. DPxbase provee la clase TDPEDIT que controla el formulario con la tabla de datos y el navegador de registros. en caso de ser localhost “en el mismo PC”. Grabar. posee métodos "methods" para: Iniciar. el sistema tratará de conectarse con la base de datos.bat”. COMBO. El integrador podrá adaptarlo a sus necesidades. que será utilizado para crear el programa fuente xBase permitiendo la ejecución de un formulario de carga de datos que incluye toda la funcionalidad necesaria para: Incluir o Modificar un registro de una tabla SQL. Validar. FICHEROS APLICACIONES O MODULO DEL SISTEMA Permite modificar y eliminar los módulos existentes. RADIO. enlaces. Cancelar. Etc. Los efectos se verán en “Aplicaciones”. en caso de no ser lograda la conectividad el sistema ejecutara dos comandos “instalación de servicio e iniciación del servicio” que se encuentran en el fichero “mysql\mysqlstart.Programación Luego de instalado el sistema. TABLA DE DATOS El usuario selecciona la tabla de datos y por cada campo debe indicar el tipo de control “GET. así como también crea nuevos módulos al sistema. muestra los controles creados por DPxbase para campos vinculados con tablas referenciadas. para los formularios crea un programa fuente escrito en formato PRG bajo las clases "classes" de Fivewin para el manejo de controles. En cada campo. sugiere la sintaxis necesaria. DPxbase. será sugerido el control BMPGET con toda la sintaxis que permita al usuario acceder a la tabla referenciada y relacionar ambos valores. cada control esta definido y asociado al formulario contenedor y las coordenadas se expresan en Manual del Usuario Capítulo VI. El objetivo de DPxbase. el control requerido y las validaciones necesarias. si un campo esta referenciado con otra tabla. La siguiente imagen. buscar y regresar con el campo deseado.Programación posible vincular a una o varias tablas con las propiedades de acceder. se puede personalizar el mensaje interactivo. en ningún momento el programador ha necesitado escribir una sola línea del código. sugiere sintaxis para cada control. es reducir considerablemente el tiempo de desarrollo de aplicaciones. DPxbase. y el segundo seleccionó el control “COMBOBOX”. también brindar flexibilidad para acceder y adaptar los componentes creados. para los primeros casos el programador seleccionó BMPGET. Pag: 23 . 1. AccessField("DPINV". oINV:nOption!=0). oINV_IVA: Representa al control “ComboBox” y para su nombre se utiliza el mismo campo del código con el prefijo “o” que lo asocia con “Objeto”. . La siguiente imagen muestra un formulario definitivo compuesto por encabezado y Cuerpo “Renglones” y en ningún momento fue necesario escribir una línea de código. VAR oINV:INV_IVA. FONT oFontG Cada valor está representado por: oINV: Representa al Objeto de la clase TDPEDIT o formulario contenedor. estas posiciones pueden ser reubicadas en tiempo de ejecución."INV_IVA".AND."INV_IVA". sólo fue necesario reubicar los controles. Manual del Usuario Capítulo VI.0 COMBOBOX oINV:oINV_IVA. además. WHEN. AccessField("DPINV". el usuario puede seleccionar de manera ordenada los campos de las tablas con sus respectivos títulos que conformaran la lista de navegación de cursores de una o varias tablas SQL. GENERADOR DE BROWSES O LISTAS Luego de Crear las tablas de Datos. Pag: 24 . La sintaxis generada para el control “Combobox” es la siguiente @ 6. DPxbase genera lista de navegación utilizando la clase xBrowse.oIVA:nOption) Esta función asocia el acceso de la tabla y campos con el mecanismo de seguridad definible por el usuario donde puede restringir el acceso a los campos de una tabla. eliminar. incluye botones sugeridos para: Incluir.1. el formulario dispone de esta opción.oIVA:nOption). ITEMS aItems1.Programación líneas y columnas. imprimir y navegar. consultar. Para mayor comodidad el formulario asume como variables todos los campos y valores de la tabla de datos. modificar. VAR oINV:INV_IVA: Representa a la variable Virtual del formulario creada automáticamente desde los campos de la tabla de datos. “Opciones de los campos”. Pag: 25 ."CAMPO"). eliminar y funciones de navegación. Consultar. como por ejemplo: Agregar nuevos botones. También contribuye en la generación del código fuente para los formularios y reportes. en la barra de botones se encuentra. modificar.Programación Al presionar la tecla “Ejecutar”. facilitando emplear las nuevas opciones que pueden ser agregadas para el campo. OPCIONES PARA LOS CAMPOS Forma parte del diccionario de datos y tiene como finalidad definir las diferentes opciones seleccionables a través del control “COMBOBOX” para asignar el valor de un campo durante la carga de datos desde formularios o emisiones de reportes. acceda al formulario de tablas. con todas las opciones disponibles para: Incluir. Para asignar nuevas opciones para el campo. todas las instrucciones están grabadas en un archivo de formato plano que permite ampliar sus alcances. Este nuevo Browse. el sistema detecta los campos que poseen opciones y construyen la sintaxis para el control COMBOBOX suministrando el contenido de opciones. Para emplear de manera dinámica se incluye en el código fuente la función: GETOPTIONS("TABLA". despliega el Browse definitivo en ventana MDI. Presenta de la tabla que está focalizada una nueva ventana contentiva de todos los campos que pueden aceptar Manual del Usuario Capítulo VI. puede ser modificado en tiempo de ejecución. si posee un dígito. debe ampliar la longitud del campo. Pag: 26 . Ejemplo: La opción “Carácter” al ser seleccionada. contiene las diversas opciones ya registradas y a través de: Incluir. Focalice con el mouse el campo deseado y haga dos clic o presione el botón “modificar”. será asumido el primer carácter de la opción. Es importante tomar en cuenta la longitud del campo. debido al espacio físico que soporta. solo podrá almacenar el primer carácter “C”. nuevamente se presentará una ventana de dialogo que permite: agregar.Programación opciones. es posible actualizar cada línea de la lista. indica el nombre de la tabla y nombre del campo. Modificar y Eliminar. En caso que requiera más opciones y dos o más de ellas coinciden en el primer carácter. Esta ventana para el mantenimiento de opciones. serán guardados los primeros tres valores de la opción especificada para el almacenamiento físico en la tabla Consideraciones: Manual del Usuario Capítulo VI. modificar o eliminar cada descripción que conforma las opciones del campo. Si la longitud del campo es de 3 dígitos. así como también crea nuevos menú para los módulos del sistema. es decir delante de que y después de que. el Browse se llamará DPMENU. logrando así que el usuario pueda indicar nombres específicos en cualquier tabla y directamente a las opciones de: Menú.-Donde se coloca esa instrucción. Pag: 27 . logrando así ubicar cualquier componente para adaptarlo. reporte. Procesos y Otros”.LBX.”CAM_TYPE”. Además. el título del formulario de productos adoptará el nombre de “Menú de Acceso”. el Reporte será: DPMENU.SCR. Para utilizar los valores de las opciones en las columnas de los reportes puede emplear la función SayOptions() como expresión de la columna. Los efectos se verán en “Ficheros. facilita personalizar el nombre de las tablas y formularios en tiempo de ejecución. es en el generador de informes? MENÚ DE ACCESO Permite modificar y eliminar los menús de los módulos existentes. el Programa DpXbase para el formulario se llamará DPMENU. Informes. igualmente el campo “Singular” es utilizado para indicar el nombre de la tabla dentro de un tercer formulario que esté enlazado con la tabla. formulario está directamente asociado a las tablas.REP. tiene un concepto de trabajo sistematizado donde el nombre de cada programa. Formularios y Reportes. 2.-En que pantalla.Programación Los controles combobox mostrarán las opciones en el mismo orden como se registren. Manual del Usuario Capítulo VI. ejemplo: Si la descripción de la tabla Menú de Acceso “DPMENU” es “Menú de Acceso”.oCursor:CAM_TYPE) Preguntas: 1. DPxbase. Ejemplo: SayOptions(“DPTABLAS”. Transacciones. La sintaxis necesaria para asociar el nombre de las tablas dentro del menú de acceso debe ser: {oDp:DPMENU} en el campo “Título del Menú” después de hacer clic en el icono herramientas del sistema y {oDp:DPMENU} <Aplicaciones> “Menú de Acceso” de la barra de luego en el botón “Incluir”. si la tabla se llama DPMENU. WHILE. PROGRAMAS FUENTES DPXBASE DPxbase. son definibles por el usuario. las opciones: Macros y Barra de tareas también son definibles de la misma manera. logrando personalizar las mismas opciones según el tipo de empresa o país. ELSE.ENDCASE. genera y reconoce código de léxico xBase basado en xHarbour y comandos para FiveWin. dentro de cada modulo están los menú: Ficheros.BAK”. DOCASE. ENDDO. permitiendo adaptar las opciones de manera directa escrita “La opción” o a través del nombre de uso de una tabla. Informes. Otras de las ventajas en la definición del menú es colocar el nombre de la tabla asociada como titulo de la opción en el menú. procesos y Otros asociados exclusivamente a cada aplicación. es decir. Los programas fuentes son almacenados en la tabla DPPROGRA y por razones de seguridad se guarda una copia en la carpeta \SCRIPT\ y cada programa es almacenado en formato plano con extensión “. Transacciones. y esta esquematizado por módulo. también podemos decir que una aplicación en un módulo y un sistema está compuesto por módulos. Manual del Usuario Capítulo VI. Este lenguaje es compilado e interpretado en tiempo de ejecución permitiéndole al usuario agregar o modificar programas sin necesidad de rehacer el programa ejecutable final.SCR” y la versión anterior es almacenada con extensión “. DpXbase acepta: IF. solo difieren que esta opciones son generales para todas las aplicaciones. y todos los comandos Clipper/xHarbour/FiveWin. en Colombia se llama “Nota de Despacho” y en España se denomina “Albarán”. este nombre puede figurar en el titulo de la opción del menú cuando se ejecuta.Programación DEFINICIÓN DEL MENÚ Todas las opciones del menú principal del sistema. Pag: 28 . Como por ejemplo en Venezuela denominamos “Nota de Entrega” a un documento que indica los productos que se le entregan al cliente antes de facturar. ENDIF. si la tabla de productos esta definida como “Productos del Inventario”. Crear un nuevo Programa F2 Para Grabar F5 Compilar y Ejecutar El Proceso de compilado genera un nuevo archivo con extensión .Programación El sistema provee un editor de texto de estilo “RTF” (Richt Text Format) que permite realizar la edición y/o escritura de programas DpXbase.”DXB” en la carpeta DPXBASE y este contiene las instrucciones y classes traducidas en léxico de ejecución DpXbase lista para ser ejecutado mediante la función EJECUTAR(“PROGRAMA”. Pag: 29 . Manual del Usuario Capítulo VI.uPar1..uPar2.uPar2..uPar20) . CH #define CLR_YELLOW 65535 #define CLR_WHITE 16777215 // RGB( 255. Si desea utiliza FUNCTION para todos los casos puede cerrar con RETURN NIL. 255. La diferencia entre FUNCTION Y PROCEDURE solo está en RETURN que para el caso de PROCEDURE devuelve un valor nulo (NIL). 255 ) 2. 4. los valores locales son utilizables dentro de la función donde fueron declarados y los valores PRIVATES son utilizados en las demás funciones que son invocadas desde la Manual del Usuario Capítulo VI. Debe finalizar la función con el comando RETURN cuando es declarado con PROCEDURE y el comando RETURN <uValor> debe ser utilizado cuando se define MAIN como una función mediante FUNCTION.Programación Todos los programas DpXbase deben cumplir con las siguientes reglas: 1. Declaración de Variables: Solo aceptan dos modos de Declaración: LOCAL y PRIVATE. Debe declarar el primer procedimiento o función de la siguiente forma: #INCLUDE “DPXBASE.CLR_YELLOW) . Debe Declarar el archivo de Cabecera #INCLUDE “DPXBASE” que se encuentra en la carpeta “INCLUDE” y contiene todas las traducciones de comandos hacia funciones y/o clases .CH” FUNCTION MAIN() RETURN NIL 3. 0 ) // RGB( 255. 255.CH” PROCEDURE MAIN() RETURN O También #INCLUDE “DPXBASE.CH” . que muchas veces nos referimos mediante la siguiente expresión: oControl:SETCOLOR(CLR_WHITE. además hace referencias con otros archivos de cabecera que contienen los valores predefinidos como por ejemplo: Colores definidos en “INCLUDE\COLORS. Pag: 30 . CLR_WHITE y CLR_YELLOW están definidos en COLORS. No declare variables con PUBLIC ya que puede usar memoria innecesaria. DPxbase ofrece a la aplicación final un conjunto de herramientas útiles para la operatividad del sistema.nPor) LOCAL nResp NResp:=nValor*nPor MsgAlert(STR(nResp)) RETURN nResp BOTONES DE LA BARRA DEL MENÚ PRINCIPAL Al igual que el menú principal.20) RETURN FUNCTION MULTIPLICAR(nValor.nNum:=100. PERSONALIZAR MENSAJES EN LA BARRA DE BOTONES Manual del Usuario Capítulo VI. DpXbase provee el Objeto oDp que reemplaza el uso de PUBLIC y administra mejor el consumo de memoria. Se pueden indicar las tablas más utilizadas para una aplicación específica o para todas las aplicaciones. auditoria de actividades de usuario. Menú de Acceso. acción que ejecutará. Ejemplo para la declaración de Variables: PROCE MAIN() LOCAL cChar:=Space(40). restricciones para campos.nNum:=100.dFecha:=CTOD(“”) MsgAlert(Len(cChar)) // Muestra 40 RETURN 5. accesos para transacciones con Tabla. Ejemplo: PROCE MAIN() LOCAL cChar:=Space(40). Declaración de Funciones. Pag: 31 . puede declarar funciones mediante la sentencia FUNCTION y declarar parámetros que reciben valores y devolver un resultado. aplicación asociada y condición de ejecución. tales como: Usuarios.Programación función de su declaración. los botones son definidos por el usuario logrando indicar: Archivo Bitmap.dFecha:=CTOD(“”) Multiplicar(nNum. la consulta es posible exportarla hacia formato DBF con la finalidad de ser utilizada en diseños de reportes a través de Crystal Report. tamaño. También genera código xBase para la clase TREPORT facilitando imprimir la consulta SQL diseñada. periodo contable o cualquier otra información que se desee indicar. adicionalmente ejecuta “DPBARMSG” para mostrar los nuevos mensajes para la aplicación solicitada. tales como: Coordenadas. además. ENLACE ENTRE TABLAS Como su nombre lo indica. OTRAS FUNCIONES GENERADOR DE INFORMES DPxbase ofrece un asistente que permite crear consultas de tipo SQL con facilidad y en pocos minutos.Programación El programa “DPBARMSG”. Pag: 32 . color fondo. cargo. color texto y mensaje pueden ser personalizados en este programa. etc. fuente de letra. fecha del sistema. ausencia. DISEÑO DE FORMULARIOS Manual del Usuario Capítulo VI. unidad funcional. crea un objeto de tipo “TSAY” que presenta un recuadro en la barra de botones con la finalidad de indicar textos que puedan ayudar al usuario a identificar actividades como: Aplicación que se ejecuta. quedando totalmente a criterio del usuario su utilización. permite hacer el enlace entre las tablas por medio de un campo común entre ambas tablas. Para mayor comodidad el programa “BOTBARCHANGE” que se ejecuta en cada cambio de aplicación elimina de la barra de botones todo su contenido para que luego el sistema coloque nuevamente los botones que cumplan con las condiciones de la aplicación. para ello se utiliza el campo código del trabajador. Por ejemplo la tabla del trabajador “nmtrabajador” hay que enlazarla con la tabla de departamento. Todos los parámetros del Objeto.. ampliar o reducir su tamaño y para mayor comodidad DPxbase ofrece alternativas para agilizar el diseño. Luego de activar el modo diseño. En la parte superior de la ventana o comúnmente denominado “SysMenú”. es posible focalizar cualquier control a través del mouse. moverlo en cualquier posición. Columna. Manual del Usuario Capítulo VI. esta labor puede ser efectuada por el programador o usuario final. Ancho. modificar en tiempo de ejecución todos los controles del formulario utilizando el Mouse.Programación Partiendo del programa Fuente “xBase” creado por DPxbase. el formulario dispone de varias opciones que permiten activar el modo diseño del formulario. el usuario puede diseñar. Alto. permitiendo personalizarlo en tiempo de ejecución. Pag: 33 . para cada uno puede configurar: Línea. colores y fuentes de letra a cada control en tiempo de ejecución sin necesidad de utilizar recursos creados en otras aplicaciones. ilustrar el uso de la opción: “Color” seleccionado para el control focalizado. La siguiente imagen. se puede seleccionar el color del fondo. Pag: 34 . es decir. muestra la posibilidad de cambiar el color del texto del control y también la fuente de las letras.Programación La siguiente imagen. Manual del Usuario Capítulo VI. Programación DPxbase integra bajo un solo concepto: La tabla de datos. Pag: 35 . DPxbase mantiene con continuo desarrollo la búsqueda de la madurez de todas sus herramientas con el objetivo de darle valor agregado a los componentes de desarrollo y a los productos finales creados para el Cliente. Manual del Usuario Capítulo VI. Ahora es DPxbase para 32 bits y base de datos de tipo SQL. en parte gracias a la comodidad y facilidad de complacer los requerimientos del usuario. DPxbase hereda toda la experiencia de DpXbase creado para Datapro durante 15 años bajo el popular y exitoso compilador "Clipper" que logró posicionarse en el mercado con miles de instalaciones satisfactorias. formulario para la carga de datos y Reportes bajo un conjunto de elementos identificados y asociados con la tabla de datos. generando productos finales en corto tiempo y bajo el concepto de arquitectura abierta facilitándole al integrador o usuario final adaptarlo a su criterio. programas fuentes “DpXbase”. DPxbase ha sido creado exclusivamente para crear aplicaciones de tipo comercial y orientado al léxico xBase. el Navegador “Browse”. COMPONENTE DATASET Es un gestor de datos controlado a través de una clase de objetos que interactúa con una tabla de datos y tiene como finalidad manipular cualquier tipo de datos compatible con el léxico xBase. el usuario solo debe indicar el nombre de la tabla de Datos DBF y DPxbase se encarga de definirla en el diccionario de Datos y construir su estructura. Pag: 36 . La opción Incluir Tablas. El componente DataSet ha sido incorporado en el sistema con el objetivo del almacenar múltiples tipos de datos seleccionados sin que sea necesario emplear tablas específicas para su almacenamiento. Las tablas de datos en las versiones anteriores se identificaban a través de “ALIAS” ejemplo: “alias->campo”. siempre y cuando no requieran interactuar con una interfaz de video o de impresión. Parte de los programas escritos en DpXbase para DPxbase han sido obtenidos de versiones anteriores con muy pocos cambios.Programación CONTINUIDAD EN DATAPRO PARA TABLAS DBF Todas las tablas de datos en formato DBF. cada reporte conforma una sección Manual del Usuario Capítulo VI. donde se aprovecha la madurez del código ya escrito. dispone de la opción “Importar desde DBF”. ahora en DPxbase será apuntando a un cursor. son totalmente portables en estructura y contenido hacia el nuevo formato de datos utilizado por DPxbase (Motor SQL). los tipos de datos son 100% compatibles. ejemplo “oCursor: Campo”.. el leguaje Xbase incorporado soporta en gran parte los procedimientos desde las versión DOS. El generador de reportes es una aplicación del sistema que emplea altamente el componente Dataset para almacenar valores como: Parámetros. CONTINUIDAD EN EL LÉXICO XBASE DESDE LOS PRODUCTOS DOS Aunque DPxbase esta compilado con C++. Además DPxbase provee un proceso de Migración de Registros desde las tablas DBF utilizadas por productos anteriores. Rango y Criterio. lo almacena y también lo restaura cuando se encuentra guardado en la tabla. Cuando el usuario desde la ventana de ejecución de un determinado reporte indica “Fijar Parámetros del reporte”. Por ello es muy Manual del Usuario Capítulo VI. debe ser realizado de la siguiente forma: PROCE MAIN() Local oData oData:=DataCnf(“MISECCION”) MsgAlert(oData:cValor) oData:End() RETURN NIL Puede observar que en ambos casos. El método “End()” almacena de manera automática los nuevos valores o los valores existentes que sufran algún cambio. El sistema dispone de dos DataSet. “DPDATACNF” es utilizada para todo lo referido a la configuración general del sistema y y “DPDATASET” almacena valores de manera independiente en cada empresa definida a través de un “DSN”.Programación del Dataset. Para los parámetros del generador de informes (Fijar: Rango y Criterio) es empleado “DPDATACNF”. Para almacenar datos en el DataSet de configuración se emplea de la siguiente forma: PROCE MAIN() LOCAL oData oData:=DataCnf(“MISECCION”) oData:cValor:=”Prueba” oData:End() RETURN NIL Para leer los datos del DataSet. Pag: 37 . con el fin de retomarlos en futuras y suponiendo que esos parámetros sean comúnmente utilizados. se emplea un valor virtual “oData:cValor” de la clase TDataSet y de manera automática detecta la asignación de un nuevo valor. cada uno almacena los valores en tablas distintas. está empleando el Dataset para almacenar todos los valores utilizados en esa ejecución del reporte. debido a que todos los reportes pueden ser empleados en cualquier DSN y la configuración de cada empresa se almacena en “DPDATASET”. a continuación detallamos sus métodos.oDlg oData:=DataSet(“DATEMPRESA”) oData:cDir:=oData:Get(“DIR”.1 GET oData:cTel @ 3. Para emplear el DataSet en la configuración de cada empresa es necesario utilizar el siguiente ejemplo escrito en DpXbase: PROCE MAIN() Local oData.  Get(cVarName.1 GET oData:cDir @ 2. ambas devuelven el objeto de la clase TDataSet.SPACE(20)) oData:cTel:=oData:Get(“TEL”.1 GET oData:cRep ACTIVATE DIALOG oDlg oData:End() RETURN // EOF CLASE TDATASET: Se encarga de gestionar. se genera desde las funciones DataCnf() y DataSet().SPACE(12)) oData:cRep:=oData:Get(“REP”. Pag: 38 Manual del Usuario . grabar todo lo referente al DataSet. También puede ser empleado de manera directa: oDataSet:cVarName  IsDef(cVarName): Capítulo VI.SPACE(40)) DEFINE DIALOG oDlg TITLE “CONFIGURAR” @ 1.uValue): Obtiene el valor referido de “cVarName” en caso de no existir el auto creado con el valor indicado en “uValue”.Programación práctico emplear este componente en el almacenamiento de datos. leer. Cabe destacar que en cada PC es posible generar diferentes configuraciones. estos son: “ALL”: Almacena y recupera los datos para todos los usuarios y “PC” que accedan al sistema.  Carga todos los valores desde la tabla y generan los valores virtuales del Dataset DataSet dispone tres modalidades para el almacenamiento y recuperación de datos. el nombre del PC es obtenido del Sistema Operativo.uValue): Asigna el valor “uValue” para “cVarname”. cada usuario puede disponer de configuraciones distintas. “USER”: Almacena y recupera los datos sólo para el usuario que solicita. Se denominan valores virtuales aquellos “ClassData” o variables que no están definidas en la clase.  Set(cVarname. Pag: 39 . Para el sistema de Nómina DpNmWin. ejemplo: Elimina un valor del DataSet oDataSet:Del(cVarName)  DelGroup(cGroupName): Load(): Elimina todos los componentes asociados a un grupo. es decir. sino que se generan de manera dinámica bien sea por asignación directa “oDataSet:nValue:=10000” o a través de la lectura de la tabla donde se almacenan los valores del Dataset.Programación Devuelve . si el valor de “cVarName” existe.  Del(): y de la tabla. el DataSet ha sido altamente empleado en el almacenamiento los tipos de nómina Manual del Usuario Capítulo VI. o .F.T. también puede ser utilizado como: oDataSet:cVarname:=uValue  Save(): Almacena en la tabla todos los valores del DataSet. “PC”: Almacena y recupera los datos sólo para el PC que lo solicita. Ejemplo cNomre:=”Datapro” cWhere:=”WHERE CAMPO”+GetWhere(“=”. FUNCIONES PARA SENTENCIAS SQL GetWhere(cOperador.2)+[‘] Cómodamente “ WHERE FECHA”+GetWhere(“=”.dFecha) La sentencia resulta así: WHERE FECHA=’20041231’ Tradicionalmente la condición WHERE empleando fechas debe construirse así: WHERE FECHA=[’] +STRZERO(YEAR(dFecha).dFecha) lo simplifica. Manual del Usuario Capítulo VI.Programación que se procesan con la finalidad de poder rescatar los tipos de nómina en las siguientes ejecuciones. puede ser usada cómodamente sin tomar en cuenta las reglas para las fechas y la complejidad de construirla: Ejemplo: dFecha:=DATE() cWhere:=”WHERE FECHA”+GetWhere(“=”. Pag: 40 .2) +STRZERO(DAY(dFecha).uValor) Construye una condición para la sentencia WHERE o SET para armar un comando SQL.cNombre) Queda construida de la siguiente forma: WHERE CAMPO=’Datapro’ Recuerde utilizar comillas [‘] o Chr(39) simples para indicar cadenas dentro de un comando SQL.4)+STRZERO(MONTH(dFecha). Igualmente esta función esta vinculada con la configuración de fechas empleadas por el motor de la base de datos. TAB_TABLE”+. si carga los datos. “ FROM DPTABLAS ”+. “ ORDER BY TAB_NUMERO”.) oCursor:Gotop() WHILE !oCursor:Eof() ? oCursor:TAB_NUMERO.oCursor:TAB_TABLE oCursor:DbSkip() ENDDO oCursor:End() Puede observar que la consulta puede ser manejada de manera similar a una tabla DBF abierta a través de funciones del RDD o mejor dicho abierta con: USE TABLA. Ejemplo: oCursor:=OpenTable(“SELECT TAB_NUMERO. <cSql> Debe contener una sentencia de léxico SQL <lData> Indica con . Pag: 41 . aSql Contiene la Manual del Usuario Capítulo VI. Ejemplo: aSql:=ASQL(“SELECT CAMPO FROM XTABLA”).. el acceso a los datos de una o varias tablas se solicita utilizando sentencias que retornan un cursor de datos en un plano bidimensional compuesto por líneas y columnas: Las líneas representan los registros y las columnas representan los campos. Por defecto su valor es .LDATA) Solicita un cursor de datos SQL.Programación FUNCIONES PARA EL MANEJO DE DATOS Todo el manejo de datos en Datapro se realiza a través de comandos SQL.t. ASQL(CSQL) Devuelve en tipo de datos Arreglo bidimensional el contenido del cursor generador por la consulta SQL. OPENTABLE(CSQL. Para mayor información consulte la clase TTABLE de este manual.T.T. SQLDELETE(CTABLA.CCAMPO.Programación lista de datos. Ejemplo: SqlUpdate(“NMTRABAJADOR”.”TIPO_NOM=’S’”) Cambia el tipo de Nómina para Quincenal de todos los trabajadores de nómina Semanal.CCAMPO.oCursor oCursor:=OpenTable(“ SELEC DOC_NETO.”Q”. {||oCursor:DOC_FECHA=oDp:dFecha}..NOMBRE)”. MsgAlert(aSql[1. Manual del Usuario Capítulo VI.XVALOR. #DPXBASE.”CONCAT(APELLIDO. SqlGet().1]). {||nTotal:=nTotal+oCursor:DOC_NETO.”CO DIGO=’00001’”).bRun) Ejecuta en forma cíclica según el proceso indicado en <bRun> si se cumple la condición de <bFor> hasta que se cumpla <bWhile>.CWHERE) Permite Actualizar el valor de un campo de la cantidad de registros indicados en la cláusula cWhere. Obtiene el nombre y apellido del Trabajador. SQLGET(CTABLA.. Para evaluar la respuesta puede utilizar: ViewArray(aSql) DO(bWhile.bFor.DOC_FECHA FROM DPDOCCLI”.) DO({||!oCursor:Eof()}. muestra la primera columna y columna.. Pag: 42 .”TIP_NOM”..oTablas:skip(1)}) Totaliza el Monto neto según los documentos emitidos según la fecha del sistema.T.CWHERE) Borra de la tabla <CTABLA> la cantidad de registros indicados en <CWHERE> SQLUPDATE(CTABLA.”. puede fácilmente reemplazar el uso de las funciones DBLocate() y DbSeek() utilizadas en las tablas DBF según RDD.”. SQLGET(“NMTRABAJADOR”.CWHERE) Obtiene el valor de un campo desde una tabla según la condición indicada en Where . Where puede incluir la clausula JOIN.CH FUNCTION MAIN() LOCAL nTotal:=0. generan expresiones de tipo carácter el cual requiere ser convertida en forma de fecha real.<WHERE>) // 2005-0502 bData:=SQLTODATE(cFecha) // 02/05/2005 <cTable> Nombre de la tabla <aFields> Lista de campos.”CAMPO”.Programación DTOSQL(DFECHA) Convierte el formato de fecha xBase en formato de fecha para el Motor SQL. [UPDATE FROM TABLA BCAMPO=’]+DTOSQL(<bFecha>)+[‘] Queda Así: UPDATE FROM TABLA BAMPO=’2005-04-02’ SQLTODATE(CFECHA) Convierte las fechas SQL en fecha xBase.CWHERE) Genera un cursor de datos según: <cTable> Nombre de la tabla <aFields> Lista de campos. según el formato definido en “oDp:cSqlDate” previamente definido en ODBC. puede ser un arreglo un una lista de campos entre comillas BDLIST(CTABLE.T. puede ser un arreglo un una lista de campos entre comillas separas con coma. <cWhere> Valor opcional.f. bDate:=SQLGETMAX(“DATABLA”. puede conformar la cláusula WHERE de la consulta y permite filtrar las líneas de la consulta. según el formato definido en “oDp:cSqlDate” previamente configurado en ODBC. ejemplo: “Campo1. Pag: 43 . Algunas funciones MAX o MIX de SQL aplicadas sobre campos de tipo de fecha.AFIELDS.Campo3” <lGroup> si es verdadero .INI [SQLDATE]. Manual del Usuario Capítulo VI.LGROUP.Campo2. Su valor por defecto es . genera el cursor empleando GROUP BY en todos los campos.INI [SQLDATE]. Ejemplo: uValue:=BDLIST(“NMTRABAJADOR”.”003”.”004” Si desea convertirlo en arreglo puede emplear: aList:=MacroEje(“{“+cValue+”}”) Tambien. Pag: 44 .CWHERE)) Genera un cursor de datos según: <cTable> Nombre de la tabla <aFields> Lista de campos. puede conformar la cláusula WHERE de la consulta y permite filtrar las líneas de la consulta.APELLIDO. marcar los registros necesarios. Presenta la consulta “Cursor” a través del editor de registros.SALARIO”) BDSELECT(CTABLE.LGROUP.T.SALARIO”) Si el usuario seleccionó cuatro trabajadores.”002”. genera el cursor empleando GROUP BY en todos los campos. <cWhere> Valor opcional.Programación Presenta la consulta a través de un editor de registros que permite seleccionar cualquier registro devolviendo el valor de la primera fila. Tiene alta utilización en las casillas de rango y criterio en la ejecución de un reporte. con la finalidad de realizar selección múltiple de registros. puede ser un arreglo un una lista de campos entre comillas separas con coma.Campo2. Su valor por defecto es .f. el valor de cValue será: “001”.APELLIDO.AFIELDS. al finalizar devuelve una cadena con todos los valores seleccionados y representados por la primera columna.”CODIGO. recomendada: aList:=_Vector(cValue) Manual del Usuario Capítulo VI. permitiendo importar los valores de un campo hacia las casillas. ejemplo: “Campo1. es decir.NOMB RE. cValue:=BDSELECT(“NMTRABAJADOR”.NOMBRE .Campo3” <lGroup> si es verdadero .”CODIGO. cTabla2.uValue) Busca y devuelve la opción encontrada según el valor de <uValue> según la lista de opciones registradas en campo <cField> de la tabla <cTabla>. Ejemplo: cOpcion:=SAYOPTIONS(“DPTABLAS”.”C”) El valor de <cOpcion> es “Carácter”.cField."CAMPO") Devuelve en un arreglo todas las opciones registradas para un campo de determinada tabla.”CAM_TYPE”) Devuelve una lista o arreglo con los siguientes valores: “Numerico”. En caso de no encontrar la opción buscada. Pag: 45 . Ejemplo: MsgAlert( SQLINCREMENTAL(“DPCLIENTES”. devolvera valor vacio. Ejemplo: aOpcion:=GETOPTIONS(“DPTABLAS”.”CLI_CODIGO”) ) VIEWARRAY(aArray) Manual del Usuario Capítulo VI.”DPCAMPOS”) Devuelve: INNER JOIN DPCAMPOS ON TAB_NUMERO=CAM_NUMTAB SQLINCREMENTAL(cTable.cWhere) Obtiene el máximo valor del campo <cField> de la tabla <cTable> y e incrementa en 1. ”Logica” y ”Memo”.cInner) Busca en el diccionario de Datos la relación existente entre dos tablas y construye la cláusula INNER JOIN de la sentencia SQL necesarias para el enlace entre las tablas solicitadas. Ejemplo: INNERJOIN(“DPTABLAS”. SAYOPTIONS(cTable. ”Date (Fecha)”. INNERJOIN(cTabla1. determinando el valor siguiente.”CAM_TYPE”. ”Carácter”.Programación GETOPTIONS("TABLA".cField. OBJETOS Clase TTable Clase DpLbxRun Clase DpEdit Clase TDocEnc Clase TDocGrid Clase TGridCol Formularios de Documentos compuestos por Encabezado y Cuerpo. como por ejemplo: Renglones de la factura. Asientos Contables.cForm. DOCENC(cTitle. entre otros. También la tabla del encabezado y la tabla del cuerpo se relacionan con otras tablas.Ejemplo Manual del Usuario Capítulo VI.Programación Muestra en una ventana MDI el contenido de un arreglo multidimensional.T.cFileEdt) Parámetros: cTitle Título del formulario. Para iniciar el formulario. realiza Where en la sentencia SQL. empleamos la función DOCENC que devuelve el objeto definido en la clase tDOCENC.T. oDp:lViewArrayMdi:=.f. la primera se encarga del encabezado como por ejemplo: Factura. que Incluya las opciones de navegación mediante la barra de botones. Muestra en Ventana MDI oDp:lViewArrayMdi:=. ejemplo: Para la factura se relaciona con Clientes y los renglones se vinculan con productos. Comprobantes contables y la segunda tabla se refiere a los renglones o cuerpo que conforman el documento. puede ser “Titulo” cForm Nombre del objeto para el formulario. ejemplo: “oForm” cFileEdt Nombre del fichero donde para almacenar los parámetros de los controles. Pag: 46 . Muestra en Caja de Dialogo. cScope Indica el filtro para la tabla del encabezado. Este tipo de documentos se genera comúnmente por tablas básicas relacionadas. Valores o Data de la Clase lBar Indicar con . Objeto ttable de la Tabla de datos para el encabezado. Lista de Botones para el modo navegacion Lista de Objetos de Grids que conforman el cuerpo del documento.nLeft.nWidth. Nombre de la función que se ejecuta luego de grabar el registro. cScopeFind cPrimary cScript oScroll oSayMsgErr oTable oWnd oDlg oScript oBar aBtn aGrids aBtnEdit nOption cList cPresave cPostSave lSaved lInc lCon lMod lEli lPrn cSingular Metodos Windows(nTop.Programación DOC_CODSUC=’00001’ Indica filtro para el proceso de búsqueda mediante la cláusula WHERE de la sentencia SQL. Nombre del programa DpXbase que contiene las funciones que serán ejecutadas.nHeight Define en pixel el area del ) formulario. Ventana MDI de estilo CHILD que realiza el control del formulario. Indica si el registro ha sido grabado. Nombre de la Función que se ejecuta antes de realizar la grabación del registro. Ventana de tipo dialogo contentiva de los controles del formulario. Ejemplo: DOC_CODSUC=’00001’ AND DOC_TIPTRA=’D’ Contiene lista de campos para validar la no repetición del registro y vinculo con las tablas que conforman el cuerpo o grid. Lista de Botones para el modo edición Indica el estado de la opción: 0=Navegación 1=Incluir 2=Consultar 3=Modificar 4=Buscar 5=Eliminar Nombre del archivo para presentar en browse los datos de la tabla y hacer búsquedas. Objeto referido a la clase TXSCROLL Objeto de la Barra de Mensajes. Pag: 47 . Permiso para Incluir Permiso para Consultar Permiso para Modificar Permiso para Eliminar Permiso para Imprimir Nombre singular para el registro. Manual del Usuario Capítulo VI. Objeto script que ejecutar las funciones en DpXbase Control TBAR que contiene los botones con las opciones del formulario. cWhereRe Asignar tabla con el cord) formulario.Programación Activate(bInit. cLinkGrid: Campos de la tabla hija que se enlazan con los campos de la tabla del encabezado. condición y valor inicial BuildIncremental(lSave) Genera valor incremental según los valores establecidos en SetIncremental() Printer() Ejecuta la función de impresión definida en la función PRINTER del script. cWhereRecord=Filtro o registros visibles. SetTable(cTable. cLinkGrid . Pag: 48 . no se graba. bInit es bloque de código de ejecución final y bEnd se refiere a la condición de salida. SetScope(cScope) Cambia el filtro de la tabla encabezado.bEnd) Activa la ventana del formulario.cWhere.F. cLinkdHead . Ejecuta la función PRESAVE declarada en cPresave antes de grabar el registro. cLinkHead= Campos del encabezado que enlaza la tabla hija. Campo. cTable=Nombre de la tabla cPrimary=Campo Unico. Manual del Usuario Capítulo VI. SetIncremental(cField. Crear objeto Grid. Si devuelve . PreDelete() Ejecuta proceso previo para borrar registro. Si devuelve .cPrimary.F. GridEdit(cTable . cSql ) cTable= Tabla asociada o tabla hija. no se ejecuta borrar. Presa Get(cVarName) ve() Valida el proceso de grabar.cNum Establece los datos que ero) generan campos incrementales. Asigna valor a una variable o Data del encabezado.nLeft.cTitle. Agrega un Nuevo botón en la barra de botones para la navegación del formulario.c Find) AddBtnEdit(cFile. cAction=Proceso que debe ejecutar cFind = Identificación del Botón Agrega un botón cuando se active el modo de edición (Incluir o Modificar) cFile=Archivo BMP cText=Mensaje Tooltip cWhen=Condición de activación.nHeight) ListBrw(cFileBrw) Obtiene el valor de una variable o Campo.nWidth.nTop.nLeft.Programación Get(cVarName) Set(cField.cFind) SetMemo(cField.cWhen.cText.uValue) AddBtn(cFile.cWhen.nHeight .cText. cFile=Archivo BMP cText=Mensaje Tooltip cWhen=Condición de activación.n Width.cAction. Pag: 49 Manual del Usuario . cAction=Proceso que debe ejecutar cFind = Identificación del Botón Agrega el botón “Campo memo” en la barra de opción para el modo edición “Incluir o Modificar”. área visual en píxel para la caja de dialogo sobre la ventana principal oDp:oFrameDp Realiza la presentación lista de campos mediante Capítulo VI.cActi on. nTop. cField=Indica el campo que hace referencia con la tabla DPMEMO cTitle = Titulo de la ventana. dibuja las líneas y columnas. se obtiene de la data cSql enviada por GRIDEDIT Objeto de la clase xBrowse que realiza la navegación de los datos. Tipo de Botón: 0=Ninguno 1=Bmp 2=Text Indica la columna que está en edición oHead oDlg nRowSel nRecSelColor nClrPane1 nClrPane2 nClrText nClrFind nBtnWidth nBtnHeight nBtnStyle nColEdit Manual del Usuario Capítulo VI.Programación archivo *. Ancho de los botones de las opciones. CLINKDHEAD . Objeto script que realizar las ejecución de funciones DpXbase. Objeto del encabezado mediante la clase TDOCENC.brw data ::cList según GRIDEDIT(CTABLE . Color RGB para el texto de las casillas Color RGB para el texto marcado para buscar. Alto de los botones de las opciones. CSQL ) Genera el cuerpo del documento conformado por columnas. Load. CLINKGRID . Color RGB para las líneas pares. PostGrabar. Pag: 50 . oTable oBrw oScript Objeto TTabla referida a los datos del gris. Número de la línea del Gris basado en xBrowse Color RGB para la barra indicadora vertical Color RGB para las líneas impares. como por ejemplo: Pregrabar. Objeto oDlg contenedor de controles. acepta archivos de ayuda HLP y CHM.CH M GENERADORRPT. Capítulo VI.CHM Generador de Reportes. GeneradorRPT.chm” y cada tabla también está asociada a una aplicación por ello es posible asociarlas y activar la ejecución del archivo de ayuda correspondiente al editor de registros que muestra el contenido de una tabla o un formulario para la carga de datos.HLP DPXFUNCTION. contienen documentación referida a la aplicación datapro y se compone de los siguientes archivos. métodos y data. Programación [n] se refiere al número del capitulo y cada uno se refiere a cada aplicación del sistema. FIVEWIN.HLP FWCMD. CHM Conceptos de FiveWin Clases.C HM Capitulo[n]. Está compuesto por dos tipos de archivos “Tradicionales HLP” que componen la ayuda ofrecida por las librerías FiveWin y estas no forman parte de la licencia. Para facilitar los tópicos en cada capítulo su nombre debe ser asociado en cada tabla y en caso de referirse a algún proceso se identificará según la posición del menú: Ejemplo: Aplicación+Vertical+Horizontal.C HM Programación.HLP FWCMD.HLP FWFUN.Programación ARCHIVOS DE AYUDA Están ubicados en la carpeta “HELP\” de la aplicación. Cada aplicación esta asociada a un “capitulo[n]. El “Capitulo1. Pag: 51 Manual del Usuario .” Comandos Funciones de FiveWin Funciones Estándar DpXbase Generador de Reportes Datapro El segundo conjunto de archivos de extensión CHM.chm” se refiere al proceso de instalación y configuración del sistema. oDp:cDsnData : Nombre del DSN de Datos de la empresa Activa. no están definidos en la Clase sino. La asignación de valores se realiza en forma directa oDp:xValor:=”Nuevo Valor”. es decir. oDp:cDsnConfig: Nombre del DSN de Datos de la base de datos de configuración. Este novedoso modelo de datos es altamente productivo al evitar el uso excesivo de memoria para declarar variables públicas. se asigna en forma dinámica. Aquí se asignan la mayoría de valores que definen la ejecución y/o presentaciones del sistema. DpXbase provee el objeto <oDp> desde que arranca el sistema y contiene toda la información referida a la configuración del sistema. los valores de <oDp> son Virtuales. por ejemplo: oDp:cEmpresa: Nombre de la Empresa. oDp:cUsuario: Código del usuario que accede al sistema. Ejemplo: oDp:cMiDato:=”Cualquier Dato” MsgAlert(oDp:MiDato) Mostrará la ventana de dialogo Alert indicando “Cualquier Dato”) El programa DPINI es la primera ejecución DpXbase que se realiza al iniciar Datapro. Como por ejemplo el tamaño de los botones Manual del Usuario Capítulo VI.Programación CLASES PROPIETARIAS DATAPRO Conforman un conjunto de clases que generan objetos para funciones específicas para Datapro. Pag: 52 . oDp:dFecha: Fecha del Sistema. TPUBLIC Esta clase genera un objeto en público que está disponible en todo el sistema y tiene como finalidad almacenar todos los valores que el sistema necesita para su funcionamiento técnico y conceptual. Obtiene el Valor de un DATA del Objeto. Si no existe es agregada automáticamente. ADD(cVarname. Ttabla hereda todos los campos de la estructura en forma dinámica permitiendo navegar en cada registro y conocer el contenido de cada campo.uValue). TTABLE Es una clase propietaria de DpXbase que accede a consultas SQL empleando la función OpenTable(cSql. Ttable es utilizada en toda la aplicación para acceder a las consultas de la Base de Datos necesarias en los Browser. según la identificación solicitada en <cVarName>. también puede ser: oDp:cEmpresa:=”Nuevo Valor” SET(cVarName.”Nuevo Valor”). Pag: 53 .) MsgAlert(oTable:CAMPO) // Muestra el contenido del CAMPO oTable:End() También puede manejar campos virtuales con la finalidad de rediseñar la consulta. ejemplo: oTable:Replace(“CAMPONUEVO”. Consultas e Informes.. También puede ser oDp:cEmpresa:=”Nuevo Valor”.lRead) que devuelve un Objeto contentivo de la consulta SQL al estilo de datos RDD (xBase). Si desea conocer todos los valores del objeto oDp. ejemplo: oDp:Get(“cEmpresa”). ejemplo: oCursor:CAMPO. Genera una nueva DATA Virtual dinámicamente y asigna el valor.t. igualmente puede ser oDp:cEmpresa. si cVarName ya existe omite la solicitud.Programación Métodos: GET(cVarName). genera un nuevo campo llamado CAMPONUEVO que se derivó de la expresión: oCursor:Monto*2 Sintaxis: Ttable():New(cSql) Manual del Usuario Capítulo VI. Formularios. oTable:=OpenTable(“SELECT CAMPO FROM XTABLA”.oCursor:Monto*2) . ejecute el programa INSPET escrito en DpxBase.uValue): Asigna un valor a una Data. Ejemplo: oDp:Add(“cEmpresa”. Goto(<nRecord>) : Apunta al registro <nRecord> de la Consulta. Cada línea representa un registro y cada columna representa un Campo. GoBottom(): Posiciona el Ultimo Registro de la Consulta. RecCount(): Indica la cantidad de líneas o registros del cursor o consulta. FieldName(<nField>): Devuelve el Nombre del campo según el número o posición del campo. <nField>. Pag: 54 . Si desea visualizar su contenido puede utilizar ViewArray(oCursor:aDataFill) aFields: Contiene información de la estructura de la Tabla. oOdbc: Contiene el Objeto de la conexión DSN donde pertenece la tabla. RecNo(): Indica la posición del registro del cursor. Para copiar aDataFill debe utilizar aData:=ACLONE(oTable:aDataFill). GoTop() : Posiciona el primer registro de la consulta. longitud y Decimales. puede ser el número del campo o nombre del campo. También es posible utiliza los métodos de esta clase: oCursor:oOdbc:Execute(<cSQL>) Métodos de la Clase TTABLE Eof() : Determina si la lectura a llegado al último registro de la consulta. cada línea representa y cada columna representa la estructura de los campo: Nombre. FieldGet(<nField>): Obtiene el Valor de campo según la posición del campo. tipo. Manual del Usuario Capítulo VI.Programación Datos de la Clase TTABLE aDataFill: Un es arreglo multidimensional que contiene en forma bidimensional el contenido de la consulta SQL. esta compuesta por líneas y columnas . CH" PROCE MAIN() LOCAL oTable oTable:=OpenTable(“SELECT * FROM XTABLA”. previa preparación del método Replace(). Ejemplo para agregar un nuevo registro: #INCLUDE "DPXBASE.F. navegar Append(): Prepara el cursor para realizar la sentencia INSERT INTO. Execute(<cSQL>): Ejecuta un comando SQL directamente con la conexión del Servidor de la Base de Datos.) oTable:Append() oTable:Replace(“CAMPO1”. CtoDbf(cFile): Crea una tabla en formato DBF/FPT con el contenido del Cursor. Replace(cField.DATE()) oTable:Commit() Manual del Usuario Capítulo VI. Ejemplo SELECT MAX(XCAMPO) AS CAMPO . Browse(): Muestra el Contenido de la Consulta mediante una ventana MDI.uValue): Reemplaza el valor de la columna (Campo) identificada con <cField> según el valor de <uValue>. previa preparación con los métodos append() y replace().”Valor 1”) oTable:Replace(“FECHA” .. DbSkip(<nSkip>): Permite (Ascendente/Descendente) sobre el cursor. la columna MAX(XCAMPO) será representada por CAMPO. Pag: 55 . Es necesario que las consultas que utilicen funciones.Programación FCount(): Determina la cantidad de campos utilizados por la consulta. representen los resultados a través de etiquetas. Commit(<cWhere>): Ejecuta el comando UPDATE para actualizar uno o varios registros según la cláusula WHERE. Commit(): Ejecuta el comando INSERT INTO para agregar un nuevo registro en la tabla. no obstante es posible indicar la base de datos o agregar una nueva tabla en forma directa.”MAX(XCAMPO)”) xValor:=VAL(xValor) oTable:=OpenTable(“SELECT * FROM XTABLA”.nLen) oTable:Append() oTable:Replace(“CAMPO1”.DATE()) oTable:Commit() oTable:End() RETURN El método commit() construye la real sentencia SQL para la inserción del registro de la siguiente forma: INSERT 2005’) INTO XTABLA (CAMPO1.xValor. el curso en forma vacía. Manual del Usuario Capítulo VI.xValor) oTable:Replace(“FECHA” .) nLen :=oTable:FieldLen(“XCAMPO”) xValor:=STRZERO(xValor+1. podemos usar la siguiente sintaxis: #INCLUDE "DPXBASE. Pag: 56 . por esta razón la función OpenTable(“SELECT * FROM XTABLA”..F. por tal motivo no es obligatorio indicar la Base de datos donde en encuentra la tabla.. utiliza las tablas declaradas en el diccionario de datos que contiene el DSN o Base de datos relacionada.CH" PROCE MAIN() LOCAL oTable.F.F. debido a que solo es necesaria la estructura de la tabla y como será realizado el proceso de inclusión no es necesario leer datos de la tabla.Solicitó a través de .Programación oTable:End() RETURN En este ejemplo se puede observar que el cursor <oTable> se requiere sin datos.nLen xValor:=SQLGET(“XTABLA”. Si se requiere buscar información en la misma tabla para agregar un nuevo registro como sucede en los casos de numeración de documentos.FECHA) VALUES (‘0001’.).’3005-05- TTable. F.. LOCAL oDB.DBF”) otable:End() Acceso a tablas indicando la Base de Datos.cSql.otable // Abre la Base de Datos SGE0001 (Debe Existir) oDB:=OpenOdbc(“SGE0001”) oTable:=OpenTable(“MITABLE”. Pag: 57 .Programación Agregar una nueva Tabla al diccionario de datos: ADDTABLE("0998".oDp:cDsnData.oDB) // Muestra los Datos oTable:Browse() otable:End() Manual del Usuario Capítulo VI."MITBLE". Si desea crear la tabla puede hacerlo de la siguiente manera: LOCAL oServer.) // Abre el Cursos de Datos o Tabla oTable:=OpenTable(“MITABLE”.) Adiciona la tabla “MITABLE” (que debe existir) previamente en la base de datos oDp:cDsnData (esta es la base de datos activa según la empresa seleccionada).F.cSql..otable // Abre la Base de Datos oDB:=OpenOdbc(oDp:cDsnData) // Prepara la sentencia SQL cSql:="CREATE CREATE TABLE `MITABLE` (`CAMPO` VARCHAR (10) “ // Ejecuta la Sentencia SQL en la base de Datos oDB:EXECUTE(cSql) // Agrega la Tabla al diccionario de datos ADDTABLE("0998".”DIEZ”) // Graba el Registro mediante INSERT INTO MITBLE oTable:Commit() // Exporta los datos hacia DBF oTable:CTODBF(“MITABLE..F."MITBLE".) oTable:Append() oTable:Replace(“CAMPO”..oDp:cDsnData..T. 10 RIGHT..T.CLR_YELLOW @ 2.10. El formulario acepta como métodos virtuales todas las funciones definidas con “FUNCTION” en el mismo programa DpXbase..T. OF oFrm:oDlg.CH" PROCE MAIN() LOCAL oFont DEFINE FONT oFont NAME "Arial" SIZE 0.0 SAY " Prueba de Texto ". SIZE 50. .F.edt". COLOR CLR_HBLUE.)."MITBLE". es decir a través de comandos xbase para la declaración de Controles que en tiempo de ejecución puedan ser rediseñados en forma visual."oFrm" . ) oFrm:cVarName:=SPACE(20) oFrm:nValor :=100 oFrm:dFecha :=oDp:dFecha @ 0. -12 BOLD ITALIC oFrm:=DPEDIT():New("Titulo".Programación Acceso a tablas indicando la Base de Datos sin revisar el diccionario de Datos. Pag: 58 ."Fichero. igualmente permite la asignación de Data en forma dinámica con tal solo ejecutar la declaración “oForm:nVariable:=100” Ejemplo #INCLUDE "DPXBASE.. ejemplo: LOCAL oDB.. SIZE 120.oDp:cDsnData.cSql.) // Muestra los Datos oTable:Browse() otable:End() TDPEDIT Es una clase DpXbase que permite diseñar formularios de tipo (MDI) en forma declarativa. Manual del Usuario Capítulo VI. así evita utilizar la función ADDTABLE("0998".otable // Abre la Base de Datos SGE0001 (Debe Existir) oDB:=OpenOdbc(“SGE0001”) oTable:=OpenTable(“MITABLE”.oDB.F.03 GET oFrm:oNombre VAR oFrm:cVarName. 04 BUTTON " Aceptar ". ENDIF RETURN . SIZE 36.10 RIGHT. FONT oFont. SIZE 50.bmp".12. PICTURE "999999. SIZE 40. VALID oFrm:MyValid() XSAY("Nombre") @ 4. PICTURE "99/99/9999".F. Pag: 59 .oFrm:dFecha).03 GET oFrm:oValor VAR oFrm:nValor.10.03 BMPGET oFrm:oFecha VAR oFrm:dFecha. FONT oFont.oObj:nLeft SAY cText PIXEL. NAME "BITMAPS\Calendar.Programación FONT oFont.12.8 Manual del Usuario Capítulo VI. WHEN !Empty(oFrm:cVarName) XSAY("Fecha") @ 6. ACTION LbxDate(oFrm:oFecha. SIZE NIL. ACTION oFrm:Aceptar() @ 6. SIZE 36.99".T. ACTION oFrm:Close() oFrm:Activate() RETURN FUNCTION MyValid() IF Empty(oFrm:cVarName) MensajeErr("Nombre no Puede Estar Vació") RETURN . FUNCTION XSAY(cText) LOCAL oObj oObj:=ATAIL(oFrm:oDlg:aControls) @ oObj:nTop-9. WHEN !Empty(oFrm:cVarName) XSAY("Valor") @ 6.15 BUTTON " Cerrar ". necesario para declarar los controles “@ Lin. Pag: 60 .ancho. Métodos de la clase New(<cTitulo>.Col <CONTROL>” SetTable(oCursor): Asigna un cursor datos hacia el formulario permitiendo editar los valores de una tabla para ser modificados (oForm:nOption:=3) o Incluidos mediante (oForm:nOption:=1). cFichero: Nombre del fichero con extension (.edt) y ubicación “forms\” contentiva de los parámetros (linea. lWindows: Si es verdadero <.Programación RETURN .alto. el formulario asume las declaración de variables: oForm:INV_CODIGO. oForm:INV_DESCRI. . coForm: Nombre de la variable que contiene e identifica el formulario.T. El formulario asume virtualmente los datos del cursos según los nombres de los campos para fácil utilización.> genera la ventana del formulario. de esta manera el programador puede utilizar controles (GET) para editar su valores y mediante el método SAVE() del formulario los valores son almacenados en la Tabla.T.T. cTitulo: Nombre del título de la ventana. FUNCTION ACEPTAR() MsgAlert("Aquí se ejecuta el proceso") RETURN .<coFrm>.<cFichero>. color fondo y color texto) de cada control del formulario.T.columna. El metodo Save() ejecutar previamente la función PRESAVE (que debe estar declarara en el formulario) con la finalidad de realizar verificaciones antes de grabar y PRESAVE devuelve .F. Si oForm:nOption=1 se indica que se desea incluir . Si el cursos se deriva de una consulta de productos oCursor:=oTable(“SELECT * FROM DPINV”. si oForm:nOption=3 se indica que los datos serán modificados.<lWindows>): Inicia la construcción del formulario. ). será grabado el registro y luego será ejecutada la función POSTSAVE para Manual del Usuario Capítulo VI. oWnd: Nombre de la Ventana de estilo MDI (CHILD) hija de la ventana principal y se encarga de ejecutar todos los eventos de la venta: Minimizar.bEnd. en la construcción del formulario con NEW(). si POSTSAVE devuelve . restaurar.T. Data de la Clase: oDlg: Nombre del Objeto Dialogo contenedor de Controles “oFrm:oDlg:aControls”. ajuste de tamaño y permitir el uso en forma MDI. oCursor: Contiene el objeto del cursor SQL de la consulta asociada con el formulario. bResize: Bloque de Código que se ejecuta cuando el tamaño de la ventana es reajustado con el Mouse. Todos los controles deben ser definidos después de ejecutar el método Windows debido a que ::oDlg es el contenedor por defecto de todos los controles. Pag: 61 . bInit: Bloque de código de iniciación y previa ejecución de la ventana.. Windows() no es necesario si el parámetro <lWindows> es .Programación realizar evaluaciones luego de grabar. si este devuelve . puede ser utilizado para llamar a un método virtual (oFrm:xUDFunction) para crear barra de botones o ejecuciones previas a la presentación del formulario.f.bResize): Presenta en el video y activa la ejecución del formulario.COMBOBOX. Esta utilidad es de gran ayuda para realizar validaciones de cierre. el sistema ejecutará ROLLBACK de la base de Datos para deshacer el nuevo registro agregado o modificado. bEnd: Bloque de Código que debe ejecutarse al cierre del formulario. Etc) se crean indicando por defecto a oDlg como contenedor. Activate(bInit. CreateWindows(): Dibuja la ventana MDI (oWnd) y el Dialogo (oDlg) para controles incrustado y dependiente de MDI.SAY. el formulario no puede ser cerrado.F. Manual del Usuario Capítulo VI. Todos los controles (GET. cPostSave: Nombre de la función que se ejecuta luego de grabar el registro. cList: Nombre del Fichero *. La sintaxis clásica de la librería fivewin (www. si el formulario puede ser cerrado con la tecla ESC. Si devuelve . lEscClose: Indica con .com) es utilizada en DpXbase logrando la mayor compatibilidad posible y aprovechamiento de toda la documentación existente c:\dpnmwin\help\fwcmd.F.fivetechsoft. Todos los controles definidos deben ser asociados sólo con el formulario. suprime la barra de mensajes ubicada en la parte inferior del dialogo. cPrint: Contiene el nombre de la función definida en el programa DpXbase que se encarga del proceso de impresión. CONTROLES DE FORMULARIOS. Check Box (Casilla de Selección) Manual del Usuario Capítulo VI.hlp debido a que DpXbase utiliza al máximo el potencial de ésta fabulosa librería.Programación bValid: Bloque de código que permite validar el cierre del formulario.BRW (Browse) que realiza muestra vertical del datos del registro.T. no realiza el borrado. en caso de ser . lActivate: Indica si el formulario ha sido Activado o ejecutado el método Activate(). puede evitar salirse con [X] de la ventana MDI. no realiza la acción. cDelete: Indica el nombre de la función que realiza el proceso de borrado.F. lMsgBar: Con .F. cPreSave: Nombre de la función que se valida el proceso de grabación del registro. Pag: 62 . LA LIBRERÍA FIVEWIN PARA Constituye un conjunto de controles de gran uso para la definición del formulario. t. Button (Botones Simples) @ 01. CLR_HGRAY. { CLR_WHITE.12. 1 GET oFrm:oGet VAR oFrm:cVar.t.. COLORS CLR_BLACK. OF oFrm:oDlg. 43 SBUTTON oFrm:oBtn . ACTION oFrm:Close().10. WHEN .. PROMPT "Cerrar ". Manual del Usuario Capítulo VI. Presenta el control Botón dibujado mediante tres botones BMP. SIZE NIL. WHEN .}.01 BUTTON oFrm:oBtn. 1 }.t.02 CHECKBOX oFrm:oChk VAR oFrm:lVar. VALID . OFrm:oBtn:cToolTip:="Cerrar Formulario" OFrm:oBtn:cMsg :=”Mensaje en la Barra Inferior” Get (Introducir Datos) oFrm:cVar:=SPACE(40) @ 1. Pase del Mouse y Acción. MESSAGE "Cerrar Formulario". MESSAGE "Indique el valor del Campo".. CANCEL SBUTTON (Boton con Imagen BMP).Programación OFrm:lVar:=. @ 02. COLOR NIL.T.T. ON CHANGE {||.oDp:nGris. FILE "BITMAPS\XSALIR. VALID. PROMPT " CheckBox " . WHEN . Presentación. ACTION (oFrm:Cancel()) CANCEL OFrm:oBtn:lCancel:=. 23. OF oFrm:oDlg . SIZE 90. SIZE 42. Pag: 63 . OF oFrm:oDlg.T.10. LEFT PROMPT "Salir". @09. SIZE 36. MESSAGE "Indique el valor del CheckBox".BMP" NOBORDER.T. OF oFrm:oDlg.t. ITEMS oFrm:aLista.T..999. Pag: 64 .t. RIGHT. El tamaño del browse de se define mediante el método Move(nlin.nCol.1. WHEN ..Programación MensajeErr("No puede estar Vacio”..t.200. 5 GET oFrm:oGet VAR oFrm:cMemo. MESSAGE "Seleccione una Opción".t.. FONT oFont. ON CHANGE ."Jueves". VALID .10.{||!Empty(oFrm:cVar)}). Texto" oFrm:cMemo:=Alltrim(oFrm:cMemo) @ 5. MEMO.t.t.t. VALID . 10 GET oFrm:oGet VAR oFrm:nValor. MESSAGE "Introduzca los textos".99".nAncho. // Get para Campos Numéricos oFrm:nValor:=1000 @ 4. Get (Introducir Datos en Campo MEMO) oFrm:cMemo:= "Campo Memo. SIZE 100. PICTURE "99. HSCROLL. Browse (Visualización y Edición de Datos).100.200.) en la cláusula ON INIT del formulario (oFrm:Activate({|| oFrm:oBrw:Move(1. vacio"..999. OF oFrm:oDlg. SIZE NIL."Viernes"} oFrm:cLista:=oFrm:aLista[1] @ 5. OF oFrm:oDlg."Martes". ComboBox (Cuadro Combinado) oFrm:aLista:={"Lúnes"...T."Miércoles". ON CHANGE . WHEN .. ON CHANGE .T.nil. ON CHANGE .)}) Manual del Usuario Capítulo VI.15 COMBOBOX oFrm:oCbx VAR oFrm:cLista. WHEN .t.nAlto. MESSAGE "Indique el Monto". "oFrm" .F. Pag: 65 .NOMBRE FROM NMTRABAJADOR") oFrm:oBrw := TXBrowse():New( oFrm:oDlg ) oFrm:oBrw:oFont := oFont // Recuerda Declarlo oFrm:oBrw:SetArray(oFrm:aData. 16382457 ) } } oFrm:oBrw:CreateFromCode() BAR (Barra de Botones). Debido a que el formulario provee el control Dialogo como contenedor de controles es necesario definir la barra de botones en la cláusula (ON INIT) del dialogo. #INCLUDE “DPXBASE. OF oFrm:oBar."Fichero. para lograrlo la clase TDPEDIT del formulario permite definir en el primer parámetro del método Activate(bInit) la llamada al método virtual o función donde se ejecuta la iniciación del formulario. iif( oBrw:nArrayAt%2=0.T. {0. Manual del Usuario Capítulo VI.APELLIDO. 15790320.38 OF oFrm:oDlg 3D CURSOR oCursor DEFINE BUTTON oBtn.Programación oFrm:aData:=ASQL("SELECT CODIGO. .. ) oFrm:CreateWindow() oFrm:Activate({||oFrm:HacerBarra()}) RETURN FUNCTION HacerBarra() LOCAL oCursor.oBtn DEFINE CURSOR oCursor HAND DEFINE BUTTONBAR oFrm:oBar SIZE 38..CH” PROCE MAIN() oFrm:=DPEDIT():New("Titulo".) oFrm:oCol:=oFrm:oBrw:aCols[1] oFrm:oCol:cHeader:="Código" oFrm:oCol:nWidth :=140 oFrm:oCol:=oFrm:oBrw:aCols[2] oFrm:oCol:cHeader:="Apellido" oFrm:oCol:nWidth :=200 oFrm:oCol:=oFrm:oBrw:aCols[3] oFrm:oCol:cHeader:="Nombre" oFrm:oCol:nWidth :=200 oFrm:oBrw:bClrStd := {|oBrw|oBrw:=oFrm:oBrw.edt". prg // Ubicado c:\dpnmwin\hrb\test.harbourproject.cText) RETURN NIL // eof Pueden notar que el test.oFrm:Close() oBtn:cToolTip:="Salir del Formulario" RETURN .T.prg (programa prg ejemplo) Programa test.org) y se ejecutan en forma similar a los programas en DLLS. puede hacer llamadas a funciones propias de DpXbase “MensajeErr” y llamadas a procedimientos Dpxbase con tan solo indicar: EJECUTAR(“XPROGRAMA”.bat (Fichero de lotes para compilar) Testhrb. Pag: 66 .prg #INCLUDE "DPXBASE.xValor) Manual del Usuario Capítulo VI. ACTION MensajeErr("Salir"). están compuestos por funciones y/o procedimientos se cargan al inicio del programa y se puede hacer llamada a las funciones definidas en el programa HRB.BMP". Harbour.CH" MEMVAR oDp FUNCTION HRBtest(cText) MensajeErr(oDp:cEmpresa. MÓDULOS HRB Son programas generados por el compilador harbour (www.exe (Compilador 32 Bits) Build. FILENAME "BITMAPS\XSALIR. La función HrbTest(). En la carpeta hrb ubicada dentro de la carpeta principal del sistema se encuentran los siguientes ficheros.prg posee la función HrbTest() que puede ser ejecutada desde cualquier parte de DpXbase.Programación NOBORDER. hrb") HRBTEST(“Desde DpXbase”) RETURN Reglas generales: Las funciones no deben tener nombres similares a las funciones existentes en DpXbase.CH" PROCE MAIN() HRBLOAD("test. lo cual permite proteger la propiedad intelectual del código. #INCLUDE "DPXBASE.hrb.LIB Que es mejor entre DpXbase y HRB? Ambos modos de trabajo tienen sus ventajas.bat se encarga de compilar el programa test. No deben declarar variables estáticas.PRG. La principal función de los módulos HRB es la definición de funciones. Manual del Usuario Capítulo VI. Ejecución de Funciones del HRB Es necesario cargar en memoria las funciones definidas en test. archivos objetos *. no deben definir clases para objetos. además la declaración de variables locales son reales.OBJ y archivos de librerías *. es necesario acceder a la carpeta c:\dpnmwin\hrb\ Ejecutar: BUILD TEST Build.prg y generar c:\dpnmwin\test. Si al cargar el módulo HRB desde DpXbase se presenta un mensaje de error se debe a que el programa HRB está haciendo llamada a funciones no existentes en el ejecutable de DpXbase. La principal ventaja de los módulos HRB está en la velocidad de ejecución que es mucho mayor que DpXbase. para ello utilizamos el siguiente ejemplo escrito en DpXbase.Programación Para compilarlo. permitiendo crear diversas instancias de controles como diálogos (no modales) o ventanas MDI. El programa fuente no es necesario para la ejecución.hrb listo para ser cargado y utilizado desde DpXbase. Pag: 67 . Los módulos HRB sólo se generan desde la compilación un programa PRG y no como los DLLs de los productos Datapro DOS que requerían compilación y enlazamiento (Linkado) donde se podían involucrar varios programas *. DBF”) RETURN UTILIZACION DE REPORTES DISEÑADOS CON FOXPRO.10)) RETURN También. No permite crear instancias para diálogos no modales ni ventanas MDI.. UTILIZACION DE DESARROLLO. por ello siempre debe apoyarse en clases como TDPEDIT o TMDI. posee su editor propietario y es más cómodo. OTRAS HERRAMIENTAS DE DpXbase no pretende competir o desplazar herramientas o entornos de desarrollo de desarrollos como FoxPro o VisualBasic. numérico y Date. debe ejecutar el programa “FoxRun” con el siguiente parámetro.Programación DpXbase.T. compilar y ejecutar. memo.DBF”) OTable:End() * FROM DPINV ORDER ON INV_CODIGO”.prg que contiene un ejemplo funcional que lee parámetros creados desde DpXbase. Utilizando FoxPro: El modelo de datos que usa DpXbase es compatible con FoxPro. // Este ejemplo está Vinculado con el Cliente 0000000001 // DPXBASE FUNCTION MAIN() EJECUTAR(“FOXRUN”. escribir. puede utilizar el siguiente ejemplo: //DpXbase FUNCTION MAIN() LOCAL oTable oTable:=OpenTable(“SELECT oTable:CTODBF(“DATOS. Para ejecutar programas binarios (EXE) desde DpXbase es necesario que instale FoxPro versión 8. utilizando FoxPro con tablas DBF. ambos utilizan tipos de datos: Carácter.STRZERO(1.) EJECUTAR(“FOXRUN”. En la carpeta c:\dpadmwin\foxpro se encuentra el programa foxrun. Desde DpXbase. Pag: 68 . lógico.”DATOS. para crear reportes. Siempre estará disponible el programa fuente. Manual del Usuario Capítulo VI. Pag: 69 . Para ejecutar el reportes diseñado con FoxPro. Conforman las funciones o actividades que realiza el objeto.Programación Con el objetivo de brindarle mayor comodidad a usuario del fabuloso generador de reportes que provee el entorno de desarrollo FoxPro. Method de la clase. ejemplo: C:\dpadmwin\crystal\dpinv. seleccione el reporte identificado con FoxPro en la lista identificada “Diseño Cristal”. CURSOR : Respuesta recibida en un plano bidimensional (Línea y Columnas) desde una consulta SQL. Luego que el reporte posea la asociación con diversas opciones de diseño. Vinculación de Reportes FRX con el generador de Reportes. indica “nuevo reporte” e introduzca la denominación del reportes “Productos diseñador con FoxPro” y Nombre del archivo con su respectiva extensión y carpeta. METODO. previamente definidas en orígenes de Datos ODBC de Herramientas Administrativas del Panel de Control de Windows. Definición otorgada a las definiciones creadas por el usuario. preferiblemente deben ser almacenados en la carpeta CRISTAL del Sistema “C:\dpadmwin\cristal\”. Datapro genera archivos temporales de formato DBF en la carpeta “CRISTAL\”. El contenida de las tablas se obtiene desde la consultas SQL solicitadas por el generador de reportes. Para mayor comodidad utilice el diseñador de reportes de FoxPro sobre las tablas temporales DBF ubicadas en la carpeta “\CRISTAL” y guarde el archivo de diseño preferiblemente con el mismo nombre de la tabla con extensión FRX y en la carpeta “CRISTAL\”. DSN: Data Source Name. seleccione la opción “Cristal Preview” o “Cristal Print” y finalmente presione el “Botón de Ejecución”. CLASE: Código fuente o partitura de las acciones de un objeto.RPT). primero debe asociarlo con el reporte. métodos que indica lo que hace el objeto y Data que indica lo que tiene el objeto. Glosario de Términos UDF: User Define Function. Nombre de las conexiones ODBC con servidores de bases de datos.frx”. De la misma forma en que se asocian los reportes diseñados con Crystal Report (*. en forma analógica puede ser comparada con las Manual del Usuario Capítulo VI. hemos creado un pequeño programa FOXREP. Obligatoriamente debe poseer un método constructor denominado NEW() y un Destructor denominado END(). se deben asociar los reportes diseñados con FoxPro. contiene: clase padre (opcional si hereda desde otro objeto).EXE que incluye el código fuente que permite conocer su contenido y ser adaptado para otros propósitos. acceda al diseñador de reportes de Datapro y seleccione la opción “Crystal Report”. Otro uso de ficheros DLLs pueden estar compuesto de recursos compuestos por diseños de controles: Combobox. La función debe ser identificada con un nombre y debe recibir parámetros desde la instrucción que la ejecuta: Ejemplo: Sumar(10. text. instrucciones. También puede ser definido como “Lo que tiene el objeto”.uPar2.uParn). Método Virtual. Para utilizar el método de una clase debe ser llamada indicando el nombre del objeto. DLLS: Dynamic Link Library. FUNCTION Sumar(nValor1. Pag: 70 . Una clase puede ser definida a partir de otra clase aprovechando toda su partitura (herencia). Programas compilados y enlazadas de la misma forma que un programa ejecutable con la diferencia que se carga una sola vez en memoria y sus funciones puede ser llamado o utilizadas desde varios programas ejecutables.Programación funciones estáticas de un programa que solo se pueden usar desde el mismo programa donde fue declarada. COMPILACION: Proceso de conversión en archivo objeto (OBJ) a partir de las instrucciones escritas en forma (humana) por un programador. DATA: Valores o contenidos del Objeto se representan a través de nombres válidos como variables. Ejemplo: oObjeto:Metodo(uPar1.20). El objeto permite trabajar múltiples veces en forma simultánea (Instancias). seguido dos puntos y finalmente el nombre del método con sus respectivos parámetros. declaración de variables. ha sido una definición adicional implantada en DpXbase. etc Manual del Usuario Capítulo VI. OBJETO: Componente abstracto que realiza actividades según las tareas definidas en los métodos y valores almacenados en memoria (data). llamadas a otras funciones y que devuelven un valor. checkbox.nValor2) RETURN nValor1+nValor2 ENLAZAMIENTO: Definición del proceso final para la generación de un programa ejecutable o DLL donde se utilizan programas objetos producidos por la compilación y librerías contentivas de las funciones invocadas por los programas fuentes. Ejemplo: Objeto:xData. FUNCTION: Definición de un programa compuesto de parámetros.
Copyright © 2024 DOKUMEN.SITE Inc.