Imprimir estructura de una base dbf
-
- Posts: 18
- Joined: Thu May 19, 2011 4:50 pm
Imprimir estructura de una base dbf
Me estoy haciendo viejo, sin duda, pues por más que lo intento, no acierto a desarrollar una función que me permita imprimir la estructura de una base de datos DBF en uso, desde el programa que la maneja... Sólo la estructura, nó el contenido de los registros
Por favor: ¿Alguien me echa una mano...?
Gracias
Por favor: ¿Alguien me echa una mano...?
Gracias
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Imprimir estructura de una base dbf
Prueba asi:
Code: Select all
for n = 1 to FCount()
? FieldName( n ), FieldType( n ), Len( FieldGet( n ) )
next
-
- Posts: 18
- Joined: Thu May 19, 2011 4:50 pm
Re: Imprimir estructura de una base dbf
Gracias Antonio, pero no reconoce la función FieldType...
Hé conseguido una aproximación mediante el siguiente código:
------------------------------------------------------
Use cuenta.dbf
aEstruct = DBStruct()
For i = 1 To Len(aEstruct)
? aEstruct[i, DBS_NAME], aEstruct[i, DBS_TYPE], aEstruct[i, DBS_LEN], aEstruct[i, DBS_DEC]
Next
----------------------------------------------------------
Continúo intentando la impresión...
Gracias de nueva
Hé conseguido una aproximación mediante el siguiente código:
------------------------------------------------------
Use cuenta.dbf
aEstruct = DBStruct()
For i = 1 To Len(aEstruct)
? aEstruct[i, DBS_NAME], aEstruct[i, DBS_TYPE], aEstruct[i, DBS_LEN], aEstruct[i, DBS_DEC]
Next
----------------------------------------------------------
Continúo intentando la impresión...
Gracias de nueva
Re: Imprimir estructura de una base dbf
Para crear un DBF desde código se hace así:
o de la siguiente forma:
Luego la estructura es del tipo array bidimensional de N elementos con 4 elementos por fila.
Entonces _ son el 1 para el nombre, el 2 para el tipo (Number, Character, Memo), el 3 para la longitud del campo y el 4 para los decimales si es number.
Luego puedes listarlo así tambien:
Code: Select all
dbCreate("FICHERO.DBF",{{"CAMPO_01 ","C",10,0},;
{"CAMPO_02 ","M", 8,0},;
{"CAMPO_03 ","N",10,3}})
Code: Select all
aCampos:={{"CAMPO_01 ","C",10,0},{"CAMPO_02 ","M", 8,0},{"CAMPO_03 ","N",10,3},{"CAMPO_N ","C",10,0}}
dbCreate("FICHERO.DBF",aCampos)
Entonces _ son el 1 para el nombre, el 2 para el tipo (Number, Character, Memo), el 3 para la longitud del campo y el 4 para los decimales si es number.
Luego puedes listarlo así tambien:
Code: Select all
use cuenta.dbf
aEstruct:=DBStruct()
use
for i=1 to Len(aEstruct)
? aEstruct[i,1],aEstruct[i,2],aEstruct[i,3],aEstruct[i,4]
next i
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
-
- Posts: 18
- Joined: Thu May 19, 2011 4:50 pm
Re: Imprimir estructura de una base dbf
Gracias JmGarcia, pero hasta ahí ya habia llegado yo. En realidad el código que indicas es practicamente el mismo que adjunté yo, pues da lo mismo invocar la constante por su nombre, que por la posición que ocupa en el array multidimensional. Lo que me interesa no es la visualización por pantalla, que se consigue así, sinó la salida por impresora mediante un objeto Report.
Gracias no obstante...
Gracias no obstante...
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Imprimir estructura de una base dbf
Prueba con este código:
ValType( FieldGet( n ) )
ValType( FieldGet( n ) )
-
- Posts: 18
- Joined: Thu May 19, 2011 4:50 pm
Re: Imprimir estructura de una base dbf
Gracias a todos los que se han dignado contestar, pero lamentablemente el problema persiste. Nada de lo aportado lleva a la salida por impresora...
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
Re: Imprimir estructura de una base dbf
Hola, prueba asi:
Salu2
Salu2
Code: Select all
use cuenta.dbf
aEstruct:=DBStruct()
use
PRINT oPrn NAME cTitle PREVIEW
If Empty( oPrn:hDC )
Return(Nil) // Printer was not installed or ready
EndIf
nLin := 0.3
nPag := 0
nLinMax := 27
nItens := 0
PAGE
FOR i=1 to LEN(aEstruct)
oPrn:CmSay(nLin,1, aEstruct[i,1] )
oPrn:CmSay(nLin,3, aEstruct[i,2] )
oPrn:CmSay(nLin,5, STR(aEstruct[i,3],5,0) + "." + STR(aEstruct[i,4],1,0) )
nLin += 0.5
NEXT i
ENDPAGE
ENDPRINT
-
- Posts: 18
- Joined: Thu May 19, 2011 4:50 pm
Re: Imprimir estructura de una base dbf
Muchas gracias Willi Quintana.
Voy a probar y te cuento...
Voy a probar y te cuento...
-
- Posts: 18
- Joined: Thu May 19, 2011 4:50 pm
Re: Imprimir estructura de una base dbf
¡¡ EUREKA...!! Miles de gracias Willi. Tu código cumple sobradamente lo que pretendía.... Como has podido comprobar, mis conocimientos son ya escasos pues hace varioss años que dejé la programación ( estoy retocando por compromiso, una aplicación desarrollada hace tiempo), pero si en algún momento surgiera la ocasión de poder corresponderte, cuenta conmigo. Aquí estaré.
Gracias de nuevo.
Gracias de nuevo.