Clipper/FiveWin - Imprimir estructura de bases DBF

 
Vista:

Imprimir estructura de bases DBF

Publicado por Alonso Puebla Gómez (3 intervenciones) el 01/04/2011 19:26:57
Si alguien fuera tan amable de indicarme cómo puedo imprimir la estructura de una base de datos DBF, desde un programa en uso desarrollado en Clipper/Fivewin, se lo agradecería sobremanera.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 25
Ha mantenido su posición en Clipper/FiveWin (en relación al último mes)
Gráfica de Clipper/FiveWin

Imprimir estructura de bases DBF

Publicado por Antoni Masana (45 intervenciones) el 04/04/2011 06:32:56
Utiliza la función dbStruct para leer la estructura del fichero e imprimirlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imprimir estructura de bases DBF

Publicado por Alonso Puebla Gómez (3 intervenciones) el 04/04/2011 13:15:02
Gracias por tu respuesta... Efectivamente, utilizo dbStructure para cargar la estructura en un Array y seguido la visualizo con un AChoice, pero no consigo implementar el mandato adecuado para imprimir la estructura. No basta con Set Devide to Print, y estoy hecho un lio.
De todos modos, de nuevo gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 25
Ha mantenido su posición en Clipper/FiveWin (en relación al último mes)
Gráfica de Clipper/FiveWin

Imprimir estructura de bases DBF

Publicado por Antoni Masana (45 intervenciones) el 06/04/2011 09:01:18
Hay un programa que encontre por la red que te muestra la estructura de un fichero,

C:\>!struct

Structure Listing Utility for dBase files
Copyright (c) 1991 Cynthia Allingham

usage: db_struc *.dbf -a > list
-a Array format for use with DBCREATE
-f FIELD declaration
-n Numeric definition of the field

File not found: *.DBF

Si te interesa te lo puedo enviar.

Tambien esta el programa DBMAX de David A. Kennedy. Aunque este creo que no imprime la estructura pero la puedes modificar.

La foma manual seria algo asi

======================================================================

a_Tabla:=(Alias)->(dbStruct())

?"CAMPO TIPO LON DEC"
?"---------- -- --- ---"
FOR a=1 to LEN(a_Tabla)
? PADR(a_Tabla[a,1],10)+" "+a_Tabla[a,2]+" "+str(a_Tabla[a,3],3)+" "+str(a_Tabla[a,4],3)
NEXT

======================================================================
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imprimir estructura de bases DBF

Publicado por Alonso Puebla Gómez (3 intervenciones) el 06/04/2011 10:07:33
Gracias de nuevo Antoni. Pero el problema no está en la visualización. sinó en la impresión directa de la estructura.
Así como en Fox_Pro, existe el comando List_Structure, no conozco el equivalente en Clipper/Fivewin. De momento salgo del paso invocando desde el propio programa un gestor externo de bases de datos, a la espera de, sin prisas, implementar alguna función en C, que me permita conseguir lo que quiero.

Gracias.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imprimir estructura de bases DBF

Publicado por Adalberto Baqueros (213 intervenciones) el 14/04/2011 04:22:00
Hola Alonso,

Con la función COPY STRU puedes copiar la estructura en un arreglo bidimensional y luego con ciclos FOR ... NEXT puedes imprimir, visualizar y manejar dicha estructura segun tus requerimientos.

Si puedo ser parte de la solución, por favor cuenta conmigo.

Saludos, desde Santa Cruz de la Sierra - Bolivia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imprimir estructura de bases DBF

Publicado por Alonso Puebla Gómez (1 intervención) el 31/05/2011 18:45:11
Despues de unos dias de brega y algo de ayuda, conseguí lo que pretendía. Adjunto el código fuente por si a alguien pudiera serle de utilidad.

Saludos y gracias

//--------------------------------------------------------------------------------------------/

#include "FiveWin.ch"
#include "Ide.ch"


//----------------------------------------------------------------------------//

Function Main()

SET RESOURCES TO "ImprBase.dll"
SET _3DLOOK ON

ImpEstr("Cuenta.dbf")

Return nil

//-----------------------------------------------------------------------------//

Static Func ImpEstr(cBase)

Local oPrn,oFont
Local nLin, npag, nLinMax, nItens, nCamp
Local aEstruct := {}

If cBase = Nil
Return
End

Use (cBase)
aEstruct:=DBStruct()
Use

PRINT oPrn NAME "Estructura" PREVIEW
If Empty( oPrn:hDC )
Return(Nil)
EndIf

nLin := 6
nPag := 0
nLinMax := 27
nItens := 0
nCamp := 1

PAGE
oPrn:CmSay( (nLin - 2.5), 1.5, "ESTRUCTURA DE LA BASE DE DATOS, " + Upper((cBase)) )
oPrn:CmSay( (nLin - .5), 1.5, Replicate("=", 32) )
oPrn:CmSay( (nLin - 1), 1.5, "Nº Campo Tipo Long. Dec. " )
FOR i=1 to LEN(aEstruct)
oPrn:CmSay(nLin,1, Str(nCamp) + " " + aEstruct[i,1] )
oPrn:CmSay(nLin,4.4, aEstruct[i,2] )
oPrn:CmSay(nLin,5, STR(aEstruct[i,3],5,0) + " " + STR(aEstruct[i,4],1,0) )
nLin += 0.7
nCamp ++
NEXT i
oPrn:CmSay( (nLin - .2), 1.5, Replicate("=", 32) )
ENDPAGE
ENDPRINT

Return

//------------------------------------------------------------------------//
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar