Cantidad de Campos de un DBF

Cantidad de Campos de un DBF

Postby carito » Sat May 20, 2023 5:11 pm

Hola a todos:

Requiero de una ayuda, estoy medio olvidado de los DBF ( creo que son mis años :oops: ),

Existe alguna funcion que me informe la cantidad de campos que tiene un DBF ( Ojo no los registros ),
sino la cantidad de columnas que tiene ese DBF, lo requiero pasar poder rescatar los datos
de una consulta que me devuelve un DBF, pero que su cantidad de campos es variable.

Saludos y gracias,
Carito
carito
 
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Cantidad de Campos de un DBF

Postby carito » Sat May 20, 2023 5:28 pm

Me respondo, una forma que encontre es:

use customer
aCols := dbstruct()

? LEN( aCols ) // # de columnas del DBF

Si algo mejor, me cuentan por favor.
carito
 
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Cantidad de Campos de un DBF

Postby karinha » Sat May 20, 2023 6:14 pm

Code: Select all  Expand view  RUN

// C:\IMPSTRUC\IMPSTRUC.PRG

#Include "FiveWin.ch"

FUNCTION Main()

   Imp_Estruc( "CUSTOMER.DBF" )

RETURN NIL

FUNCTION Imp_Estruc( cBase )

   LOCAL oPrn, oFont, I, nLin, nPag, nLinMax, nItens, nCampo
   LOCAL aEstruct := {}

   IF( cBase = NIL )

      MsgStop( "Base de Datos no Ubicado en el Sitio", "Atencion" )

      RETURN NIL

   ENDIF

   USE ( cBase )
   GO TOP

   aEstruct := dbStruct()

   USE

   PRINT oPrn NAME "Estructura del .DBF" PREVIEW MODAL

      oPrn:SetLandscape()

      IF Empty( oPrn:hDC )

         RETURN NIL

      ENDIF

      nLin    := 6
      nPag    := 0
      nLinMax := 27
      nItens  := 0
      nCampo  := 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 )

         SYSREFRESH()

         oPrn:CmSay( nLin, 1, Str( nCampo ) + " " + 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

         nCampo++

      NEXT I

      oPrn:CmSay( ( nLin - .2 ), 1.5, Replicate( "=", 32 ) )

      ENDPAGE

   ENDPRINT

RETURN NIL

// FIN / END
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7828
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cantidad de Campos de un DBF

Postby carito » Sat May 20, 2023 7:52 pm

Gracias Karinha.
carito
 
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Cantidad de Campos de un DBF

Postby carlos vargas » Mon May 22, 2023 4:17 am

(cAlias)->( FCount() )
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Cantidad de Campos de un DBF

Postby carito » Mon May 22, 2023 1:41 pm

Hola Carlos, super.... esta funcion era la mas especifica y correcta. muchas gracias.
carito
 
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: pedroluis and 49 guests