FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para CA-Clipper Imprimir estructura de una base dbf
Posts: 18
Joined: Thu May 19, 2011 04:50 PM
Imprimir estructura de una base dbf
Posted: Tue May 24, 2011 07:27 AM

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

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Imprimir estructura de una base dbf
Posted: Tue May 24, 2011 07:34 AM
Prueba asi:
Code (fw): Select all Collapse
for n = 1 to FCount()
   ? FieldName( n ), FieldType( n ), Len( FieldGet( n ) )
next
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 18
Joined: Thu May 19, 2011 04:50 PM
Re: Imprimir estructura de una base dbf
Posted: Tue May 24, 2011 09:07 AM
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
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Imprimir estructura de una base dbf
Posted: Tue May 24, 2011 09:49 AM
Para crear un DBF desde c贸digo se hace as铆:
Code (fw): Select all Collapse
dbCreate("FICHERO.DBF",{{"CAMPO_01 聽","C",10,0},;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽聽{"CAMPO_02 聽","M", 8,0},;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽聽 聽{"CAMPO_03 聽","N",10,3}})
o de la siguiente forma:
Code (fw): Select all Collapse
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)

Luego la estructura es del tipo array bidimensional de N elementos con 4 elementos por fila.
Entonces los campos 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 (fw): Select all Collapse
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
Posts: 18
Joined: Thu May 19, 2011 04:50 PM
Re: Imprimir estructura de una base dbf
Posted: Tue May 24, 2011 10:19 AM

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...

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Imprimir estructura de una base dbf
Posted: Tue May 24, 2011 11:35 AM

Prueba con este c贸digo:

ValType( FieldGet( n ) )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 18
Joined: Thu May 19, 2011 04:50 PM
Re: Imprimir estructura de una base dbf
Posted: Tue May 24, 2011 08:26 PM

Gracias a todos los que se han dignado contestar, pero lamentablemente el problema persiste. Nada de lo aportado lleva a la salida por impresora...

Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Imprimir estructura de una base dbf
Posted: Wed May 25, 2011 03:11 PM
Hola, prueba asi:
Salu2

Code (fw): Select all Collapse
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 04:50 PM
Re: Imprimir estructura de una base dbf
Posted: Thu May 26, 2011 03:48 PM

Muchas gracias Willi Quintana.

Voy a probar y te cuento...

Posts: 18
Joined: Thu May 19, 2011 04:50 PM
Re: Imprimir estructura de una base dbf
Posted: Thu May 26, 2011 04:10 PM

隆隆 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.

Continue the discussion