You are on page 1of 70

Programacin

TABLA DE CONTENIDO
PROGRAMACIN............................................................................................................................................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 Definicin 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 Diseo de Formularios..................................................................................................................................32 Continuidad EN Datapro para Tablas DBF................................................................................................36 Continuidad en el Lxico 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

Captulo VI. Pag: 1

Programacin
CONTROLES de la librera fivewin para formularios................................................................................62 Mdulos HRB....................................................................................................................................................66 utilizacion de otras herramientas de desarrollo.............................................................................................68 utilizacion de REPORTES DISEADOS CON FOXPRO...........................................................................68

Manual del Usuario

Captulo VI. Pag: 2

Programacin

PROGRAMACIN
DPXBASE es un ambiente de desarrollo para lxico de tipo Xbase y diseado para crear aplicaciones de tipo comercial de manera rpida y sencilla. Adems incorpora un conjunto de componentes tecnolgicos que logran aportar robustez en las aplicaciones finales. Dentro de ellas tenemos: 1. Lenguaje de Programacin xHarbour para 32 bits y C++ de Borland. 2. Acceso a Bases de Datos de tipo SQL a travs de ODBC o Nativo MySQL. 3. Uso de Integridad Referencial en las bases de datos. 4. Reportes a Travs de Crystal Report. 5. Generador de Reportes para la clase Treport. 6. Generador de Cdigo Fuente para Formularios de mltiple propsitos: Mantenimiento de registros, Ventanas de Dilogos, Ventanas MDI. DPxbase, posee un (DataBase IDE) que permite definir todas las tablas SQL que sern utilizadas por el sistema de manera jerrquica: Campos, ndices, Claves Primarias y referencias entre tablas. Adems; 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 Cdigo, Arreglos, Objetos y Nulos . Para una fcil compresin o lectura de programas escritos en DpXbase utilizamos la notacin Hngara que consiste en una tcnica 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

Captulo VI. Pag: 3

Programacin

Numricos,

soporta 19 enteros y siete decimales, se refiere a valores de tipo numricos. Igualmente soporta valores enteros (sin decimales).

Carcter o Memo:

Acepta caracteres o cadenas de datos y soporta hasta 4 Gigas por cada variable.

Date o Fecha: Soporta datos segn el formato dd/mm/aaaa y se


refiere a fechas que pueden soportar operaciones matemticas y su uso est vinculado con las funciones DAY(),MONTH(),CMES(),DOW(),DTOC(),CTOD(), DTOS(), entre otras.

Lgicos:

Se obtiene por las comparaciones de valores mediante operadores lgicos y relacionales, siempre su valor es verdadero .T. o Falso .F.

Nulos: Se refiere al valor por defecto que posee una variable cuando
se declara sin valor, LOCAL nValor, de esta manera nValor es NIL. Si preguntamos por su valor: MsgAlert(ValType(nValor)), mostrar NIL.

Arreglos:

Tambin llamados vectores son listas de valores de una sola dimensin, 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 manipulacin de arreglos multidimensionales. La lista de los arreglos se declaran con {}, otra ventaja de los arreglos es que su contenido puede estar compuesto por datos de varios tipos. Ejemplo: aLista:={1,2,3,4,5,6} aLista:={Uno,2,date(),nil,.T.} Para declarar arreglos multidimensionales, debe utilizar la siguiente forma: aLista:={} AADD(aLista,{1,2,3,4,5,6}) // Puede Notar que estamos adicionando una lista de nmeros Para mostrar el primer elemento, se debe utilizar la siguiente sintaxis:

Manual del Usuario

Captulo VI. Pag: 4

Programacin MsgAlert(STR(aLista[1,1])) // Mostrar 1 Tambin puede utilizarse aLista[1][1] DpXbase provee un conjunto de funciones diseadas exclusivamente para el manejo de arreglos: AADD(), ASORT(), AEVAL(), ASIZE(), ARREDUCE(), ADEL(), AINS(), ASCAN(), ACLONE() Etc. El uso de arreglos ha sido altamente explotado en DpXbase, se utilizan conjuntamente con bloques de cdigo y objetos, logrando una potencial herramienta de programacin. Veamos sus ms importantes usos: // Buscar en un arreglo Unidimensional #INCLUDE DPXBASE.CH PROCE MAIN() LOCAL aData:={MYSQL, SQL-SERVER,POSGRES} nAt:=ASCAN(aData,{|a,n| a=POSGRES) ? nAt,Encontrado en 3era posicin RETURN .T. // Buscar en un arreglo Multidimensional #INCLUDE DPXBASE.CH PROCE MAIN() LOCAL aCampos:={} AADD(aCampos, AADD(aCampos, AADD(aCampos, AADD(aCampos, AADD(aCampos, {CARACTER,C,10,0}) {NUMERICO,N,16,2}) {FECHA ,D,08,2}) {LOGICO ,L,01,2}) {MEMO ,M,10,2})

nAt:=ASCAN(aCampos,{|a,n| a[2]=L) ? nAt,Econtrado en 3 RETURN .T. El ambos ejemplos podemos notar la siguiente sintaxis aplicada en la funcin ascan() nAt:=ASCAN(aCampos,{|a,n| a[2]=L) Manual del Usuario Captulo VI. Pag: 5

Programacin Estos dos parmetros |a,n| se refiere a: a Corresponde al elemento que est en evaluacin n Se refiere al nmero del elemento. La funciones ASCAN() y AEVAL() realizan un recorrido ascendente del arreglo, si el arreglo est compuesto de 10 elemento, se ejecutar un proceso cclico de 10 vueltas, en cada vuelta sern enviados como parmetros el elemento del arreglo a y la posicin n del mismo.

Bloques de Cdigo: Como su nombre lo indica son datos que


contienen cdigo de ejecucin que ejecutan como si fuese parte del EXE, la gran diferencia entre un programa ejecutable Binario y un bloque de cdigo estn en que el programa ejecutable se encuentra almacenado en un fichero de extensin EXE y el bloque de cdigo est almacenado en una variable. El Bloque de cdigo es un potencial altamente aplicado en todo DpXbase y en las reglas de negocio encargadas de generar las transacciones comerciales. Declaracin: bBloque:={||MsgAlert(Hola DpXbase)}) Para ejecutarlo: Eval(bBloque) // Muestra en un dialogo Hola DpXbase Tambin recibe parmetros, ejemplo: bBloque:={|cMensaje|MsgAlert(cMensaje)}) Eval(bBloque,Este es el mensaje) Los bloques de cdigo se comportan en forma similar a una funcin de un programa, es decir, pueden recibir parmetros y devolver valores, ejemplo: FUNCTION SUMAR(nValor1,nValor2) LOCAL nResp:=nValor1+nValor2 RETURN nResp

Manual del Usuario

Captulo VI. Pag: 6

Programacin Para Ejecutar la suma es necesario llamar a la funcin sumar de la siguiente manera: SUMAR(10,20) y devuelve 30 La traduccin literal de la funcin SUMAR() hacia bloque de cdigo es: BSumar:={|nValor1,nValor2|nValor1+nValor2} Para ejecutar la Suma, es necesario utilizar la funcin EVAL() de la siguiente manera: EVAL(bSumar,10,20) // Devuelve 30 Los bloques de cdigo estn en todas partes del sistema, principalmente donde estn las ejecuciones, tales como: Clic en un control (Botn, Men, etc.). Conocer ampliamente y dominar el concepto de bloque de cdigo le ayudar a conocer DpXbase y construir soluciones aprovechando el potencial de los bloques de cdigo. Cada vez que el usuario presiona CLICK en un control est haciendo uso de un bloque de cdigo que contiene la ejecucin del control, ejemplo: #DEFINE DPXBASE.CH PROCE TESTBLQ() LOCAL oDlg,oBtn DEFINE DIALOG oDLG TITLE Bloque de Cdigo @ 1,1 BUTTON oBtn PROMPT Cerrar oBtn:bAction:={||oDlg:End() ACTIVATE DIALOG oDLG RETURN NIL En este ejemplo puede observar que la accin de botn Cerrar est definida mediante un bloque de cdigo, cuando el usuario presione Clic ser ejecutado el bloque de cdigo oBtn:bAction que est compuesto por la llama al mtodo End() cerrar del dialogo identificado con la variable oDlg. Los bloques de cdigo estn en todo el uso de DpXbase, gran parte de las funciones DpXbase utilizan bloques de cdigo en especial las funciones orientada al manejo de arreglos. Manual del Usuario Captulo VI. Pag: 7

Programacin

Objetos: El concepto de Objetos utilizado por DpXbase est basado


bajo el concepto clsico de Programacin Orientado a Objetos (OOP). Podemos definir que un objeto es un elemento que est compuesto por datos y que realizar actividades, como por ejemplo una calculadora: Posee teclas que realizan tareas: (indicar un numero, sumar, restar, etc.) y contiene datos nmeros del 0 al 9 para realizar operaciones matemticas. Podemos notar que DpXbase posee una calculadora totalmente diseada bajo el concepto de programacin Objeto. Los datos de tipo objeto se obtiene mediante la llamada a una clase Objeto preexistente en DpXbase, para hacer llamada a un objeto utilizamos la siguiente sintaxis: oObjeto:=TDpEdit():New()
oObjeto:=DPEDIT():New("Titulo","forms\formulario.edt","oObjeto",.F.) 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. Todos los controles Windows (GET,TEXT,COMBO,DIALOG) son manipulados mediante objetos que se definen a travs de comandos predefinidos en el fichero de encabezado DPXBASE.CH En el fichero DPXFUNCTION.CHM ubicado en la carpeta HELP de sistema de gestin empresarial o nmina, contiene la documentacin y ejemplo de cada una de las funciones estndar xbase utilizadas en DpXbase. Por razones de comodidad y estandarizacin DpXbase utiliza las mismas funciones estndar xbase de Clipper 5.2 con la diferencia que estn diseadas para 32 bits.

Operadores: Son un conjunto de smbolos utilizados para generar


resultados aritmticos y/o lgicos.

Aritmticos: Se encargan de realizar operaciones aritmticas de:


Asignacin, Suma, Resta, Multiplicacin y Divisin.

Manual del Usuario

Captulo VI. Pag: 8

Programacin

:= Asignar: Asigna el resultado hacia una variable, ejemplo: nValor:=100+200

+ Sumar. Suma en forma algebraica valores numricos y


fechas, tambin concatena valores de tipo carcter. LOCAL nMonto:=100+200 LOCAL bFecha:=DATE()+100 LOCAL cChar:=NETNAME()+ este es mi PC ? nMonto,dFecha,cChar

- Restar. Resta algebraicamente valores numricos y fechas.


Ejemplo: LOCAL nMonto:=200-100 LOCAL bFecha:=DATE()-1 ? nMonto,dFecha

* Multiplicar. Realiza la multiplicacin de valores numricos.


Ejemplo: LOCAL nMonto:=5*5 ? nMonto,dFecha

/ Dividir. Realiza la divisin de valores numricos. Ejemplo:


LOCAL nMonto:=5*5 ? nMonto

** Potenciacion. Genera el valor potencial de un valor


numrico. Ejemplo: #INCLUDE DPXBASE.CH

Manual del Usuario

Captulo VI. Pag: 9

Programacin LOCAL nMonto:=3**2 ? nMonto

Relacionales: Utilizado para realizar comparaciones entre valores y


generan valores lgicos .T. Verdadero o .F. Falso.

= == > >= < <= <> $

Igual que, ejemplo: lResp:=(1=0) Exactamente igual que, ejemplo: lResp:=(1.0==1.1) Mayor , ejemplo: lResp:=(1>0) Mayor o Igual que, ejemplo: lResp:=(1=0) Menor que, ejemplo: lResp:=(0<1) Menor o Igual que, ejemplo: lResp:=(1<=0) Diferente que, ejemplo: lResp:=(1=0)que Cadena Asociada A$ABEDARIO

Lgicos: Se encargan de realizar operaciones que generan resultados


verdaderos y falsos con diversas comparaciones relacionadas. .AND. Y , todas las condiciones deben cumplirse: IF (1=1) .and. (2=2) .OR. O, Una de las condiciones debe cumplirse IF (1=0) .or. (1=1) El smbolo # puede ser usado por .OR. IF (1=0) # (1=2) .NOT. Negacin. IF .NOT. (1=2) Tambien puede utilizar If (1=0)

Manual del Usuario

Captulo VI. Pag: 10

Programacin

Manipulacin de Datos:
DpXbase al igual que Clipper tienen consideraciones especiales para manipular datos de tipo arreglos y bloques de cdigo. Manipulacin de Arreglos: Este tipo de datos se manipulan mediante las siguientes funciones especialmente diseadas para el manejo de arreglos y listas. Recordemos que los arreglos es un tipo de datos compuestos por otro tipo de datos, generando una lista: aLista:={1,2,3,4,5,6} , una de las grandes ventajas de los arreglos es que soportan cualquier tipo de datos incluyendo arreglos, los arreglos de dentro de un arreglo conforman arreglos multidimensionales o concatenados. La referencia de cualquier elemento se establece mediante su posicin, ejemplo: aLista[2], se refiere al segundo elemento de la lista.

Iniciacin de Arreglo:
aArray:={}

Declaracin de un Arreglo de elementos:


aArray:=ARRAY(20)
? aData[1] // Muestra NIL

Genera un arreglo con 20 elementos nulos.

Rellenar un arreglo
Para rellenar el arreglo del carcter X: AFILL(aArray,X)
? aData[1] // Muestra X

Agregar un nuevo elemento:


AADD(aData,Nuevo)

Medir la longitud del arreglo:


Manual del Usuario Captulo VI. Pag: 11

Programacin
? LEN(aData) // Genera 21

Remover o Quitar el primer elemento del arreglo:


ADEL(aData,1) // Remueve el primer elemento con valor NIL, la lista se mantiene en 21 elementos. aData:=ASIZE(LEN(aData)-1) // Reduce el tamao de la lista, ahora queda con 20 elementos. Tambin se puede remover un elemento con la siguiente funcin: ARREDUCE(aData,1) elemento. // Elimina fsicamente el primer

Asignar un Valor en cualquier posicin del Arreglo:


aData[1]:=Nuevo Valor

Insertar un nuevo Elemento:


AADD(aData,NIL) // Agrega un nuevo elemento al final AINS(aData,Primero) // Inserta un nuevo elemento en la primera posicin

Ordenar un Arreglo
ASORT(aData)

Ordenar un Arreglo Multidimensional


LOCAL aData:={},nAt AADD(aData,{Z,3}) AADD(aData,{B,2}) AADD(aData,{A,1})
aData:=ASORT(aData,,, { |x, y| x[1] < y[1] })

Manual del Usuario

Captulo VI. Pag: 12

Programacin
// Si se require Ordenar por la segunda Columna numrica aData:=ASORT(aData,,, { |x, y| x[2] < y[2] })

Buscar en la Lista.
ASCAN(aData,X) // Realiza elementos de la lista. Para arreglos multidimensionales: LOCAL aData:={},nAt AADD(aData,{A,1}) AADD(aData,{B,2}) AADD(aData,{C,3}) nAt:=ASCAN(aData, {|a,n| a[1]=B ? nAt // Respuesta 2 }) la bsqueda de X en los

Visualizar un Arreglo:
ViewArray(aData)

Duplicar Arreglo:
LOCAL aData:={},aNuevo AADD(aData,{A,1}) AADD(aData,{B,2}) AADD(aData,{C,3})

aNuevo:=Aclone(aData) Recorrer una lista


LOCAL aData:={},nTotal:=0 AADD(aData,{A,1}) AADD(aData,{B,2}) Manual del Usuario Captulo VI. Pag: 13

Programacin AADD(aData,{C,3}) AADD(aData,{B,4}) Aeval(aData, {|a,n,b| nTotal:=nTotal + b }) b:=iif( a[1]=B, a[2] ,0),

// totaliza los elementos cuya columna es B

Obtener el ultimo elemento :


LOCAL aData:={1,2,3,4,5,6} ? ATAIL(aData) // Muestra 6 Otro uso, puede ser ? aData[len(aData)] // Muestra 6

Totalizar una lista


LOCAL aData:={},aTotal:=0 AADD(aData,{A,1}) AADD(aData,{B,2}) AADD(aData,{C,3}) AADD(aData,{B,4}) aTotales:=TOTALES(aData) ? aTotales[2] // Respuesta 10

Manipulacin de Cadenas: El tipo de dato carcter se puede concatenar en forma literal. DpXbase Incluye un conjunto de funciones que permiten trabajar ampliamente con este tipo de datos. Incrementar o Concatenar Cadenas. LOCAL cChar:= CChar:=cChar + Nueva Cadena Manual del Usuario Captulo VI. Pag: 14

Programacin

Generando un valor de tipo Memo, cChar:=cChar + CRLF + Nueva Lista // CRLF es CHR(10)+ CHR(13) Grabando el Disco MemoWrit(Fichero.txt,cChar) Leyendo desde Disco cChar:=Memoread(cChar) Tambin puede ser cChar =+ cChar <eemplazando valores cChar:=ABBCCDD cChar:=STRTRAN(cChar,BB,bb) ? cChar // Muestra AbbCCDD Obtener parte de una Cadena LOCAL cChar:=ABBCCDD cChar:=LEFT(cChar,2) ? cChar // Muestra AB LOCAL cChar:=ABBCCDD cChar:=RIGHT(cChar,2) ? cChar // Muestra DD LOCAL cChar:=ABBCCDD cChar:=SUBS(cChar,2,2) ? cChar // Muestra BB Buscar Posicin

Manual del Usuario

Captulo VI. Pag: 15

Programacin LOCAL cChar:=ABBCCDD ? AT(C,cChar) // Muestra 4 LOCAL cChar:=ABBCCDD ? RAT(B,cChar) // Muestra 5 Comparar Cadenas LOCAL cChar:=ABBCCDD ? B$cChar // Muestra .T. ? A=cChar // Muestra .T. ? A==cChar // Muestra .F. Conversin en Arreglos LOCAL cChar:=A,B,C,D,E LOCAL aData aData:=_Vector(cChar) ViewArray(aData) Conversin en Numrico LOCAL cChar:=1000 LOCAL nValor nValor:=VAL(cChar) Conversin en Fecha LOCAL cChar:=01/01/2007 LOCAL dFecha dFecha:=CTOD(cChar) ? dFecha+1 // Muestra 02/01/2007

Manual del Usuario

Captulo VI. Pag: 16

Programacin

MacroEjecucin LOCAL cChar:=A+B LOCAL R,A:=100,B:=200 R:=&cChar // Tambien puede usar R:=MACROEJE(cChar) ? R // Muestra 300 Convertir en Bloque de Cdigo LOCAL cChar:=A+B LOCAL B,A:=100,B:=200 B:=BloqueCod(cChar) ? Eval(R) // Muestra 300 Repetir Carcter LOCAL cChar:=Repli(-,10) ? cChar // Muestra --------Rellenar de Ceros LOCAL cChar:=STRZERO(123,10) ? cChar // Muestra 0000000123

Manipulacin de Fechas: El tipo de dato Fecha o Date se puede concatenar en forma literal, es decir se puede sumar o restar. DpXbase Incluye un conjunto de funciones que permiten trabajar ampliamente con fechas. Declarando Fecha LOCAL dFecha:=CTOD() ? dFecha // Muestra / / Obteniendo la Fecha desde el Sistema Operativo

Manual del Usuario

Captulo VI. Pag: 17

Programacin 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 Das entre Fechas LOCAL dFch1:=CTOD(01/01/2007) LOCAL dFch2:=CTOD(08/01/2007) ? dFch2-dFch1 // Muestra 7 Da 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 Mircoles // 5 es Jueves // 6 es Viernes // 7 es Sbado Nmero del da LOCAL dFecha:=CTOD(01/01/2007)

Manual del Usuario

Captulo VI. Pag: 18

Programacin ? DAY(dFecha) // Muestra 1 Nombre del Da LOCAL dFecha:=CTOD(01/01/2007) ? CSEMANA(dFecha) // Muestra Lnes Nmero 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 Nmero del Ao 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 configuracin de fecha SQL Fin del Mes LOCAL dFecha:=CTOD(15/02/2007) ? FchFinMes(dFecha) // Muestra 28/02/2007

Manual del Usuario

Captulo VI. Pag: 19

Programacin

Primer da del ao 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 asignacin de valores necesarias para configurar valores del sistema que debe ser tomado en cuenta antes de iniciar cualquier proceso.

Manual del Usuario

Captulo VI. Pag: 20

Programacin NATIVO. Indica con .T. si la conexin para la base de datos se realiza en forma nativa, es decir; sin utilizar tecnologa ODBC de MS que requiere previamente la definicin de DSN para acceder a la base de datos. Si el valor es .F. utilizar conexin ODBC mediante DSN. Si la BD es MySQL algunos procesos de datos sern realizados en forma nativa debido a su alto rendimiento. MENUXP: Presenta el men principal del sistema en forma clsica, necesaria para el uso del sistema desde Linux mediante emuladores para Windows. Adems optimiza su ejecucin debido a que no posee grficos ni lneas, tambin; pueden ser utilizando en Windows cuando requiere mayor rendimiento en la aplicacin. Con Valor .T. Presenta el men del sistema con una presentacin acorde al estilo XP, consume ms recursos debido a las imgenes, lneas, colores y sonidos que puede utilizar. CREADSN. Con .T. suguiere que genere los conectores DSN desde el formulario de Conexin con la Base de Datos, puede ser utilizado para Nativo y ODBC. Si el sistema trabaja en forma nativa no necesita los DSN para ODBC, puede crearlos para acceder a la base de datos desde otras aplicaciones como Excel mediante MsQuery. TRACER : Con .T. muestra en el titulo de la ventana principal el nombre del programa DpXbase que est en ejecucin, para as conocer los procesos que se ejecutan durante el inicio del sistema. TRACERSQL :=Con .T. muestra en el ttulo de la ventana principal la sentencia SQL que est en ejecucin desde que se inicia el sistema. Adems la sentencia SQL es copiar en el ClipBoard de Windows para luego ser pegada con <Pegar o Paste> en el programa de administracin de base de datos. BASE DE DATOS MYSQL Para mayor comodidad hemos creado un manual c:\dpadmwin\docs\mysql.doc basado en experiencia de uso con este fabuloso motor de base de datos relacional. 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 conexin. Recuerde que los permisos se otorgan por razones de seguridad de acceso para evitar que otro usuario con acceso a la direccin IP del servidor se conecte y pueda manipular o afectar los datos. Manual del Usuario Captulo VI. Pag: 21

Programacin

Luego de instalado el sistema, se solicita la direccin IP del Servidor, en caso de ser localhost en el mismo PC, el sistema tratar de conectarse con la base de datos, en caso de no ser lograda la conectividad el sistema ejecutara dos comandos instalacin de servicio e iniciacin del servicio que se encuentran en el fichero mysql\mysqlstart.bat. El integrador podr adaptarlo a sus necesidades.

FICHEROS

APLICACIONES O MODULO DEL SISTEMA


Permite modificar y eliminar los mdulos existentes, as como tambin crea nuevos mdulos al sistema. Los efectos se vern en Aplicaciones.

TABLA DE DATOS
El usuario selecciona la tabla de datos y por cada campo debe indicar el tipo de control GET, COMBO, RADIO, CHECK, Etc. y atributos para cada campo, que ser utilizado para crear el programa fuente xBase permitiendo la ejecucin de un formulario de carga de datos que incluye toda la funcionalidad necesaria para: Incluir o Modificar un registro de una tabla SQL. DPxbase provee la clase TDPEDIT que controla el formulario con la tabla de datos y el navegador de registros, posee mtodos "methods" para: Iniciar, Grabar, Cancelar, Imprimir, Validar, enlaces, campos nicos y un sin nmero de utilidades. Cuando DPxbase detecta que un campo esta referenciado con otra tabla que incluye un formulario con toda la sintaxis en formato xBase, hace

Manual del Usuario

Captulo VI. Pag: 22

Programacin posible vincular a una o varias tablas con las propiedades de acceder, buscar y regresar con el campo deseado. En cada campo, se puede personalizar el mensaje interactivo, el control requerido y las validaciones necesarias.

DPxbase, sugiere sintaxis para cada control, si un campo esta referenciado con otra tabla, ser sugerido el control BMPGET con toda la sintaxis que permita al usuario acceder a la tabla referenciada y relacionar ambos valores. La siguiente imagen, muestra los controles creados por DPxbase para campos vinculados con tablas referenciadas, para los primeros casos el programador seleccion BMPGET, y el segundo seleccion el control COMBOBOX, en ningn momento el programador ha necesitado escribir una sola lnea del cdigo. DPxbase, sugiere la sintaxis necesaria. El objetivo de DPxbase, es reducir considerablemente el tiempo de desarrollo de aplicaciones, tambin brindar flexibilidad para acceder y adaptar los componentes creados, para los formularios crea un programa fuente escrito en formato PRG bajo las clases "classes" de Fivewin para el manejo de controles, cada control esta definido y asociado al formulario contenedor y las coordenadas se expresan en Manual del Usuario Captulo VI. Pag: 23

Programacin lneas y columnas, estas posiciones pueden ser reubicadas en tiempo de ejecucin, el formulario dispone de esta opcin. La siguiente imagen muestra un formulario definitivo compuesto por encabezado y Cuerpo Renglones y en ningn momento fue necesario escribir una lnea de cdigo, slo fue necesario reubicar los controles. La sintaxis generada para el control Combobox es la siguiente @ 6.1, 1.0 COMBOBOX oINV:oINV_IVA; VAR oINV:INV_IVA; ITEMS aItems1; WHEN; AccessField("DPINV","INV_IVA",oIVA:nOption); .AND. oINV:nOption!=0); FONT oFontG Cada valor est representado por: oINV: Representa al Objeto de la clase TDPEDIT o formulario contenedor. oINV_IVA: Representa al control ComboBox y para su nombre se utiliza el mismo campo del cdigo con el prefijo o que lo asocia con Objeto. VAR oINV:INV_IVA: Representa a la variable Virtual del formulario creada automticamente desde los campos de la tabla de datos. Para mayor comodidad el formulario asume como variables todos los campos y valores de la tabla de datos. AccessField("DPINV","INV_IVA",oIVA:nOption) Esta funcin 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. GENERADOR DE BROWSES O LISTAS Luego de Crear las tablas de Datos, DPxbase genera lista de navegacin utilizando la clase xBrowse, incluye botones sugeridos para: Incluir, consultar, modificar, eliminar, imprimir y navegar, adems; el usuario puede seleccionar de manera ordenada los campos de las tablas con sus respectivos ttulos que conformaran la lista de navegacin de cursores de una o varias tablas SQL.

Manual del Usuario

Captulo VI. Pag: 24

Programacin

Al presionar la tecla Ejecutar, despliega el Browse definitivo en ventana MDI, con todas las opciones disponibles para: Incluir, Consultar, modificar, eliminar y funciones de navegacin. Este nuevo Browse, puede ser modificado en tiempo de ejecucin, todas las instrucciones estn grabadas en un archivo de formato plano que permite ampliar sus alcances, como por ejemplo: Agregar nuevos botones. OPCIONES PARA LOS CAMPOS Forma parte del diccionario de datos y tiene como finalidad definir las diferentes opciones seleccionables a travs del control COMBOBOX para asignar el valor de un campo durante la carga de datos desde formularios o emisiones de reportes. Tambin contribuye en la generacin del cdigo fuente para los formularios y reportes, 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 dinmica se incluye en el cdigo fuente la funcin: GETOPTIONS("TABLA","CAMPO"), facilitando emplear las nuevas opciones que pueden ser agregadas para el campo. Para asignar nuevas opciones para el campo, acceda al formulario de tablas, en la barra de botones se encuentra, Opciones de los campos. Presenta de la tabla que est focalizada una nueva ventana contentiva de todos los campos que pueden aceptar Manual del Usuario Captulo VI. Pag: 25

Programacin opciones. Focalice con el mouse el campo deseado y haga dos clic o presione el botn modificar, nuevamente se presentar una ventana de dialogo que permite: agregar, modificar o eliminar cada descripcin que conforma las opciones del campo.

Esta ventana para el mantenimiento de opciones, indica el nombre de la tabla y nombre del campo, contiene las diversas opciones ya registradas y a travs de: Incluir, Modificar y Eliminar, es posible actualizar cada lnea de la lista. Es importante tomar en cuenta la longitud del campo, si posee un dgito, ser asumido el primer carcter de la opcin. Ejemplo: La opcin Carcter al ser seleccionada, solo podr almacenar el primer carcter C, debido al espacio fsico que soporta. En caso que requiera ms opciones y dos o ms de ellas coinciden en el primer carcter, debe ampliar la longitud del campo. Si la longitud del campo es de 3 dgitos, sern guardados los primeros tres valores de la opcin especificada para el almacenamiento fsico en la tabla Consideraciones:

Manual del Usuario

Captulo VI. Pag: 26

Programacin Los controles combobox mostrarn las opciones en el mismo orden como se registren. Para utilizar los valores de las opciones en las columnas de los reportes puede emplear la funcin SayOptions() como expresin de la columna. Ejemplo: SayOptions(DPTABLAS,CAM_TYPE,oCursor:CAM_TYPE) Preguntas: 1.-Donde se coloca esa instruccin, es decir delante de que y despus de que. 2.-En que pantalla, es en el generador de informes?

MEN DE ACCESO
Permite modificar y eliminar los mens de los mdulos existentes, as como tambin crea nuevos men para los mdulos del sistema. Los efectos se vern en Ficheros, Transacciones, Informes, Procesos y Otros. DPxbase, tiene un concepto de trabajo sistematizado donde el nombre de cada programa, reporte, formulario est directamente asociado a las tablas, si la tabla se llama DPMENU, el Browse se llamar DPMENU.LBX, el Programa DpXbase para el formulario se llamar DPMENU.SCR, el Reporte ser: DPMENU.REP, logrando as ubicar cualquier componente para adaptarlo. Adems; facilita personalizar el nombre de las tablas y formularios en tiempo de ejecucin, logrando as que el usuario pueda indicar nombres especficos en cualquier tabla y directamente a las opciones de: Men, Formularios y Reportes, ejemplo: Si la descripcin de la tabla Men de Acceso DPMENU es Men de Acceso, el ttulo del formulario de productos adoptar el nombre de Men de Acceso, igualmente el campo Singular es utilizado para indicar el nombre de la tabla dentro de un tercer formulario que est enlazado con la tabla. La sintaxis necesaria para asociar el nombre de las tablas dentro del men de acceso debe ser: {oDp:DPMENU} en el campo Ttulo del Men despus de hacer clic en el icono herramientas del sistema y {oDp:DPMENU} <Aplicaciones> Men de Acceso de la barra de luego en el botn Incluir.

Manual del Usuario

Captulo VI. Pag: 27

Programacin

DEFINICIN DEL MEN Todas las opciones del men principal del sistema, son definibles por el usuario, y esta esquematizado por mdulo, dentro de cada modulo estn los men: Ficheros, Transacciones, Informes, procesos y Otros asociados exclusivamente a cada aplicacin, las opciones: Macros y Barra de tareas tambin son definibles de la misma manera, solo difieren que esta opciones son generales para todas las aplicaciones, tambin podemos decir que una aplicacin en un mdulo y un sistema est compuesto por mdulos. Otras de las ventajas en la definicin del men es colocar el nombre de la tabla asociada como titulo de la opcin en el men, es decir; si la tabla de productos esta definida como Productos del Inventario, este nombre puede figurar en el titulo de la opcin del men cuando se ejecuta, permitiendo adaptar las opciones de manera directa escrita La opcin o a travs del nombre de uso de una tabla, logrando personalizar las mismas opciones segn el tipo de empresa o pas. 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, en Colombia se llama Nota de Despacho y en Espaa se denomina Albarn.

PROGRAMAS FUENTES DPXBASE


DPxbase, genera y reconoce cdigo de lxico xBase basado en xHarbour y comandos para FiveWin. Este lenguaje es compilado e interpretado en tiempo de ejecucin permitindole al usuario agregar o modificar programas sin necesidad de rehacer el programa ejecutable final. DpXbase acepta: IF, ELSE, ENDIF, WHILE, ENDDO, DOCASE,ENDCASE, y todos los comandos Clipper/xHarbour/FiveWin. 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 extensin .SCR y la versin anterior es almacenada con extensin .BAK.

Manual del Usuario

Captulo VI. Pag: 28

Programacin El sistema provee un editor de texto de estilo RTF (Richt Text Format) que permite realizar la edicin y/o escritura de programas DpXbase.

Crear un nuevo Programa

F2 Para Grabar F5 Compilar y Ejecutar El Proceso de compilado genera un nuevo archivo con extensin .DXB en la carpeta DPXBASE y este contiene las instrucciones y classes traducidas en lxico de ejecucin DpXbase lista para ser ejecutado mediante la funcin EJECUTAR(PROGRAMA,uPar1,uPar2,uPar2,..uPar20) .

Manual del Usuario

Captulo VI. Pag: 29

Programacin

Todos los programas DpXbase deben cumplir con las siguientes reglas: 1. 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 , adems hace referencias con otros archivos de cabecera que contienen los valores predefinidos como por ejemplo: Colores definidos en INCLUDE\COLORS.CH , que muchas veces nos referimos mediante la siguiente expresin: oControl:SETCOLOR(CLR_WHITE,CLR_YELLOW) , CLR_WHITE y CLR_YELLOW estn definidos en COLORS.CH
#define CLR_YELLOW 65535 #define CLR_WHITE 16777215 // RGB( 255, 255, 0 ) // RGB( 255, 255, 255 )

2. Debe declarar el primer procedimiento o funcin de la siguiente forma: #INCLUDE DPXBASE.CH PROCEDURE MAIN() RETURN O Tambin #INCLUDE DPXBASE.CH FUNCTION MAIN() RETURN NIL 3. Debe finalizar la funcin con el comando RETURN cuando es declarado con PROCEDURE y el comando RETURN <uValor> debe ser utilizado cuando se define MAIN como una funcin mediante FUNCTION. La diferencia entre FUNCTION Y PROCEDURE solo est en RETURN que para el caso de PROCEDURE devuelve un valor nulo (NIL). Si desea utiliza FUNCTION para todos los casos puede cerrar con RETURN NIL. 4. Declaracin de Variables: Solo aceptan dos modos de Declaracin: LOCAL y PRIVATE, los valores locales son utilizables dentro de la funcin donde fueron declarados y los valores PRIVATES son utilizados en las dems funciones que son invocadas desde la Manual del Usuario Captulo VI. Pag: 30

Programacin funcin de su declaracin. No declare variables con PUBLIC ya que puede usar memoria innecesaria, DpXbase provee el Objeto oDp que reemplaza el uso de PUBLIC y administra mejor el consumo de memoria. Ejemplo para la declaracin de Variables: PROCE MAIN() LOCAL cChar:=Space(40),nNum:=100,dFecha:=CTOD() MsgAlert(Len(cChar)) // Muestra 40 RETURN 5. Declaracin de Funciones, puede declarar funciones mediante la sentencia FUNCTION y declarar parmetros que reciben valores y devolver un resultado. Ejemplo: PROCE MAIN() LOCAL cChar:=Space(40),nNum:=100,dFecha:=CTOD() Multiplicar(nNum,20) RETURN FUNCTION MULTIPLICAR(nValor,nPor) LOCAL nResp NResp:=nValor*nPor MsgAlert(STR(nResp)) RETURN nResp

BOTONES DE LA BARRA DEL MEN PRINCIPAL


Al igual que el men principal, los botones son definidos por el usuario logrando indicar: Archivo Bitmap, accin que ejecutar, aplicacin asociada y condicin de ejecucin. Se pueden indicar las tablas ms utilizadas para una aplicacin especfica o para todas las aplicaciones. DPxbase ofrece a la aplicacin final un conjunto de herramientas tiles para la operatividad del sistema, tales como: Usuarios, accesos para transacciones con Tabla, restricciones para campos, Men de Acceso, auditoria de actividades de usuario. PERSONALIZAR MENSAJES EN LA BARRA DE BOTONES

Manual del Usuario

Captulo VI. Pag: 31

Programacin El programa DPBARMSG, 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: Aplicacin que se ejecuta, fecha del sistema, periodo contable o cualquier otra informacin que se desee indicar. Todos los parmetros del Objeto, tales como: Coordenadas, tamao, fuente de letra, color fondo, color texto y mensaje pueden ser personalizados en este programa, quedando totalmente a criterio del usuario su utilizacin. Para mayor comodidad el programa BOTBARCHANGE que se ejecuta en cada cambio de aplicacin 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 aplicacin, adicionalmente ejecuta DPBARMSG para mostrar los nuevos mensajes para la aplicacin solicitada.

ENLACE ENTRE TABLAS


Como su nombre lo indica, permite hacer el enlace entre las tablas por medio de un campo comn entre ambas tablas. Por ejemplo la tabla del trabajador nmtrabajador hay que enlazarla con la tabla de departamento, cargo, unidad funcional, ausencia, etc., para ello se utiliza el campo cdigo del trabajador.

OTRAS FUNCIONES
GENERADOR DE INFORMES
DPxbase ofrece un asistente que permite crear consultas de tipo SQL con facilidad y en pocos minutos. Tambin genera cdigo xBase para la clase TREPORT facilitando imprimir la consulta SQL diseada, adems; la consulta es posible exportarla hacia formato DBF con la finalidad de ser utilizada en diseos de reportes a travs de Crystal Report.

DISEO DE FORMULARIOS

Manual del Usuario

Captulo VI. Pag: 32

Programacin Partiendo del programa Fuente xBase creado por DPxbase, el usuario puede disear, modificar en tiempo de ejecucin todos los controles del formulario utilizando el Mouse, para cada uno puede configurar: Lnea, Columna, Alto, Ancho, colores y fuentes de letra a cada control en tiempo de ejecucin sin necesidad de utilizar recursos creados en otras aplicaciones. En la parte superior de la ventana o comnmente denominado SysMen, el formulario dispone de varias opciones que permiten activar el modo diseo del formulario, permitiendo personalizarlo en tiempo de ejecucin, esta labor puede ser efectuada por el programador o usuario final.

Luego de activar el modo diseo, es posible focalizar cualquier control a travs del mouse, moverlo en cualquier posicin, ampliar o reducir su tamao y para mayor comodidad DPxbase ofrece alternativas para agilizar el diseo.

Manual del Usuario

Captulo VI. Pag: 33

Programacin

La siguiente imagen, ilustrar el uso de la opcin: Color seleccionado para el control focalizado, es decir; se puede seleccionar el color del fondo.

La siguiente imagen, muestra la posibilidad de cambiar el color del texto del control y tambin la fuente de las letras.

Manual del Usuario

Captulo VI. Pag: 34

Programacin

DPxbase integra bajo un solo concepto: La tabla de datos, el Navegador Browse, programas fuentes DpXbase, formulario para la carga de datos y Reportes bajo un conjunto de elementos identificados y asociados con la tabla de datos. DPxbase ha sido creado exclusivamente para crear aplicaciones de tipo comercial y orientado al lxico xBase, generando productos finales en corto tiempo y bajo el concepto de arquitectura abierta facilitndole al integrador o usuario final adaptarlo a su criterio. DPxbase mantiene con continuo desarrollo la bsqueda 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. DPxbase hereda toda la experiencia de DpXbase creado para Datapro durante 15 aos bajo el popular y exitoso compilador "Clipper" que logr posicionarse en el mercado con miles de instalaciones satisfactorias, en parte gracias a la comodidad y facilidad de complacer los requerimientos del usuario. Ahora es DPxbase para 32 bits y base de datos de tipo SQL.

Manual del Usuario

Captulo VI. Pag: 35

Programacin

CONTINUIDAD EN DATAPRO PARA TABLAS DBF


Todas las tablas de datos en formato DBF, son totalmente portables en estructura y contenido hacia el nuevo formato de datos utilizado por DPxbase (Motor SQL). La opcin Incluir Tablas, dispone de la opcin Importar desde DBF, 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. Adems DPxbase provee un proceso de Migracin de Registros desde las tablas DBF utilizadas por productos anteriores.

CONTINUIDAD EN EL LXICO XBASE DESDE LOS PRODUCTOS DOS


Aunque DPxbase esta compilado con C++, el leguaje Xbase incorporado soporta en gran parte los procedimientos desde las versin DOS, siempre y cuando no requieran interactuar con una interfaz de video o de impresin. Las tablas de datos en las versiones anteriores se identificaban a travs de ALIAS ejemplo: alias->campo, ahora en DPxbase ser apuntando a un cursor, ejemplo oCursor: Campo, los tipos de datos son 100% compatibles. Parte de los programas escritos en DpXbase para DPxbase han sido obtenidos de versiones anteriores con muy pocos cambios, donde se aprovecha la madurez del cdigo ya escrito.

COMPONENTE DATASET
Es un gestor de datos controlado a travs de una clase de objetos que interacta con una tabla de datos y tiene como finalidad manipular cualquier tipo de datos compatible con el lxico xBase. El componente DataSet ha sido incorporado en el sistema con el objetivo del almacenar mltiples tipos de datos seleccionados sin que sea necesario emplear tablas especficas para su almacenamiento.. El generador de reportes es una aplicacin del sistema que emplea altamente el componente Dataset para almacenar valores como: Parmetros, Rango y Criterio, cada reporte conforma una seccin Manual del Usuario Captulo VI. Pag: 36

Programacin del Dataset. Cuando el usuario desde la ventana de ejecucin de un determinado reporte indica Fijar Parmetros del reporte, est empleando el Dataset para almacenar todos los valores utilizados en esa ejecucin del reporte, con el fin de retomarlos en futuras y suponiendo que esos parmetros sean comnmente utilizados. El sistema dispone de dos DataSet, cada uno almacena los valores en tablas distintas, DPDATACNF es utilizada para todo lo referido a la configuracin general del sistema y y DPDATASET almacena valores de manera independiente en cada empresa definida a travs de un DSN. Para los parmetros del generador de informes (Fijar: Rango y Criterio) es empleado DPDATACNF, debido a que todos los reportes pueden ser empleados en cualquier DSN y la configuracin de cada empresa se almacena en DPDATASET. Para almacenar datos en el DataSet de configuracin 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, 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, se emplea un valor virtual oData:cValor de la clase TDataSet y de manera automtica detecta la asignacin de un nuevo valor, lo almacena y tambin lo restaura cuando se encuentra guardado en la tabla. El mtodo End() almacena de manera automtica los nuevos valores o los valores existentes que sufran algn cambio. Por ello es muy

Manual del Usuario

Captulo VI. Pag: 37

Programacin prctico emplear este componente en el almacenamiento de datos. Para emplear el DataSet en la configuracin de cada empresa es necesario utilizar el siguiente ejemplo escrito en DpXbase: PROCE MAIN() Local oData,oDlg oData:=DataSet(DATEMPRESA) oData:cDir:=oData:Get(DIR,SPACE(20)) oData:cTel:=oData:Get(TEL,SPACE(12)) oData:cRep:=oData:Get(REP,SPACE(40)) DEFINE DIALOG oDlg TITLE CONFIGURAR @ 1,1 GET oData:cDir @ 2,1 GET oData:cTel @ 3,1 GET oData:cRep ACTIVATE DIALOG oDlg oData:End() RETURN // EOF CLASE TDATASET: Se encarga de gestionar, leer, grabar todo lo referente al DataSet, se genera desde las funciones DataCnf() y DataSet(), ambas devuelven el objeto de la clase TDataSet, a continuacin detallamos sus mtodos.

Get(cVarName,uValue):

Obtiene el valor referido de cVarName en caso de no existir el auto creado con el valor indicado en uValue. Tambin puede ser empleado de manera directa: oDataSet:cVarName

IsDef(cVarName):
Captulo VI. Pag: 38

Manual del Usuario

Programacin Devuelve .T. o .F. si el valor de cVarName existe.

Set(cVarname,uValue):
Asigna el valor uValue para cVarname, tambin puede ser utilizado como: oDataSet:cVarname:=uValue

Save():
Almacena en la tabla todos los valores del DataSet.

Del():
y de la tabla, ejemplo:

Elimina un valor del DataSet oDataSet:Del(cVarName)

DelGroup(cGroupName): Load():

Elimina todos los componentes asociados a un grupo.

Carga todos los valores desde la tabla y generan los valores virtuales del Dataset DataSet dispone tres modalidades para el almacenamiento y recuperacin de datos, estos son: ALL: Almacena y recupera los datos para todos los usuarios y PC que accedan al sistema. PC: Almacena y recupera los datos slo para el PC que lo solicita, el nombre del PC es obtenido del Sistema Operativo. Cabe destacar que en cada PC es posible generar diferentes configuraciones. USER: Almacena y recupera los datos slo para el usuario que solicita, es decir; cada usuario puede disponer de configuraciones distintas. Se denominan valores virtuales aquellos ClassData o variables que no estn definidas en la clase, sino que se generan de manera dinmica bien sea por asignacin directa oDataSet:nValue:=10000 o a travs de la lectura de la tabla donde se almacenan los valores del Dataset. Para el sistema de Nmina DpNmWin, el DataSet ha sido altamente empleado en el almacenamiento los tipos de nmina Manual del Usuario Captulo VI. Pag: 39

Programacin que se procesan con la finalidad de poder rescatar los tipos de nmina en las siguientes ejecuciones.

FUNCIONES PARA SENTENCIAS SQL


GetWhere(cOperador,uValor) Construye una condicin para la sentencia WHERE o SET para armar un comando SQL. Ejemplo cNomre:=Datapro cWhere:=WHERE CAMPO+GetWhere(=,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. Igualmente esta funcin esta vinculada con la configuracin de fechas empleadas por el motor de la base de datos, puede ser usada cmodamente sin tomar en cuenta las reglas para las fechas y la complejidad de construirla: Ejemplo: dFecha:=DATE() cWhere:=WHERE FECHA+GetWhere(=,dFecha) La sentencia resulta as: WHERE FECHA=20041231 Tradicionalmente la condicin WHERE empleando fechas debe construirse as: WHERE FECHA=[] +STRZERO(YEAR(dFecha),4)+STRZERO(MONTH(dFecha),2) +STRZERO(DAY(dFecha),2)+[] Cmodamente WHERE FECHA+GetWhere(=,dFecha) lo simplifica.

Manual del Usuario

Captulo VI. Pag: 40

Programacin

FUNCIONES PARA EL MANEJO DE DATOS


Todo el manejo de datos en Datapro se realiza a travs de comandos SQL, 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 lneas y columnas: Las lneas representan los registros y las columnas representan los campos. OPENTABLE(CSQL,LDATA) Solicita un cursor de datos SQL. <cSql> Debe contener una sentencia de lxico SQL <lData> Indica con .T. si carga los datos. Por defecto su valor es .T. Ejemplo: oCursor:=OpenTable(SELECT TAB_NUMERO,TAB_TABLE+; FROM DPTABLAS +; ORDER BY TAB_NUMERO,.t.) 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 travs de funciones del RDD o mejor dicho abierta con: USE TABLA. Para mayor informacin consulte la clase TTABLE de este manual. ASQL(CSQL) Devuelve en tipo de datos Arreglo bidimensional el contenido del cursor generador por la consulta SQL. Ejemplo: aSql:=ASQL(SELECT CAMPO FROM XTABLA). aSql Contiene la Manual del Usuario Captulo VI. Pag: 41

Programacin lista de datos. MsgAlert(aSql[1,1]), muestra la primera columna y columna. Para evaluar la respuesta puede utilizar: ViewArray(aSql) DO(bWhile,bFor,bRun) Ejecuta en forma cclica segn el proceso indicado en <bRun> si se cumple la condicin de <bFor> hasta que se cumpla <bWhile>. #DPXBASE.CH FUNCTION MAIN()
LOCAL nTotal:=0,oCursor oCursor:=OpenTable( SELEC DOC_NETO,DOC_FECHA FROM DPDOCCLI,.T.) DO({||!oCursor:Eof()},; {||oCursor:DOC_FECHA=oDp:dFecha},; {||nTotal:=nTotal+oCursor:DOC_NETO,oTablas:skip(1)}) Totaliza el Monto neto segn los documentos emitidos segn la fecha del sistema.

SQLDELETE(CTABLA,CWHERE) Borra de la tabla <CTABLA> la cantidad de registros indicados en <CWHERE> SQLUPDATE(CTABLA,CCAMPO,XVALOR,,CWHERE) Permite Actualizar el valor de un campo de la cantidad de registros indicados en la clusula cWhere. Ejemplo: SqlUpdate(NMTRABAJADOR,TIP_NOM,Q,TIPO_NOM=S) Cambia el tipo de Nmina para Quincenal de todos los trabajadores de nmina Semanal. SQLGET(CTABLA,CCAMPO,CWHERE) Obtiene el valor de un campo desde una tabla segn la condicin indicada en Where . Where puede incluir la clausula JOIN. SQLGET(NMTRABAJADOR,CONCAT(APELLIDO,,,NOMBRE),CO DIGO=00001). Obtiene el nombre y apellido del Trabajador. SqlGet(), puede fcilmente reemplazar el uso de las funciones DBLocate() y DbSeek() utilizadas en las tablas DBF segn RDD. Manual del Usuario Captulo VI. Pag: 42

Programacin

DTOSQL(DFECHA) Convierte el formato de fecha xBase en formato de fecha para el Motor SQL, segn el formato definido en oDp:cSqlDate previamente configurado en ODBC.INI [SQLDATE]. [UPDATE FROM TABLA BCAMPO=]+DTOSQL(<bFecha>)+[] Queda As: UPDATE FROM TABLA BAMPO=2005-04-02 SQLTODATE(CFECHA) Convierte las fechas SQL en fecha xBase, segn el formato definido en oDp:cSqlDate previamente definido en ODBC.INI [SQLDATE]. Algunas funciones MAX o MIX de SQL aplicadas sobre campos de tipo de fecha, generan expresiones de tipo carcter el cual requiere ser convertida en forma de fecha real. bDate:=SQLGETMAX(DATABLA,CAMPO,<WHERE>) // 2005-0502 bData:=SQLTODATE(cFecha) // 02/05/2005 <cTable> Nombre de la tabla <aFields> Lista de campos, puede ser un arreglo un una lista de campos entre comillas BDLIST(CTABLE,AFIELDS,LGROUP,CWHERE) Genera un cursor de datos segn: <cTable> Nombre de la tabla <aFields> Lista de campos, puede ser un arreglo un una lista de campos entre comillas separas con coma, ejemplo: Campo1,Campo2,Campo3 <lGroup> si es verdadero .T. genera el cursor empleando GROUP BY en todos los campos. Su valor por defecto es .f. <cWhere> Valor opcional, puede conformar la clusula WHERE de la consulta y permite filtrar las lneas de la consulta.

Manual del Usuario

Captulo VI. Pag: 43

Programacin Presenta la consulta a travs de un editor de registros que permite seleccionar cualquier registro devolviendo el valor de la primera fila. Tiene alta utilizacin en las casillas de rango y criterio en la ejecucin de un reporte, permitiendo importar los valores de un campo hacia las casillas. Ejemplo:
uValue:=BDLIST(NMTRABAJADOR,CODIGO,APELLIDO,NOMBRE ,SALARIO)

BDSELECT(CTABLE,AFIELDS,LGROUP,CWHERE)) Genera un cursor de datos segn: <cTable> Nombre de la tabla <aFields> Lista de campos, puede ser un arreglo un una lista de campos entre comillas separas con coma, ejemplo: Campo1,Campo2,Campo3 <lGroup> si es verdadero .T. genera el cursor empleando GROUP BY en todos los campos. Su valor por defecto es .f. <cWhere> Valor opcional, puede conformar la clusula WHERE de la consulta y permite filtrar las lneas de la consulta. Presenta la consulta Cursor a travs del editor de registros, con la finalidad de realizar seleccin mltiple de registros, es decir; marcar los registros necesarios, al finalizar devuelve una cadena con todos los valores seleccionados y representados por la primera columna.
cValue:=BDSELECT(NMTRABAJADOR,CODIGO,APELLIDO,NOMB RE,SALARIO)

Si el usuario seleccion cuatro trabajadores, el valor de cValue ser: 001,002,003,004 Si desea convertirlo en arreglo puede emplear:
aList:=MacroEje({+cValue+}) Tambien, recomendada: aList:=_Vector(cValue)

Manual del Usuario

Captulo VI. Pag: 44

Programacin

GETOPTIONS("TABLA","CAMPO") Devuelve en un arreglo todas las opciones registradas para un campo de determinada tabla. Ejemplo:
aOpcion:=GETOPTIONS(DPTABLAS,CAM_TYPE)

Devuelve una lista o arreglo con los siguientes valores: Numerico, Date (Fecha), Carcter, Logica y Memo.

SAYOPTIONS(cTable,cField,uValue)
Busca y devuelve la opcin encontrada segn el valor de <uValue> segn la lista de opciones registradas en campo <cField> de la tabla <cTabla>. Ejemplo:
cOpcion:=SAYOPTIONS(DPTABLAS,CAM_TYPE,C)

El valor de <cOpcion> es Carcter. En caso de no


encontrar la opcin buscada, devolvera valor vacio.

INNERJOIN(cTabla1,cTabla2,cInner)
Busca en el diccionario de Datos la relacin existente entre dos tablas y construye la clusula INNER JOIN de la sentencia SQL necesarias para el enlace entre las tablas solicitadas. Ejemplo: INNERJOIN(DPTABLAS,DPCAMPOS) Devuelve: INNER JOIN DPCAMPOS ON TAB_NUMERO=CAM_NUMTAB SQLINCREMENTAL(cTable,cField,cWhere) Obtiene el mximo valor del campo <cField> de la tabla <cTable> y e incrementa en 1, determinando el valor siguiente. Ejemplo: MsgAlert( SQLINCREMENTAL(DPCLIENTES,CLI_CODIGO) ) VIEWARRAY(aArray)

Manual del Usuario

Captulo VI. Pag: 45

Programacin Muestra en una ventana MDI el contenido de un arreglo multidimensional. oDp:lViewArrayMdi:=.T. Muestra en Ventana MDI oDp:lViewArrayMdi:=.f. Muestra en Caja de Dialogo.

OBJETOS
Clase TTable Clase DpLbxRun Clase DpEdit Clase TDocEnc Clase TDocGrid Clase TGridCol Formularios de Documentos compuestos por Encabezado y Cuerpo. Este tipo de documentos se genera comnmente por tablas bsicas relacionadas, la primera se encarga del encabezado como por ejemplo: Factura, Comprobantes contables y la segunda tabla se refiere a los renglones o cuerpo que conforman el documento, como por ejemplo: Renglones de la factura, Asientos Contables, entre otros. Tambin la tabla del encabezado y la tabla del cuerpo se relacionan con otras tablas, ejemplo: Para la factura se relaciona con Clientes y los renglones se vinculan con productos. Para iniciar el formulario, empleamos la funcin DOCENC que devuelve el objeto definido en la clase tDOCENC.
DOCENC(cTitle,cForm,cFileEdt) Parmetros: cTitle Ttulo del formulario, puede ser Titulo cForm Nombre del objeto para el formulario, ejemplo: oForm cFileEdt Nombre del fichero donde para almacenar los parmetros de los controles.

Valores o Data de la Clase lBar Indicar con .T. que Incluya las opciones de navegacin mediante la barra de botones. cScope Indica el filtro para la tabla del encabezado, realiza Where en la sentencia SQL.Ejemplo

Manual del Usuario

Captulo VI. Pag: 46

Programacin
DOC_CODSUC=00001 Indica filtro para el proceso de bsqueda mediante la clusula WHERE de la sentencia SQL. Ejemplo: DOC_CODSUC=00001 AND DOC_TIPTRA=D Contiene lista de campos para validar la no repeticin del registro y vinculo con las tablas que conforman el cuerpo o grid. Nombre del programa DpXbase que contiene las funciones que sern ejecutadas. Objeto referido a la clase TXSCROLL Objeto de la Barra de Mensajes. Objeto ttable de la Tabla de datos para el encabezado. Ventana MDI de estilo CHILD que realiza el control del formulario. Ventana de tipo dialogo contentiva de los controles del formulario. Objeto script que ejecutar las funciones en DpXbase Control TBAR que contiene los botones con las opciones del formulario. Lista de Botones para el modo navegacion Lista de Objetos de Grids que conforman el cuerpo del documento. Lista de Botones para el modo edicin Indica el estado de la opcin: 0=Navegacin 1=Incluir 2=Consultar 3=Modificar 4=Buscar 5=Eliminar Nombre del archivo para presentar en browse los datos de la tabla y hacer bsquedas. Nombre de la Funcin que se ejecuta antes de realizar la grabacin del registro. Nombre de la funcin que se ejecuta luego de grabar el registro. Indica si el registro ha sido grabado. Permiso para Incluir Permiso para Consultar Permiso para Modificar Permiso para Eliminar Permiso para Imprimir Nombre singular para 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,nLeft,nWidth,nHeight Define en pixel el area del ) formulario. Manual del Usuario Captulo VI. Pag: 47

Programacin Activate(bInit,bEnd) Activa la ventana del formulario, bInit es bloque de cdigo de ejecucin final y bEnd se refiere a la condicin de salida. SetIncremental(cField,cWhere,cNum Establece los datos que ero) generan campos incrementales. Campo, condicin y valor inicial BuildIncremental(lSave) Genera valor incremental segn los valores establecidos en SetIncremental() Printer() Ejecuta la funcin de impresin definida en la funcin PRINTER del script. SetTable(cTable,cPrimary,cWhereRe Asignar tabla con el cord) formulario, cTable=Nombre de la tabla cPrimary=Campo Unico. cWhereRecord=Filtro o registros visibles. GridEdit(cTable , cLinkdHead , Crear objeto Grid. cLinkGrid , cSql ) cTable= Tabla asociada o tabla hija. cLinkHead= Campos del encabezado que enlaza la tabla hija. cLinkGrid: Campos de la tabla hija que se enlazan con los campos de la tabla del encabezado. PreDelete() Ejecuta proceso previo para borrar registro. Si devuelve .F. no se ejecuta borrar. SetScope(cScope) Cambia el filtro de la tabla encabezado. Presa Get(cVarName) ve() Valida el proceso de grabar. Ejecuta la funcin PRESAVE declarada en cPresave antes de grabar el registro. Si devuelve .F. no se graba. Manual del Usuario Captulo VI. Pag: 48

Programacin

Get(cVarName) Set(cField,uValue) AddBtn(cFile,cText,cWhen,cAction,c Find)

AddBtnEdit(cFile,cText,cWhen,cActi on,cFind)

SetMemo(cField,cTitle,nTop,nLeft,n Width,nHeight)

ListBrw(cFileBrw)

Obtiene el valor de una variable o Campo. Asigna valor a una variable o Data del encabezado. Agrega un Nuevo botn en la barra de botones para la navegacin del formulario. cFile=Archivo BMP cText=Mensaje Tooltip cWhen=Condicin de activacin. cAction=Proceso que debe ejecutar cFind = Identificacin del Botn Agrega un botn cuando se active el modo de edicin (Incluir o Modificar) cFile=Archivo BMP cText=Mensaje Tooltip cWhen=Condicin de activacin. cAction=Proceso que debe ejecutar cFind = Identificacin del Botn Agrega el botn Campo memo en la barra de opcin para el modo edicin Incluir o Modificar. cField=Indica el campo que hace referencia con la tabla DPMEMO cTitle = Titulo de la ventana. nTop,nLeft,nWidth,nHeight , rea visual en pxel para la caja de dialogo sobre la ventana principal oDp:oFrameDp Realiza la presentacin lista de campos mediante Captulo VI. Pag: 49

Manual del Usuario

Programacin archivo *.brw data ::cList segn

GRIDEDIT(CTABLE , CLINKDHEAD , CLINKGRID , CSQL )


Genera el cuerpo del documento conformado por columnas. oTable oBrw oScript Objeto TTabla referida a los datos del gris, se obtiene de la data cSql enviada por GRIDEDIT Objeto de la clase xBrowse que realiza la navegacin de los datos, dibuja las lneas y columnas. Objeto script que realizar las ejecucin de funciones DpXbase, como por ejemplo: Pregrabar, Load, PostGrabar. Objeto del encabezado mediante la clase TDOCENC. Objeto oDlg contenedor de controles. Nmero de la lnea del Gris basado en xBrowse Color RGB para la barra indicadora vertical Color RGB para las lneas impares. Color RGB para las lneas pares. Color RGB para el texto de las casillas Color RGB para el texto marcado para buscar. Ancho de los botones de las opciones. Alto de los botones de las opciones. Tipo de Botn: 0=Ninguno 1=Bmp 2=Text Indica la columna que est en edicin

oHead oDlg nRowSel nRecSelColor nClrPane1 nClrPane2 nClrText nClrFind nBtnWidth nBtnHeight nBtnStyle nColEdit

Manual del Usuario

Captulo VI. Pag: 50

Programacin

ARCHIVOS DE AYUDA
Estn ubicados en la carpeta HELP\ de la aplicacin, acepta archivos de ayuda HLP y CHM. Est compuesto por dos tipos de archivos Tradicionales HLP que componen la ayuda ofrecida por las libreras FiveWin y estas no forman parte de la licencia. FIVEWIN.HLP FWCMD.HLP FWCMD.HLP FWFUN.HLP DPXFUNCTION.CH M GENERADORRPT. CHM Conceptos de FiveWin Clases, mtodos y data. Comandos Funciones de FiveWin Funciones Estndar DpXbase Generador de Reportes Datapro

El segundo conjunto de archivos de extensin CHM, contienen documentacin referida a la aplicacin datapro y se compone de los siguientes archivos. GeneradorRPT.C HM Programacin.C HM Capitulo[n].CHM Generador de Reportes. Programacin [n] se refiere al nmero del capitulo y cada uno se refiere a cada aplicacin del sistema. El Capitulo1.chm se refiere al proceso de instalacin y configuracin del sistema. Para facilitar los tpicos en cada captulo su nombre debe ser asociado en cada tabla y en caso de referirse a algn proceso se identificar segn la posicin del men: Ejemplo: Aplicacin+Vertical+Horizontal. Cada aplicacin esta asociada a un capitulo[n].chm y cada tabla tambin est asociada a una aplicacin por ello es posible asociarlas y activar la ejecucin del archivo de ayuda correspondiente al editor de registros que muestra el contenido de una tabla o un formulario para la carga de datos. Captulo VI. Pag: 51

Manual del Usuario

Programacin

CLASES PROPIETARIAS DATAPRO


Conforman un conjunto de clases que generan objetos para funciones especficas para Datapro.

TPUBLIC
Esta clase genera un objeto en pblico que est disponible en todo el sistema y tiene como finalidad almacenar todos los valores que el sistema necesita para su funcionamiento tcnico y conceptual. Este novedoso modelo de datos es altamente productivo al evitar el uso excesivo de memoria para declarar variables pblicas. DpXbase provee el objeto <oDp> desde que arranca el sistema y contiene toda la informacin referida a la configuracin del sistema, por ejemplo: oDp:cEmpresa: Nombre de la Empresa. oDp:cDsnData : Nombre del DSN de Datos de la empresa Activa. oDp:cDsnConfig: Nombre del DSN de Datos de la base de datos de configuracin. oDp:cUsuario: Cdigo del usuario que accede al sistema. oDp:dFecha: Fecha del Sistema. La asignacin de valores se realiza en forma directa oDp:xValor:=Nuevo Valor, los valores de <oDp> son Virtuales, es decir; no estn definidos en la Clase sino; se asigna en forma dinmica. Ejemplo: oDp:cMiDato:=Cualquier Dato MsgAlert(oDp:MiDato) Mostrar la ventana de dialogo Alert indicando Cualquier Dato) El programa DPINI es la primera ejecucin DpXbase que se realiza al iniciar Datapro. Aqu se asignan la mayora de valores que definen la ejecucin y/o presentaciones del sistema. Como por ejemplo el tamao de los botones

Manual del Usuario

Captulo VI. Pag: 52

Programacin Mtodos: GET(cVarName). Obtiene el Valor de un DATA del Objeto, segn la identificacin solicitada en <cVarName>, ejemplo: oDp:Get(cEmpresa), igualmente puede ser oDp:cEmpresa. ADD(cVarname,uValue). Genera una nueva DATA Virtual dinmicamente y asigna el valor, si cVarName ya existe omite la solicitud. Ejemplo: oDp:Add(cEmpresa,Nuevo Valor), tambin puede ser: oDp:cEmpresa:=Nuevo Valor SET(cVarName,uValue): Asigna un valor a una Data. Si no existe es agregada automticamente. Tambin puede ser oDp:cEmpresa:=Nuevo Valor. Si desea conocer todos los valores del objeto oDp, ejecute el programa INSPET escrito en DpxBase.

TTABLE
Es una clase propietaria de DpXbase que accede a consultas SQL empleando la funcin OpenTable(cSql,lRead) que devuelve un Objeto contentivo de la consulta SQL al estilo de datos RDD (xBase). Ttabla hereda todos los campos de la estructura en forma dinmica permitiendo navegar en cada registro y conocer el contenido de cada campo, ejemplo: oCursor:CAMPO. Ttable es utilizada en toda la aplicacin para acceder a las consultas de la Base de Datos necesarias en los Browser, Formularios, Consultas e Informes. oTable:=OpenTable(SELECT CAMPO FROM XTABLA,.t.) MsgAlert(oTable:CAMPO) // Muestra el contenido del CAMPO oTable:End() Tambin puede manejar campos virtuales con la finalidad de redisear la consulta, ejemplo: oTable:Replace(CAMPONUEVO,oCursor:Monto*2) , genera un nuevo campo llamado CAMPONUEVO que se deriv de la expresin: oCursor:Monto*2 Sintaxis: Ttable():New(cSql)

Manual del Usuario

Captulo VI. Pag: 53

Programacin

Datos de la Clase TTABLE aDataFill: Un es arreglo multidimensional que contiene en forma bidimensional el contenido de la consulta SQL. Cada lnea representa un registro y cada columna representa un Campo. Para copiar aDataFill debe utilizar aData:=ACLONE(oTable:aDataFill). Si desea visualizar su contenido puede utilizar ViewArray(oCursor:aDataFill) aFields: Contiene informacin de la estructura de la Tabla, esta compuesta por lneas y columnas , cada lnea representa y cada columna representa la estructura de los campo: Nombre, tipo, longitud y Decimales. oOdbc: Contiene el Objeto de la conexin DSN donde pertenece la tabla. Tambin es posible utiliza los mtodos de esta clase: oCursor:oOdbc:Execute(<cSQL>) Mtodos de la Clase TTABLE Eof() : Determina si la lectura a llegado al ltimo registro de la consulta. Goto(<nRecord>) : Apunta al registro <nRecord> de la Consulta. GoTop() : Posiciona el primer registro de la consulta. GoBottom(): Posiciona el Ultimo Registro de la Consulta. FieldGet(<nField>): Obtiene el Valor de campo segn la posicin del campo. <nField>, puede ser el nmero del campo o nombre del campo. FieldName(<nField>): Devuelve el Nombre del campo segn el nmero o posicin del campo. RecCount(): Indica la cantidad de lneas o registros del cursor o consulta. RecNo(): Indica la posicin del registro del cursor.

Manual del Usuario

Captulo VI. Pag: 54

Programacin FCount(): Determina la cantidad de campos utilizados por la consulta. DbSkip(<nSkip>): Permite (Ascendente/Descendente) sobre el cursor. navegar

Append(): Prepara el cursor para realizar la sentencia INSERT INTO. Replace(cField,uValue): Reemplaza el valor de la columna (Campo) identificada con <cField> segn el valor de <uValue>. Commit(): Ejecuta el comando INSERT INTO para agregar un nuevo registro en la tabla, previa preparacin con los mtodos append() y replace(). Commit(<cWhere>): Ejecuta el comando UPDATE para actualizar uno o varios registros segn la clusula WHERE, previa preparacin del mtodo Replace(). CtoDbf(cFile): Crea una tabla en formato DBF/FPT con el contenido del Cursor. Es necesario que las consultas que utilicen funciones, representen los resultados a travs de etiquetas. Ejemplo SELECT MAX(XCAMPO) AS CAMPO , la columna MAX(XCAMPO) ser representada por CAMPO. Browse(): Muestra el Contenido de la Consulta mediante una ventana MDI. Execute(<cSQL>): Ejecuta un comando SQL directamente con la conexin del Servidor de la Base de Datos. Ejemplo para agregar un nuevo registro:
#INCLUDE "DPXBASE.CH" PROCE MAIN() LOCAL oTable oTable:=OpenTable(SELECT * FROM XTABLA,.F.) oTable:Append() oTable:Replace(CAMPO1,Valor 1) oTable:Replace(FECHA ,DATE()) oTable:Commit()

Manual del Usuario

Captulo VI. Pag: 55

Programacin
oTable:End() RETURN

En este ejemplo se puede observar que el cursor <oTable> se requiere sin datos, por esta razn la funcin OpenTable(SELECT * FROM XTABLA,.F.).Solicit a travs de .F. el curso en forma vaca, debido a que solo es necesaria la estructura de la tabla y como ser realizado el proceso de inclusin no es necesario leer datos de la tabla. Si se requiere buscar informacin en la misma tabla para agregar un nuevo registro como sucede en los casos de numeracin de documentos, podemos usar la siguiente sintaxis:
#INCLUDE "DPXBASE.CH" PROCE MAIN() LOCAL oTable,xValor,nLen xValor:=SQLGET(XTABLA,MAX(XCAMPO)) xValor:=VAL(xValor) oTable:=OpenTable(SELECT * FROM XTABLA,.F.) nLen :=oTable:FieldLen(XCAMPO) xValor:=STRZERO(xValor+1,nLen) oTable:Append() oTable:Replace(CAMPO1,xValor) oTable:Replace(FECHA ,DATE()) oTable:Commit() oTable:End() RETURN

El mtodo commit() construye la real sentencia SQL para la insercin del registro de la siguiente forma:
INSERT 2005) INTO XTABLA (CAMPO1,FECHA) VALUES (0001,3005-05-

TTable, utiliza las tablas declaradas en el diccionario de datos que contiene el DSN o Base de datos relacionada, por tal motivo no es obligatorio indicar la Base de datos donde en encuentra la tabla, no obstante es posible indicar la base de datos o agregar una nueva tabla en forma directa.

Manual del Usuario

Captulo VI. Pag: 56

Programacin

Agregar una nueva Tabla al diccionario de datos:


ADDTABLE("0998","MITBLE",oDp:cDsnData,.F.)

Adiciona la tabla MITABLE (que debe existir) previamente en la base de datos oDp:cDsnData (esta es la base de datos activa segn la empresa seleccionada). Si desea crear la tabla puede hacerlo de la siguiente manera:
LOCAL oServer,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","MITBLE",oDp:cDsnData,.F.) // Abre el Cursos de Datos o Tabla oTable:=OpenTable(MITABLE,.F.) oTable:Append() oTable:Replace(CAMPO,DIEZ) // Graba el Registro mediante INSERT INTO MITBLE oTable:Commit() // Exporta los datos hacia DBF oTable:CTODBF(MITABLE.DBF) otable:End()

Acceso a tablas indicando la Base de Datos.


LOCAL oDB,cSql,otable // Abre la Base de Datos SGE0001 (Debe Existir) oDB:=OpenOdbc(SGE0001) oTable:=OpenTable(MITABLE,.T.,oDB) // Muestra los Datos oTable:Browse() otable:End()

Manual del Usuario

Captulo VI. Pag: 57

Programacin Acceso a tablas indicando la Base de Datos sin revisar el diccionario de Datos, as evita utilizar la funcin ADDTABLE("0998","MITBLE",oDp:cDsnData,.F.), ejemplo:
LOCAL oDB,cSql,otable // Abre la Base de Datos SGE0001 (Debe Existir) oDB:=OpenOdbc(SGE0001) oTable:=OpenTable(MITABLE,.T.,oDB,.F,) // Muestra los Datos oTable:Browse() otable:End()

TDPEDIT
Es una clase DpXbase que permite disear formularios de tipo (MDI) en forma declarativa, es decir a travs de comandos xbase para la declaracin de Controles que en tiempo de ejecucin puedan ser rediseados en forma visual. El formulario acepta como mtodos virtuales todas las funciones definidas con FUNCTION en el mismo programa DpXbase, igualmente permite la asignacin de Data en forma dinmica con tal solo ejecutar la declaracin oForm:nVariable:=100 Ejemplo
#INCLUDE "DPXBASE.CH" PROCE MAIN() LOCAL oFont DEFINE FONT oFont NAME "Arial" SIZE 0, -12 BOLD ITALIC

oFrm:=DPEDIT():New("Titulo","Fichero.edt","oFrm" , .T. ) oFrm:cVarName:=SPACE(20) oFrm:nValor :=100 oFrm:dFecha :=oDp:dFecha @ 0,0 SAY " Prueba de Texto "; SIZE 120,10 RIGHT; COLOR CLR_HBLUE,CLR_YELLOW

@ 2,03 GET oFrm:oNombre VAR oFrm:cVarName; OF oFrm:oDlg; SIZE 50,10;

Manual del Usuario

Captulo VI. Pag: 58

Programacin
FONT oFont; VALID oFrm:MyValid() XSAY("Nombre") @ 4,03 GET oFrm:oValor VAR oFrm:nValor; PICTURE "999999.99"; SIZE NIL,10 RIGHT; FONT oFont; WHEN !Empty(oFrm:cVarName) XSAY("Valor") @ 6,03 BMPGET oFrm:oFecha VAR oFrm:dFecha; PICTURE "99/99/9999"; NAME "BITMAPS\Calendar.bmp"; ACTION LbxDate(oFrm:oFecha,oFrm:dFecha); SIZE 50,10; FONT oFont; WHEN !Empty(oFrm:cVarName) XSAY("Fecha") @ 6,04 BUTTON " Aceptar "; SIZE 36,12; ACTION oFrm:Aceptar() @ 6,15 BUTTON " Cerrar "; SIZE 36,12; ACTION oFrm:Close() oFrm:Activate() RETURN FUNCTION MyValid() IF Empty(oFrm:cVarName) MensajeErr("Nombre no Puede Estar Vaci") RETURN .F. ENDIF RETURN .T. FUNCTION XSAY(cText) LOCAL oObj oObj:=ATAIL(oFrm:oDlg:aControls) @ oObj:nTop-9,oObj:nLeft SAY cText PIXEL; SIZE 40,8

Manual del Usuario

Captulo VI. Pag: 59

Programacin
RETURN .T. FUNCTION ACEPTAR() MsgAlert("Aqu se ejecuta el proceso") RETURN .T.

Mtodos de la clase New(<cTitulo>,<cFichero>,<coFrm>,<lWindows>): Inicia la construccin del formulario. cTitulo: Nombre del ttulo de la ventana. cFichero: Nombre del fichero con extension (.edt) y ubicacin forms\ contentiva de los parmetros (linea,columna,alto,ancho, color fondo y color texto) de cada control del formulario. coForm: Nombre de la variable que contiene e identifica el formulario. lWindows: Si es verdadero <.T.> genera la ventana del formulario, necesario para declarar los controles @ Lin,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). El formulario asume virtualmente los datos del cursos segn los nombres de los campos para fcil utilizacin. Si el cursos se deriva de una consulta de productos oCursor:=oTable(SELECT * FROM DPINV, .F. ), el formulario asume las declaracin de variables: oForm:INV_CODIGO, oForm:INV_DESCRI, de esta manera el programador puede utilizar controles (GET) para editar su valores y mediante el mtodo SAVE() del formulario los valores son almacenados en la Tabla. Si oForm:nOption=1 se indica que se desea incluir , si oForm:nOption=3 se indica que los datos sern modificados. El metodo Save() ejecutar previamente la funcin PRESAVE (que debe estar declarara en el formulario) con la finalidad de realizar verificaciones antes de grabar y PRESAVE devuelve .T. ser grabado el registro y luego ser ejecutada la funcin POSTSAVE para Manual del Usuario Captulo VI. Pag: 60

Programacin realizar evaluaciones luego de grabar, si POSTSAVE devuelve .F. el sistema ejecutar ROLLBACK de la base de Datos para deshacer el nuevo registro agregado o modificado. CreateWindows(): Dibuja la ventana MDI (oWnd) y el Dialogo (oDlg) para controles incrustado y dependiente de MDI. Windows() no es necesario si el parmetro <lWindows> es .T. en la construccin del formulario con NEW(). Todos los controles deben ser definidos despus de ejecutar el mtodo Windows debido a que ::oDlg es el contenedor por defecto de todos los controles. Activate(bInit,bEnd,bResize): Presenta en el video y activa la ejecucin del formulario. bInit: Bloque de cdigo de iniciacin y previa ejecucin de la ventana, puede ser utilizado para llamar a un mtodo virtual (oFrm:xUDFunction) para crear barra de botones o ejecuciones previas a la presentacin del formulario. bEnd: Bloque de Cdigo que debe ejecutarse al cierre del formulario, si este devuelve .f., el formulario no puede ser cerrado. Esta utilidad es de gran ayuda para realizar validaciones de cierre. bResize: Bloque de Cdigo que se ejecuta cuando el tamao de la ventana es reajustado con el Mouse. Data de la Clase: oDlg: Nombre del Objeto Dialogo contenedor de Controles oFrm:oDlg:aControls. Todos los controles (GET,SAY,COMBOBOX, Etc) se crean indicando por defecto a oDlg como contenedor. 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, restaurar, ajuste de tamao y permitir el uso en forma MDI. oCursor: Contiene el objeto del cursor SQL de la consulta asociada con el formulario.

Manual del Usuario

Captulo VI. Pag: 61

Programacin bValid: Bloque de cdigo que permite validar el cierre del formulario, puede evitar salirse con [X] de la ventana MDI. lActivate: Indica si el formulario ha sido Activado o ejecutado el mtodo Activate(). lEscClose: Indica con .T. si el formulario puede ser cerrado con la tecla ESC. lMsgBar: Con .F. suprime la barra de mensajes ubicada en la parte inferior del dialogo. cPrint: Contiene el nombre de la funcin definida en el programa DpXbase que se encarga del proceso de impresin. cDelete: Indica el nombre de la funcin que realiza el proceso de borrado. Si devuelve .F. no realiza el borrado. cList: Nombre del Fichero *.BRW (Browse) que realiza muestra vertical del datos del registro. cPreSave: Nombre de la funcin que se valida el proceso de grabacin del registro, en caso de ser .F. no realiza la accin. cPostSave: Nombre de la funcin que se ejecuta luego de grabar el registro.

CONTROLES DE FORMULARIOS.

LA

LIBRERA

FIVEWIN

PARA

Constituye un conjunto de controles de gran uso para la definicin del formulario. La sintaxis clsica de la librera fivewin (www.fivetechsoft.com) es utilizada en DpXbase logrando la mayor compatibilidad posible y aprovechamiento de toda la documentacin existente c:\dpnmwin\help\fwcmd.hlp debido a que DpXbase utiliza al mximo el potencial de sta fabulosa librera. Todos los controles definidos deben ser asociados slo con el formulario.

Check Box (Casilla de Seleccin)

Manual del Usuario

Captulo VI. Pag: 62

Programacin OFrm:lVar:=.T.
@ 02,02 CHECKBOX oFrm:oChk VAR oFrm:lVar; PROMPT " CheckBox " ; OF oFrm:oDlg; SIZE 90,10; ON CHANGE {||.T.}; VALID .T.; COLOR NIL,oDp:nGris; MESSAGE "Indique el valor del CheckBox"; WHEN .t.

Button (Botones Simples)


@ 01,01 BUTTON oFrm:oBtn; PROMPT "Cerrar "; SIZE 36,12; ACTION oFrm:Close(); OF oFrm:oDlg ; MESSAGE "Cerrar Formulario"; WHEN .t.;

CANCEL

SBUTTON (Boton con Imagen BMP). Presenta el control Botn dibujado


mediante tres botones BMP, Presentacin, Pase del Mouse y Accin.
@09, 43 SBUTTON oFrm:oBtn ; SIZE 42, 23; FILE "BITMAPS\XSALIR.BMP" NOBORDER; LEFT PROMPT "Salir"; COLORS CLR_BLACK, { CLR_WHITE, CLR_HGRAY, 1 }; ACTION (oFrm:Cancel()) CANCEL OFrm:oBtn:lCancel:=.T. OFrm:oBtn:cToolTip:="Cerrar Formulario" OFrm:oBtn:cMsg :=Mensaje en la Barra Inferior

Get (Introducir Datos)


oFrm:cVar:=SPACE(40) @ 1, 1 GET oFrm:oGet VAR oFrm:cVar; OF oFrm:oDlg; SIZE NIL,10; MESSAGE "Indique el valor del Campo"; WHEN .t.; VALID;

Manual del Usuario

Captulo VI. Pag: 63

Programacin
MensajeErr("No puede estar Vacio,; vacio",nil,{||!Empty(oFrm:cVar)}); ON CHANGE .t.

// Get para Campos Numricos


oFrm:nValor:=1000 @ 4, 10 GET oFrm:oGet VAR oFrm:nValor; PICTURE "99,999,999.99"; RIGHT; OF oFrm:oDlg; SIZE NIL,10; MESSAGE "Indique el Monto"; WHEN .t.; VALID .t.; ON CHANGE .t.

Get (Introducir Datos en Campo MEMO)


oFrm:cMemo:= "Campo Memo, Texto" oFrm:cMemo:=Alltrim(oFrm:cMemo) @ 5, 5 GET oFrm:oGet VAR oFrm:cMemo; MEMO; HSCROLL; OF oFrm:oDlg; SIZE 100,100; MESSAGE "Introduzca los textos"; WHEN .t.; ON CHANGE .t.

ComboBox (Cuadro Combinado)


oFrm:aLista:={"Lnes","Martes","Mircoles","Jueves","Viernes"}
oFrm:cLista:=oFrm:aLista[1] @ 5,15 COMBOBOX oFrm:oCbx VAR oFrm:cLista; ITEMS oFrm:aLista; OF oFrm:oDlg; ON CHANGE .T.; VALID .T.; FONT oFont; MESSAGE "Seleccione una Opcin"; WHEN .T.

Browse (Visualizacin y Edicin de Datos). El tamao del browse de se


define mediante el mtodo Move(nlin,nCol,nAlto,nAncho,.t.) en la clusula ON INIT del formulario (oFrm:Activate({|| oFrm:oBrw:Move(1,1,200,200,.t.)}) Manual del Usuario Captulo VI. Pag: 64

Programacin

oFrm:aData:=ASQL("SELECT CODIGO,APELLIDO,NOMBRE FROM NMTRABAJADOR") oFrm:oBrw := TXBrowse():New( oFrm:oDlg ) oFrm:oBrw:oFont := oFont // Recuerda Declarlo oFrm:oBrw:SetArray(oFrm:aData,.T.) oFrm:oCol:=oFrm:oBrw:aCols[1] oFrm:oCol:cHeader:="Cdigo" 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,; {0, iif( oBrw:nArrayAt%2=0, 15790320, 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 clusula (ON INIT) del dialogo, para lograrlo la clase TDPEDIT del formulario permite definir en el primer parmetro del mtodo Activate(bInit) la llamada al mtodo virtual o funcin donde se ejecuta la iniciacin del formulario.
#INCLUDE DPXBASE.CH PROCE MAIN() oFrm:=DPEDIT():New("Titulo","Fichero.edt","oFrm" , .F. ) oFrm:CreateWindow() oFrm:Activate({||oFrm:HacerBarra()}) RETURN FUNCTION HacerBarra() LOCAL oCursor,oBtn DEFINE CURSOR oCursor HAND DEFINE BUTTONBAR oFrm:oBar SIZE 38,38 OF oFrm:oDlg 3D CURSOR oCursor DEFINE BUTTON oBtn; OF oFrm:oBar;

Manual del Usuario

Captulo VI. Pag: 65

Programacin
NOBORDER; FILENAME "BITMAPS\XSALIR.BMP"; ACTION MensajeErr("Salir"),oFrm:Close() oBtn:cToolTip:="Salir del Formulario" RETURN .T.

MDULOS HRB
Son programas generados por el compilador harbour (www.harbourproject.org) y se ejecutan en forma similar a los programas en DLLS, estn 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. En la carpeta hrb ubicada dentro de la carpeta principal del sistema se encuentran los siguientes ficheros. Harbour.exe (Compilador 32 Bits) Build.bat (Fichero de lotes para compilar) Testhrb.prg (programa prg ejemplo) Programa test.prg // Ubicado c:\dpnmwin\hrb\test.prg #INCLUDE "DPXBASE.CH" MEMVAR oDp FUNCTION HRBtest(cText) MensajeErr(oDp:cEmpresa,cText) RETURN NIL // eof Pueden notar que el test.prg posee la funcin HrbTest() que puede ser ejecutada desde cualquier parte de DpXbase. La funcin HrbTest(), puede hacer llamadas a funciones propias de DpXbase MensajeErr y llamadas a procedimientos Dpxbase con tan solo indicar: EJECUTAR(XPROGRAMA,xValor)

Manual del Usuario

Captulo VI. Pag: 66

Programacin Para compilarlo, es necesario acceder a la carpeta c:\dpnmwin\hrb\ Ejecutar: BUILD TEST Build.bat se encarga de compilar el programa test.prg y generar c:\dpnmwin\test.hrb listo para ser cargado y utilizado desde DpXbase. Ejecucin de Funciones del HRB Es necesario cargar en memoria las funciones definidas en test.hrb, para ello utilizamos el siguiente ejemplo escrito en DpXbase.
#INCLUDE "DPXBASE.CH" PROCE MAIN() HRBLOAD("test.hrb") HRBTEST(Desde DpXbase) RETURN

Reglas generales: Las funciones no deben tener nombres similares a las funciones existentes en DpXbase. No deben declarar variables estticas, no deben definir clases para objetos. La principal funcin de los mdulos HRB es la definicin de funciones. Si al cargar el mdulo 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. Los mdulos HRB slo se generan desde la compilacin un programa PRG y no como los DLLs de los productos Datapro DOS que requeran compilacin y enlazamiento (Linkado) donde se podan involucrar varios programas *.PRG, archivos objetos *.OBJ y archivos de libreras *.LIB Que es mejor entre DpXbase y HRB? Ambos modos de trabajo tienen sus ventajas. La principal ventaja de los mdulos HRB est en la velocidad de ejecucin que es mucho mayor que DpXbase, adems la declaracin de variables locales son reales; permitiendo crear diversas instancias de controles como dilogos (no modales) o ventanas MDI. El programa fuente no es necesario para la ejecucin, lo cual permite proteger la propiedad intelectual del cdigo.

Manual del Usuario

Captulo VI. Pag: 67

Programacin DpXbase, posee su editor propietario y es ms cmodo, escribir, compilar y ejecutar. Siempre estar disponible el programa fuente. No permite crear instancias para dilogos no modales ni ventanas MDI, por ello siempre debe apoyarse en clases como TDPEDIT o TMDI.

UTILIZACION DE DESARROLLO.

OTRAS

HERRAMIENTAS

DE

DpXbase no pretende competir o desplazar herramientas o entornos de desarrollo de desarrollos como FoxPro o VisualBasic. Utilizando FoxPro: El modelo de datos que usa DpXbase es compatible con FoxPro, ambos utilizan tipos de datos: Carcter, lgico, memo, numrico y Date. Para ejecutar programas binarios (EXE) desde DpXbase es necesario que instale FoxPro versin 8. En la carpeta c:\dpadmwin\foxpro se encuentra el programa foxrun.prg que contiene un ejemplo funcional que lee parmetros creados desde DpXbase. Desde DpXbase, debe ejecutar el programa FoxRun con el siguiente parmetro.
// Este ejemplo est Vinculado con el Cliente 0000000001 // DPXBASE FUNCTION MAIN() EJECUTAR(FOXRUN,STRZERO(1,10)) RETURN

Tambin, para crear reportes, utilizando FoxPro con tablas DBF, puede utilizar el siguiente ejemplo:
//DpXbase FUNCTION MAIN() LOCAL oTable oTable:=OpenTable(SELECT oTable:CTODBF(DATOS.DBF) OTable:End() * FROM DPINV ORDER ON INV_CODIGO,.T.)

EJECUTAR(FOXRUN,DATOS.DBF) RETURN

UTILIZACION DE REPORTES DISEADOS CON FOXPRO.

Manual del Usuario

Captulo VI. Pag: 68

Programacin
Con el objetivo de brindarle mayor comodidad a usuario del fabuloso generador de reportes que provee el entorno de desarrollo FoxPro, hemos creado un pequeo programa FOXREP.EXE que incluye el cdigo fuente que permite conocer su contenido y ser adaptado para otros propsitos. Vinculacin de Reportes FRX con el generador de Reportes. De la misma forma en que se asocian los reportes diseados con Crystal Report (*.RPT), se deben asociar los reportes diseados con FoxPro, 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 diseador de reportes de FoxPro sobre las tablas temporales DBF ubicadas en la carpeta \CRISTAL y guarde el archivo de diseo preferiblemente con el mismo nombre de la tabla con extensin FRX y en la carpeta CRISTAL\. Para ejecutar el reportes diseado con FoxPro, primero debe asociarlo con el reporte, acceda al diseador de reportes de Datapro y seleccione la opcin Crystal Report, indica nuevo reporte e introduzca la denominacin del reportes Productos diseador con FoxPro y Nombre del archivo con su respectiva extensin y carpeta, ejemplo: C:\dpadmwin\crystal\dpinv.frx. Luego que el reporte posea la asociacin con diversas opciones de diseo, seleccione el reporte identificado con FoxPro en la lista identificada Diseo Cristal, seleccione la opcin Cristal Preview o Cristal Print y finalmente presione el Botn de Ejecucin.

Glosario de Trminos
UDF: User Define Function. Definicin otorgada a las definiciones creadas por el usuario. CURSOR : Respuesta recibida en un plano bidimensional (Lnea y Columnas) desde una consulta SQL. DSN: Data Source Name. Nombre de las conexiones ODBC con servidores de bases de datos, previamente definidas en orgenes de Datos ODBC de Herramientas Administrativas del Panel de Control de Windows. CLASE: Cdigo fuente o partitura de las acciones de un objeto, contiene: clase padre (opcional si hereda desde otro objeto), mtodos que indica lo que hace el objeto y Data que indica lo que tiene el objeto. Obligatoriamente debe poseer un mtodo constructor denominado NEW() y un Destructor denominado END(). METODO. Method de la clase. Conforman las funciones o actividades que realiza el objeto, en forma analgica puede ser comparada con las Manual del Usuario Captulo VI. Pag: 69

Programacin funciones estticas de un programa que solo se pueden usar desde el mismo programa donde fue declarada. Para utilizar el mtodo de una clase debe ser llamada indicando el nombre del objeto, seguido dos puntos y finalmente el nombre del mtodo con sus respectivos parmetros. Ejemplo: oObjeto:Metodo(uPar1,uPar2,uParn). Mtodo Virtual, ha sido una definicin adicional implantada en DpXbase. DATA: Valores o contenidos del Objeto se representan a travs de nombres vlidos como variables. Tambin puede ser definido como Lo que tiene el objeto. Ejemplo: Objeto:xData. OBJETO: Componente abstracto que realiza actividades segn las tareas definidas en los mtodos y valores almacenados en memoria (data). El objeto permite trabajar mltiples veces en forma simultnea (Instancias). Una clase puede ser definida a partir de otra clase aprovechando toda su partitura (herencia). FUNCTION: Definicin de un programa compuesto de parmetros, declaracin de variables, instrucciones, llamadas a otras funciones y que devuelven un valor. La funcin debe ser identificada con un nombre y debe recibir parmetros desde la instruccin que la ejecuta: Ejemplo: Sumar(10,20).
FUNCTION Sumar(nValor1,nValor2) RETURN nValor1+nValor2

ENLAZAMIENTO: Definicin del proceso final para la generacin de un programa ejecutable o DLL donde se utilizan programas objetos producidos por la compilacin y libreras contentivas de las funciones invocadas por los programas fuentes. COMPILACION: Proceso de conversin en archivo objeto (OBJ) a partir de las instrucciones escritas en forma (humana) por un programador. DLLS: Dynamic Link Library. 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. Otro uso de ficheros DLLs pueden estar compuesto de recursos compuestos por diseos de controles: Combobox, text, checkbox, etc

Manual del Usuario

Captulo VI. Pag: 70

You might also like