Академический Документы
Профессиональный Документы
Культура Документы
TABLA DE CONTENIDO
Programacin........................................................................................................................................................3
Ficheros..............................................................................................................................................................21
Aplicaciones o Modulo del Sistema....................................................................................................................21
Tabla de Datos.................................................................................................................................................22
Generador de Browses o Listas.....................................................................................................................23
Opciones Para los Campos..........................................................................................................................24
Men de Acceso...............................................................................................................................................26
Definicin del Men.....................................................................................................................................26
Programas Fuentes Dpxbase..........................................................................................................................27
Botones de la Barra del Men Principal.............................................................................................................30
Personalizar Mensajes en la Barra de Botones...............................................................................................30
Enlace Entre Tablas..........................................................................................................................................31
Otras Funciones..................................................................................................................................................31
Generador de Informes.....................................................................................................................................31
Diseo de Formularios......................................................................................................................................31
Continuidad en Datapro Para Tablas DBF..........................................................................................................34
Continuidad en el Lxico Xbase Desde los Productos DOS..................................................................................34
Componente Dataset........................................................................................................................................35
Clase Tdataset:............................................................................................................................................36
Funciones para Sentencias SQL........................................................................................................................38
Funciones para el Manejo de Datos...................................................................................................................39
Opentable(Csql,Ldata).................................................................................................................................39
Asql(Csql)...................................................................................................................................................39
Sqldelete(Ctabla,Cwhere).............................................................................................................................40
Sqlupdate(Ctabla,Ccampo,Xvalor,,Cwhere)....................................................................................................40
Sqlget(Ctabla,Ccampo,Cwhere)....................................................................................................................40
Dtosql(Dfecha).............................................................................................................................................40
Sqltodate(Cfecha)........................................................................................................................................41
Bdlist(Ctable,Afields,Lgroup,Cwhere).............................................................................................................41
Bdselect(Ctable,Afields,Lgroup,Cwhere)).......................................................................................................42
Objetos............................................................................................................................................................43
Archivos de Ayuda............................................................................................................................................45
Clases Propietarias Datapro................................................................................................................................46
Tpublic............................................................................................................................................................46
Ttable..............................................................................................................................................................47
Programacin
Tdpedit...........................................................................................................................................................52
Mdulos HRB.......................................................................................................................................................57
Glosario de Trminos..........................................................................................................................................61
Programacin
DICCIONARIO DE DATOS:
Es una conjunto de metadatos relacionados de manera jerrquica que contiene toda la informacin y
funcionalidades tcnicas de la base de datos del sistema AdaptaPro y bajo este concepto se
fundamenta todos las actividades del sistema: Introduccin de Datos, Procesos e y emisin de
informacin.
En wikipedia hemos encontrado esta descripcin muy cercana a la naturaleza de del diccionario de
datos de AdaptaPro.
HTTP://ES.WIKIPEDIA.ORG/WIKI/DICCIONARIO_DE_DATOS
BASE DE DATOS:
Es un conjunto de Datos pertenecientes a un mismo contexto de manera:
Jerrquica y Relacional.
Estructurados,
AdaptaPro
Sistemas Clsicos
Programacin
Optimizacin
Actualizaciones
de la base de
datos
Adaptaciones
Flujo de
Informacin y
Jerarquizacin
Interaccin del
Programacin
sistema con el
diccionario de
Datos
Actualizacin
Selectiva
mediante
PLUG-IN
Fortalezas:
Autonoma: El usuario podr lograr autonoma tecnolgica debido a que no depende del
fabricante (AdaptaPro) para realizar nuevas incorporaciones o adaptaciones del sistema.
AdaptaPro est altamente documentado que permite rpido conocimiento del diseo de la
base de datos.
Reduccin de tiempo de Desarrollo: Gracias al diccionario de datos, el sistema posee un
asistente que permite crear funcionalidades y generar cdigo fuente sin necesidad de tener
conocimientos avanzados de programacin ahorrndose horas de programacin, adems el
sistema posee funcionalidades que permite exportar e importar componentes del diccionario
de datos.
Reduccin de Costos: La reduccin de costos es significativo debido al corto de desarrollo
y las facilidades de implementacin evitando: Traslados, instalaciones manuales y dems
complejidades involucrada vinculadas para implementar nuevas funcionalidades. Gracias al
concepto uniforme del diseo de la base de datos es posible agregar ms funcionalidades
sin necesidad de realizar nuevas funcionalidades en los programas fuentes.
Uniformidad en el diseo: Todas las aplicaciones del sistema obedecen al mismo patrono
de diseo de la base de datos partiendo del siguiente principio:
Programacin
Tabla
Maestra
Modelo
Productos
DPINV
DPINVTRAN
Clientes
Proveedor
Caja
Bancos
DPCLIENTES
DPPROVEEDOR DPCAJA
DPCTABANCO
DPTIPDOCCLI DPTIPDOCPRO DPCAJAINST DPBANCOTIP
Transaccin
DPMOVINV
DPDOCCLI
DPDOCPRO
DPCAJAMOV
Contabilidad
DPCTA
(Segn
Asientos)
DPCTABCOMOV DPASIENTOS
Consulta SQL
SELECT MOV_CODIGO,
SUM(MOV_CANTID*MOV_LOGICO) FROM DPMOVINV
WHERE MOV_INVACT=1
GROUP BY MOV_CODIGO
Inventario Fisico
SELECT MOV_CODIGO,
SUM(MOV_CANTID*MOV_FISICO) FROM DPMOVINV
WHERE MOV_INVACT=1
GROUP BY MOV_CODIGO
Funcionalidades genricas:
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.
Programacin
2. Acceso a Bases de Datos de tipo SQL a travs de ODBC o Nativo MySQL. 5.x mediante
la clase EAGLE escrita en lenguaje C y mediante el uso de funciones incluidas en el
archivo de libmySQL.dll (Suministrado por MySQL 5.x)
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 (Diccionario de Datos) que permite definir todas las tablas de tipo SQL que
sern utilizadas por el sistema de manera Jerrquica: Campos, ndices, Claves Primarias y
referencias entre tablas. Adems; importa estructuras desde formatos DBF.
XBASE:
xBase es el trmino genrico para todos los lenguajes de programacin que derivan del lenguaje de
programacin dBase, originalmente publicado por Ashton-Tate. Existen indicativos de que existi un
predecesor no comercial.
La 'x' significa que existen diversos intrpretes y compiladores para este lenguaje. Una lista
incompleta sera:
-
Fuente: http://es.wikipedia.org/wiki/XBase
HARBOUR: (Creador: Antonio Linares)
Harbour es un moderno lenguaje de programacin que nace como compilador del lenguaje de
programacin Clipper (una variante de xBase) desarrollado como software libre. Su objetivo inicial
fue soportar todas las sentencias y extensiones de la versin ms popular del compilador, Clipper
5.2. Harbour es adems un compilador multiplataforma, capaz de compilar para y ejecutarse en DOS
(MS-DOS, DR-DOS, etc), Microsoft Windows, OS/2, GNU/Linux, varias variantes de Unix, varios
Programacin
descendientes de BSD, Mac OS X, MINIX 3,Windows CE, Pocket PC, Symbian, iPhone OS, QNX,
VxWorks, OS/2 BeOS/Haiku, AIX utilizando el mismo cdigo fuente y ficheros de base de datos.
Fuente: http://es.wikipedia.org/wiki/Compilador_Harbour
REGLAMENTO PARA LA ASISTENCIA DE CURSOS (DPXBASE)
Requisitos:
Conocimientos: Previos programacin en cualquier lenguaje de programacin o Excel
mediante (Frmulas o Macros), dominio terico prctico en Bases de datos y Trminos del
argot informticos especficamente en el rea de desarrollo: Campos, Tipos de Campos,
Tablas de Datos, Tablas de ndices, Integridad referencial, Variables, Funciones, Tipos de
datos, Procedimientos, Arreglos (Vectores) y Objetos.
Conocimientos del Diccionario de Datos: Mediante el curso de Diccionario de datos el
usuario podr conocer y documentarse sobre la estructura de datos y diseo funcional de la
base de datos para lograr realizar consulta de la base de datos, incluir, eliminar y modificar
(Actualizar) registros.
Lectura Previa de Documentacin: Antes que el participante asista al curso es necesario
la lectura de los manuales de programacin y documentacin de ayuda (en formato CHM)
de todo el contenido de los componentes de desarrollo incluidos en la arquitectura abierta
del Sistema AdaptaPro:
Funciones xBase
C:\dpadmwin\help\dpxfunction.chm
C:\dpadmwin\help\fivewin.chm
Comandos FiveWin
C:\dpadmwin\help\fwcmd.chm
Manual de Programacin
DpXbase
C:\dpadmwin\docs\dpxbase.doc
C:\dpadmwin\help\fwclass.doc
Funciones DpXbase
C:\dpadmwin\help\dpxbase.chm
Programacin
TDPEDIT()
Formularios MDI
TTABLE()
XBROWSE()
TGET()
TSAY()
TBMPGET()
TCOMBOBOX()
Programacin
genera un archivo de extensin .DBF (Dbase File) contentivo de los registros y campos
que sern mostrados mediante el formato diseado con Crystal Report Version 8.0.
Origen de los Datos para Crystal:
1. Formatos de Documentos: Se genera desde una tabla en formato .DBF
generada desde un Programa escrito mediante el lenguaje de DpXbase. En caso que
el formato de Crystal Report requiera un campo nuevo, es necesario adaptar la
consulta SQL y/o instrucciones del programa DpXbase.
2. Formatos de Reportes: Se genera mediante una tabla en formato .DBF creado
con el cursor mediante sentencia SQL indica en un reporte construido mediante el
generador de reportes AdaptaPro.
Tipo de Formato Segn Destino:
Normalizado: Cuando se refiere a una necesidad particular de cada empresa y este sede
realizar partiendo de una copia de un formato ya creado o crear uno nuevo y este debe
poseer un prefijo diferente al texto DP*.*, para cumplir con esta norma es necesario
nombrar a cada formato en crystal segn las inciales del cliente, ejemplo: Organizacin
Kanguro, todos los formatos con crystal report seran denominados mediante el prefijo
OKFACTURA.RPT logrando facilitar una futura reinstalacin o actualizacin del sistema.
Estandarizado: Se refiere cuando se mejora, crea o corrige un formato en crystal report
que podr formar parte de los sistemas estndar AdaptaPro, estos debern previamente
consultado por el departamento de desarrollo de AdaptaPro para emitir recomendaciones y
exigencias. Este archivo debe ser creado con el prefijo DP, ejemplo: DPCBTEPAGO.RPT
(Comprobante de Pago). El tcnico debe agregar el formato crystal en el reporte DpXbase
que lo ejecuta y enviar para departamento de desarrollo (mediante correo) el reporte y su
respectivo reporte. Para as evitar tener reportes sin formatos crystal report y archivos de
formatos RPT (Crystal Report) sin reporte.
Formas de Diseo:
1. Diseo de Formato: Se refiere exclusivamente para la ubicacin de los campos en
el formato de crystal report segn indicaciones indicadas por el usuario.
2. Modificacin de la Tabla DBF con campos Existentes: Cuando se requiere
agregar uno o varios campos en la tabla DBF necesario para ser mostrados en el
formato crystal. Para este caso es necesario modificar la sentencia SQL que genera
la tabla DBF, si se refiere a un reporte, es necesario modificar el reporte y en caso
de ser un documento es necesario modificar el programa fuente DpXbase.
Programacin
Comentarios
Programacin
necesario para formalizar la satisfaccin del cliente. As se evita reclamos por incidencias
cuando algunos usuarios modifican los formatos y luego no contamos con formalidades
para emitir una respuesta.
Cantidad de Usuarios: Segn la cantidad de usuarios en donde ser instalado el sistema
depender el tiempo empleado para la entrega formal del mismo.
Recomendaciones: Para optimizar el tiempo de entrega, es necesario hacer la instalacin de
todos los formatos en una sola visita. Para evitar la instalacin en cada PC, es necesario
registrar cada formato, en la opcion Registro de personalizaciones ubicada en la seccion
Ficheros de la aplicacin Definiciones del Sistema. Esta opcion distribuye los formatos
de Crystal Report en todos los demas PC donde se ejecuta el sistema. Todo el personal
tcnico debe evaluar esta funcionalidad antes de ser utilizada con el cliente.
Cant/Horas
Programacin
izquierda, Titulo tamao de letra 11 negrita centrado, Fechas de Rangos centrado debajo del
Titulo tamao de letra 10 negrita,
Fecha, RIF de la empresa, Usuario y Sucursal la etiqueta de tamao 9 negrita y los datos
tamao 9 no negrita alineados a la derecha.
El titulo del detalle tamao 10 negrita el mismo colocarlo en recuadro redondeado color de
fondo gris claro, detalle tamao 10 no negrita separadas las columnas con lnea punteada
color gris.(Este tamao puede variar dependiendo de la cantidad de informacin que se
tenga que colocar en el reporte y esto conlleva a que la informacin se presente en el papel
en forma Vertical o Horizontal.
Como referencia con estos datos se puede tomar el reporte CLIDOC.rpt
Programacin
/*
------------------------------------------------------------*/
PROCE MAIN()
IF oDp:IsDef(cVariable)
MensajeErr(Variable cVariable no Existe)
ELSE
MensajeErr(Variable cVariable si Existe)
ENDIF
RETURN NIL
/*
------------------------------------------------------------*/
Programacin
INSPECCION DE OBJETOS:
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 nNumerico:=100
LOCAL cCaracter:=Caracteres
LOCAL dFecha:=DATE()
LOCAL lLogico:=.T.
LOCAL bBloq :={||NIL}
LOCAL aArray :={1,2,3,4,5}
LOCAL oObjeto:=OpenTable(SELECT * FROM DPINV)
Numricos,
variable.
Ejemplo para obtener datos de una cadena en formato Texto, para este caso, los datos obtenidos
mediante un archivo Texto desde la consulta del portar del Seniat.
El texto contiene
<?xml version="1.0" encoding="ISO-8859-1"?> <rif:Rif xmlns:rif="rif"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
rif:numeroRif="J312344202"><rif:Nombre>SERVICIOS INFORMATICOS DATAPRO
C.A. (SERVICIO INFORMATICOS DATAPRO,
C.A)</rif:Nombre><rif:AgenteRetencionIVA>NO</rif:AgenteRetencionIVA><rif:
ContribuyenteIVA>SI</rif:ContribuyenteIVA><rif:Tasa>75</rif:Tasa></rif:Ri
f>
Programacin
C$ABC
LEFT(ABCD,2)
RIGHT(ABCD,2)
SUBS(ABCD,2,2)
STRTRAN(ABCD,B,b)
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
DAY(),MONTH(),CMES(),DOW(),DTOC(),CTOD(), DTOS(), entre otras.
con
las
funciones
Lgicos:
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:={}
Programacin
{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.
Programacin
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)
Programacin
LOCAL nResp:=nValor1+nValor2
RETURN nResp
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.
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()
Operadores: Son un conjunto de smbolos utilizados para generar resultados aritmticos y/o
lgicos.
Programacin
LOCAL nMonto:=100+200
LOCAL bFecha:=DATE()+100
LOCAL cChar:=NETNAME()+ este es mi PC
? nMonto,dFecha,cChar
Relacionales: Utilizado para realizar comparaciones entre valores y generan valores lgicos .T.
Verdadero o .F. Falso.
Programacin
=
==
>
>=
<
<=
<>
$
Lgicos: Se encargan de realizar operaciones que generan resultados verdaderos y falsos con
diversas comparaciones relacionadas.
.AND.
.OR.
.NOT.
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
Programacin
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:={}
Rellenar un arreglo
Para rellenar el arreglo del carcter X:
AFILL(aArray,X)
? aData[1] // Muestra X
Programacin
//
Elimina
fsicamente
el
primer
Ordenar un Arreglo
ASORT(aData)
Buscar en la Lista.
ASCAN(aData,X)
//
Realiza
la
bsqueda
de
en
los
Programacin
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
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})
AADD(aData,{C,3})
AADD(aData,{B,4})
Aeval(aData,
{|a,n,b|
nTotal:=nTotal + b })
b:=iif(
a[1]=B,
a[2]
,0),
Programacin
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
Generando un valor de tipo Memo,
cChar:=cChar + CRLF + Nueva Lista
Programacin
Programacin
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
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
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
Programacin
LOCAL dFecha:=CTOD(01/01/2007)
? 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
Programacin
LOCAL dFecha:=CTOD(15/02/2007)
? FchFinMes(dFecha) // Muestra 28/02/2007
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
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:
Programacin
Programacin
se encuentran
necesidades.
en el fichero mysql\mysqlstart.bat.
FICHEROS
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 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.
Programacin
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 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;
Programacin
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.
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
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.
Programacin
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:
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?
Programacin
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
botn
Programacin
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.
Programacin
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) .
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
#define CLR_WHITE
65535
16777215
Programacin
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 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
Programacin
OTRAS FUNCIONES
GENERADOR DE INFORMES
Programacin
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
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.
Programacin
La siguiente imagen, muestra la posibilidad de cambiar el color del texto del control y
tambin la fuente de las letras.
Programacin
Programacin
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.
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 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.
Programacin
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 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
Programacin
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):
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():
Elimina un valor del DataSet y de la tabla, ejemplo: oDataSet:Del(cVarName)
DelGroup(cGroupName):
Elimina todos los componentes asociados a un grupo.
Load():
Carga todos los valores desde la tabla y generan los valores virtuales del Dataset
Programacin
Programacin
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.
Programacin
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
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:
Programacin
Programacin
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,NOMBRE,SALARIO)
Programacin
aList:=_Vector(cValue)
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)
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) )
Manual del Usuario
Programacin
VIEWARRAY(aArray)
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.
Programacin
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
Programacin
Windows(nTop,nLeft,nWidth,nHeight)
Activate(bInit,bEnd)
SetIncremental(cField,cWhere,cNumero)
BuildIncremental(lSave)
Printer()
SetTable(cTable,cPrimary,cWhereRecord)
PreDelete()
SetScope(cScope)
Presa Get(cVarName) ve()
Get(cVarName)
Set(cField,uValue)
AddBtn(cFile,cText,cWhen,cAction,cFind)
Programacin
AddBtnEdit(cFile,cText,cWhen,cAction,cFind)
SetMemo(cField,cTitle,nTop,nLeft,nWidth,nHeight)
ListBrw(cFileBrw)
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 archivo *.brw segn
data ::cList
Programacin
oDlg
nRowSel
nRecSelColor
nClrPane1
nClrPane2
nClrText
nClrFind
nBtnWidth
nBtnHeight
nBtnStyle
nColEdit
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.CHM
GENERADORRPT.CHM
Conceptos de FiveWin
Clases, mtodos y data.
Comandos
Funciones de FiveWin
Funciones Estndar DpXbase
Generador de Reportes Datapro
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.
Programacin
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
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)
Datos de la Clase TTABLE
Programacin
Programacin
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()
Programacin
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.
Programacin
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 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
Programacin
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"
oFrm:=DPEDIT():New("Titulo","Fichero.edt","oFrm" , .T. )
oFrm:cVarName:=SPACE(20)
oFrm:nValor :=100
oFrm:dFecha :=oDp:dFecha
@ 0,0
Programacin
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.
Programacin
Programacin
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.
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.
Programacin
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
Programacin
Programacin
ITEMS oFrm:aLista;
OF oFrm:oDlg;
ON CHANGE .T.;
VALID .T.;
FONT oFont;
MESSAGE "Seleccione una Opcin";
WHEN .T.
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()
Programacin
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;
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.harbour-project.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)
Programacin
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)
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
Programacin
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.)
Programacin
EJECUTAR(FOXRUN,DATOS.DBF)
RETURN
Programacin
Podemos hacer pruebas con las tablas del Sistemas de Gestione empresarial, la tabla puede
ser: DPDOCCLI cuyos ndices son:
DOC_CODSUC,DOC_TIPDOC,DOC_NUMERO,DOC_TIPTRA
Podemos realizar consultas de la siguiente manera, con MySQLfront:
SELECT DOC_CODSUC,DOC_TIPDOC,DOC_NUMERO,DOC_TIPTRA,DOC_CODIGO
FROM DPDOCCLI
WHERE DOC_CODSUC='000001' AND
DOC_TIPDOC='FAV'
AND
DOC_NUMERO='0000000010'
Como podemos optimizar todos los procesos de los sistemas AdaptaPro. Si notamos que
alguna consulta es lenta, debemos activar la traza SQL, desde cualquier formulario, area de
icono, clic derecho, aparece un men de opciones, entre ellas esta: Activar traza de
ejecucin (Indica en que programa y lnea se esta ejecutando el sistema) y Traza SQL
(guarda en disco la ultima consulta que esta en ejecucin) sql.slq en la carpeta c:\dpadmwin
Programacin
Este archivo puede ser ledo con NOTEPAD y copiar, luego con MySQLFRONT pegar,
buscar los ndices de la tabla y ordenar los campos de la CLAUSULA WHERE segn el
mismo orden de los ndices, y comprobar tiempo de respuesta. Luego que la consulta esta
optimizada, debe abrir el programa fuente, LBX o Reporte y cambiarle el Orden a los
campos de la clusula WHERE y luego ejecutar el programa y seguramente notara los
tiempos de respuestas.
En el caso que se amerite y muy necesario, es crear nuevos ndices (No
RECOMENDAMOS) para optimizar las consultas, debido a esta solucin podr hacer que
la base datos est mas lenta en el momento de Insertar, Modificar o eliminar un Registro.
Es importante agotar el ltimo recurso en las condiciones WHERE antes de agregar un
nuevo ndice.
Para el caso en el diseo de los informes, recomendamos aplicar la misma regla, agregar los
campos preferiblemente en el mismo orden de los ndices de las bases de datos, auque esto
no contribuye mucho debido a que el usuario no est obligado a rellenar todos los campos
del Rango y Criterio y lgicamente no sern filtrados por los campos que estn vacos.
En DataPro estamos pensado en crear un programa que rdenes los campos de la clusula
WHERE segn los ndices registrados en el diccionario de datos, toda vez que se ejecute un
informe, debido a que las condiciones del mismo puede variar en cada ejecucin. Apenas
logremos desarrollar esta solucin ser implantada en el sistema.
Sin embargo, toda la plataforma tecnolgica que est involucrada con
la base datos tiene alta incidencia en su desempeo : Entre ellos est: Hardware
del servidor, Sistema Operativo del Servidor, exclusividad del servidor para la base de
Datos, Base de datos Optimizada en y para el Servidor. Red, suiche, cables, trfico en la
red local, PC donde estn las aplicaciones, Sistemas Operativos donde estn las
aplicaciones.
Artculo redactado por: Juan Navas (CEO AdaptaPro)
Programacin
Programacin
Tipo
Ancho
Decimal
Descripcin
Clave Primaria
o Primary Key
MAR_CODIGO
Carcter
10
Cdigo
PRIMARY
KEY NOT
NUL
MAR_DESCRI
Carcter
40
Descripcin
MAR_ACTIVO
Lgico
Activo
MAR_MEMO
Memo
Memo
Programacin
BD
: Seleccionar Mltiple, esta opcin permite que esta tabla sea creada en cada
una de las empresas cuando el usuario ingresa a la empresa el sistema realiza revisin de la
estructura de datos y crea la tabla (En este caso, no es necesaria la participacin de un
experto DBA para crear las tablas en cada empresa con su respectiva integridad
referencial). La opcin Configuracin
Aplicacin : Programacin y Diccionario de Datos.
Singular : Vehculo (Se refiere al nombre singular de la tabla)
Estructura de la Tabla Vehculos:
Campo
Tipo
Ancho
Decimal
Descripcin
Clave Primaria
o Primary Key
VEI_PLACA
Carcter
10
Placa
PRIMARY
KEY NOT
NUL
VEI_ACTIVO
Lgico
VEI_NOMBRE
Carcter
40
Descripcin
VEI_AO
Numrico
Ao
VEI_FCHADQ
Date (Fecha) 10
Fecha de
Adquisicin
VEI_VALOR
Numrico
12
Valor de
Compra
VEI_MEMO
Memo
Comentarios
VEI_CODMAR
10
Marca
VEI_ORIGEN
Activo
Nacional o
Importado
Luego de crear la tabla, es necesario crear las opciones para los siguientes campo: Mediante
la opcion Tablas se muestra todas las tablas, buscar tabla 7000 y seleccionar el 7mo boton
Opciones de los campos, ubicar el campo: VEI_ORIGEN y agregar dos registros:
Opcin
Nacional
Importado
Programacin
Con esta funcionalidad, permitir al asistente de creacin DpXbase crear un control selector
de tipo ComboBox que le permitir al usuario seleccionar Nacional o Importado, asi
mismo los informes diseados por el usuario podr agregar como criterio el uso del campo
VEI_ORIGEN y el sistema presentara opciones: Nacional, Importado o Vacio (Vacio no
realiza ningn filtro)
INTEGRIDAD REFERENCIAL (RELACION) ENTRE LAS TABLAS
Es necesario crea la integridad referencial entre la tabla, para esto vamos crear la relacin
electrnica entre MYMARCA con MYVEHICULO
Desde Ficheros, ubicada en Programacin y DpXbase, seleccionar la opcin Enlace
entre tablas, y seleccionar la opcin Incluir:
Tabla Solicitante:
Tabla : MYMARCA
Campos: MAR_CODIGO
Tabla Enlazada:
Tabla : MYVEHICULO
Campos: VEI_CODMAR
Marcar: Delete, Update y Generar desde BD
Con estas indicaciones el sistema crea las sentencias de SQL para genera la integridad
referencial. Si una marca es eliminada todos los registros de vehculos tambin son
eliminados. En el caso que la marca cambie su cdigo los vehculos asociados tambin
sern modificados.
(Es importante precisar que ambos campos deben posee el misto tipo de datos y la misma
longitud) para este caso ambos de tipo carcter y de 10 caracteres cada uno)
ENLACE VIRTUAL ENTRE VEHICULOS Y MARCAS.
Este tipo de enlace no afecta la integridad referencial, es una funcionalidad que facilita la
creacin automtica de programas DpXbase y generacin de rangos y criterios mediante el
generador de informes, logrando solicitar el campo MARCA y mostrar el nombre de la
marca. Cuando se genera un programa DpXBase se crea un control de tipo BMPGET y
control SAY contentivo del nombre de la marca. Cuando el sistema solicita la marca,
Programacin
presenta un botn que llama al LBX contentivo de marca y cuando el usuario selecciona la
marca y es validada se muestra el nombre de la marca. Esta funcionalidad ahorra tiempo de
programacin y depuracin del sistema.
Para crear un enlace virtual es necesario, acceder a Ficheros, ubicada en Programacin
y DpXbase, seleccionar la opcin Enlace entre tablas, y seleccionar la opcin Incluir:
Tabla Solicitante:
Tabla : MYVEHICULO
Campos: VEI_CODMAR
Tabla Enlazada:
Tabla : MYMARCAS
Campos: MAR_CODIGO
Campo de Referencia: MAR_DESCRI
En los campos de integridad referencia no se selecciona ninguna actividad debido a que
esta relacin no afectara fsicamente la tablas MYMARCA ni MYVEHICULO.
Programacin
presenta un nuevo formulario compuesto de dos listas de campos, el primero contiene los
campos de la tabla y el segundo formulario contiene los campos para ser utilizados en
formulario. El usuario debe seleccionar los siguientes campos en el mismo Orden:
MAR_CODIGO, MAR_DESCRI,MAR_ACTIVO y MAR_MEMO, luego debe presionar
el primer botn Formulario, y el sistema crea el programa fuente escrito en DpXbase
contentivo de todas las instrucciones para incluir, consultar o modificar Marcas.
Para ejecutar el LISTBOX de la tabla MYMARCA es necesario, incluir una nueva
opcin en la tabla DPMEMU, desde Ficheros, acceder a la opcin Men Principal de
Acceso, se muestran todas las opciones del men del sistema y vamos agregar una nueva
opcin, seleccionar botn Incluir e introducir los datos en los siguientes campos:
Aplicacin: Programacin y Diccionario de Datos.
Posicin Horizontal: Ficheros
Posicin Vertical
: 80
Titulo o Descripcin: Marcas de Vehculo (Si desea utilizar el diccionario de datos debe
indicar {oDp:MYMARCA})
Accin o Ejecucin: DPLBX(MYMARCA.LBX)
Condicin de Ejecucin: oDp:cUsuario$001,002 (Se coloca la condicin para activar la
opcin del men, en este caso los usuarios 001 y 002 solo puede acceder hacia esta opcin)
MYVEHICULO
Desde la opcin Tabla, ubicar la tabla 7001(MYVEHICULO) y seleccionar el sexto boton
(Crear listBox/Browse de Navegacin).
Se presenta un formulario compuesto de dos listas, la primera los campos de la tabla y la
segunda con los campos seleccionados para la lista. El usuario debe seleccionar el siguiente
campo:
VEI_PLACA
VEI_NOMBRE
VEI_ACTIVO
VEI_AO
VEI_FCHADQ
VEI_VALOR
VEI_CODMAR
Programacin
VEI_ORIGEN
Todos deben quedar el este orden, el campo de clave primaria debe estar siempre en la
primera columna. Seleccionar el botn Grabar y se genera el archivo
forms\MYVEHICULO.LBX (Contentivo de las instrucciones del Browse).
Creacin del Programa en DPXBASE para el formulario de carga de datos de la tabla
MYVEHICULO.
Nuevamente, desde la opcion Tabla, ubicar la tabla 7001 (MYVEHICULO) y seleccionar el
sexto botn (Crear listBox/Browse de Navegacin) y se presenta el selector de campos, en
la barra de botones se encuentra el tercer boton Crear programa para crear formulario. Se
presenta un nuevo formulario compuesto de dos listas de campos, el primero contiene los
campos de la tabla y el segundo formulario contiene los campos para ser utilizados en
formulario. El usuario debe seleccionar los siguientes campos en el mismo Orden:
VEI_PLACA
VEI_NOMBRE
VEI_ACTIVO
VEI_AO
VEI_FCHADQ
VEI_VALOR
VEI_CODMAR
VEI_ORIGEN
VEI_MEMO
Programacin
Contenido
Carpeta principal
C:\PLUGIN\DATADBF
Programacin
C:\PLUGIN\DPXBASE
C:\PLUGIN\OUTPUT
C:\PLUGIN\FORMS
C:\PLUGIN\SCRIPT
Contenido
Script contentivo de los archivos que
van a conformar el plugin, incluye
destino de los archivo y dems
parmetros para el programa de
instalacin.
Licencia.txt
Espaol.isl
Programacin
"c:\plugin\datadbf\*.*";
"c:\plugin\forms\*.*";
"c:\plugin\dpxbase\*.*";
"c:\plugin\*.*";
"c:\plugin\datadbf\*.*";
"c:\plugin\forms\*.*";
"c:\plugin\dpxbase\*.*";
"c:\plugin\*.*";
DestDir:
DestDir:
DestDir:
DestDir:
DestDir:
DestDir:
DestDir:
DestDir:
"{app}\plugin";
"{app}\forms";
"{app}\dpxbase";
"{app}\innosetup";
"c:\plugin\datadbf";
"c:\plugin\forms";
"c:\plugin\dpxbase";
"c:\kanguro";
[Run]
Filename: "{app}\dpadmwin.exe"; Description: "Ejecutar
Empresarial"; Flags: nowait postinstall skipifsilent
//
//
//
//
//
//
//
Programa
:
Fecha/Hora :
Propsito :
Creado Por :
Llamado por:
Aplicacin :
Tabla
:
CopyMode:
CopyMode:
CopyMode:
CopyMode:
CopyMode:
CopyMode:
CopyMode:
CopyMode:
aDaptaPro
alwaysoverwrite
alwaysoverwrite
alwaysoverwrite
alwaysoverwrite
alwaysoverwrite
alwaysoverwrite
alwaysoverwrite
alwaysoverwrite
Sistema
de
Gestion
DPEXPADAPTA
13/12/2011 21:50:51
Ubicar Programas Adaptados
Juan Navas
Programacion
#INCLUDE "DPXBASE.CH"
FUNCTION MAIN()
LOCAL aTablas
CursorWait()
MsgRun("Leyendo Adaptaciones","Por Favor Espere",;
{||aTablas:=LEERADAPTA()})
RETURN NIL
FUNCTION LEERADAPTA()
LOCAL aTablas:={},I,cTable,oTable,aFiles:={},cPass,aTotal:={}
LOCAL cDir:="DPEXPADAPTA"
LOCAL cFileZip:=cDir+"\ADAPTACIONES.ZIP"
AADD(aTablas,{"DPBOTBAR"
AADD(aTablas,{"DPCAMPOSOP"
,"BOT_ALTER" ,"BOT_CODIGO"
,"OPC_ALTER" ,"OPC_TABLE ,OPC_CAMPO,OPC_TITULO"
,0 })
,0 })
Programacin
AADD(aTablas,{"DPCAMPOS"
,"CAM_ALTER" ,"CAM_TABLE ,CAM_NAME "
,0 })
AADD(aTablas,{"DPLINK"
,"LNK_ALTER" ,"LNK_TABLES,LNK_TABLED,LNK_FIELDS,LNK_FIELDD",0})
AADD(aTablas,{"DPINDEX"
,"IND_ALTER" ,"IND_TABLA ,IND_INDICE"
,0})
AADD(aTablas,{"DPCOMPARATIVOS","COM_ALTERA","COM_CODIGO"
,0})
AADD(aTablas,{"DPTABLAS"
,"TAB_ALTER" ,"TAB_NOMBRE"
,0})
AADD(aTablas,{"DPREPORTES"
,"REP_ALTERA","REP_CODIGO"
,0})
AADD(aTablas,{"DPGRUREP"
,"GRR_ALTER" ,"GRR_CODIGO"
,0})
AADD(aTablas,{"DPPROGRA"
,"PRG_ALTER" ,"PRG_CODIGO"
,0})
AADD(aTablas,{"DPVISTAS"
,"VIS_ALTER" ,"VIS_CODIGO"
,0})
AADD(aTablas,{"DPTRIGGERS"
,"TRG_ALTER" ,"TRG_CODIGO"
,0})
lMkDir(cDir)
aFiles:=DIRECTORY(cDir+"*.*")
AEVAL(aFiles,{|aFile| ferase(cDir+aFile[1])} )
aFiles:={}
FOR I=1 TO LEN(aTablas)
// Revisa si la Tabla, tiene Cambios
cTable:=cDir+"\"+aTablas[I,1]+".DBF"
FERASE(cTable)
IF EJECUTAR("DBISTABLE",oDp:cDsnConfig,aTablas[I,1])
oTable:=OpenTable("SELECT * FROM "+aTablas[I,1]+" WHERE "+aTablas[i,2]+"=1"+" GROUP BY
"+aTablas[i,3])
oTable:CTODBF(cTable)
aTablas[I,4]:=oTable:RecCount()
oTable:END()
AADD(aFiles,cTable)
ENDIF
NEXT I
aTotal:=ATOTALES(aTablas)
HB_ZipFile( cFileZip, aFiles, 9,,.T., cPass, .F., .F. )
MensajeErr("Archivo "+cFileZip+" Generado con "+LSTR(aTotal[4])+" Adaptaciones")
// ViewArray(aTablas)
RETURN aTablas
// EOF
Programacin
Para manipular cadenas de este caso y obtener los diversos valores: Contribuyente, condicin, % de
retencin de IVA es necesario el uso de las siguientes funciones y Expresiones:
AT(C,ABCD)
C$ABC
LEFT(ABCD,2)
RIGHT(ABCD,2)
SUBS(ABCD,2,2)
STRTRAN(ABCD,B,2)
UPPE(abcd)
LOWER(ABDC)
CVar:=1A,ISALPHA(cVAR)
LEN(ABCD)
Para mayor informacin sobre las funciones Xbase y DpXbase puede consultar el siguiente enlace:
http://www.datapronet.com/index.php?id_seccion=111&tipo_seccion=section
Ejemplo en Programa escrito en DpXbase:
Programacin
Utilizamos: Cadenas, Campos Memos, Funciones para cadenas, lectura de archivo plano
(TXT)
//
//
//
//
//
//
//
Programa
:
Fecha/Hora :
Propsito :
Creado Por :
Llamado por:
Aplicacin :
Tabla
:
LEERRIF
16/07/2013 16:12:42
Leer RIF del Cliente y Obtener Datos Fiscales
Juan Navas
#INCLUDE "DPXBASE.CH"
PROCE MAIN(cRif)
LOCAL cUrl,cTemp
LOCAL cWeb:="http://www.seniat.gob.ve",cIp
LOCAL nAt,I,aData:={},cMemo:=""
DEFAULT cRif:="J312344202"
cUrl:="http://contribuyente.seniat.gob.ve/getContribuyente/getrif?rif="+cRif // Prepara la Direccin URL con
el Rif
cTemp:="TEMP\RIF.TXT" // Archivo Temporal donde sera guardado el resultado de la pgina
FERASE(cTemp) // Borra el Archivo, necesario para determinar si est protegido o abierto.
IF FILE(cTemp)
MensajeErr("Archivo "+cTempo+" est Protegido o Est Abierto")
RETURN .F.
ENDIF
// Verifica el Programa DPFTP.EXE (Existe)
IF !FILE("BIN\DPFTP.EXE")
MensajeErr("Programa BIN\DPFTP.EXE no existe")
RETURN .F.
ENDIF
//
//
//
//
CursorWait()
WsaStartUp()
WaitRun()
MsgRun()
Programacin
ENDIF
// Lee el archivo texto, cMemo Contiene su valor
cMemo:=MemoRead("TEMP\RIF.TXT")
// Busca el Texto en la variable cMemo
nAt :=AT("rif:numeroRif",cMemo)
// Si no hay posicin del Texto no Existe
IF nAt=0
// Solo necesitamos la primera lnea del Memo, es convertido en arreglo
cMemo:=_VECTOR(cMemo,CHR(10))[1] // Convierte en Arreglo y Toma el Primer Elemento, CHR(10) Divide las
Lneas
MensajeErr(cMemo,"RIF no Validado")
RETURN .F.
ENDIF
// Obtenemos los datos del contribuyente, desde rif:numeroRif
cMemo:=SUBS(cMemo,nAt,LEN(cMemo))
// Removemos el texto: rif:numeroRif "Ya no es necesario"
cMemo:=STRTRAN(cMemo,"rif:numeroRif=","")
// Removemos las comillas innecesario.
cMemo:=STRTRAN(cMemo,["],"")
// Genera un arreglo desde los valores comunes "><" en cada campo
aData:=_VECTOR(cMemo,"><")
// ViewArray(aData) // Quitar Comentarios para ver su contenido
// Recorremos el Arreglo para obtener cada campo con su valor
FOR I=1 TO LEN(aData)
// Determinar posicion de > (Fin de campo en formato XML)
nAt:=AT(">",aData[I])
IF nAt>0
// Se obtiene los datos hasta el final del campo
aData[I]:=SUBS(aData[I],nAt+1,LEN(aData[I]))
ENDIF
// Determinar posicion de < (Inicio de campo en formato XML)
nAt:=AT("<",aData[I])
IF nAt>0
// Obtiene los datos desde el Inicio del campo
aData[I]:=LEFT(aData[I],nAt-1)
ENDIF
NEXT I
// El Nombre del contribuyente est repetid y encerrado entre parntesis ejemplo: Contribuyente
(Contribuyente)
// Ubicar posicin de (
nAt:=AT("(",adata[2])
IF nAt>0
// Si es encontrado (, solo tomamos los caracteres desde el Inicio hasta ( menos 1 para no incluir el (
aData[2]:=LEFT(adata[2],nAt-1)
ENDIF
// Finalmente, se muestran los datos del contribuyente
? "RIF:"+aData[1],"Contribuyente:"+aData[2],"Agente retencin: "+aData[3],"Contribuyente de IVA: "+aData[4],"%
Programacin
Retencin: "+aData[5]
RETURN .T.
/*
<?xml version="1.0" encoding="ISO-8859-1"?>
<rif:Rif xmlns:rif="rif" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
rif:numeroRif="J312344202">
<rif:Nombre>SERVICIOS INFORMATICOS DATAPRO C.A. (SERVICIO INFORMATICOS DATAPRO, C.A)</rif:Nombre>
<rif:AgenteRetencionIVA>NO</rif:AgenteRetencionIVA>
<rif:ContribuyenteIVA>SI</rif:ContribuyenteIVA>
<rif:Tasa>75</rif:Tasa>
</rif:Rif>
*/
// EOF
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 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.
Programacin
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