Page 1 of 1

Cantidad de Campos de un DBF

PostPosted: Sat May 20, 2023 5:11 pm
by carito
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

Re: Cantidad de Campos de un DBF

PostPosted: Sat May 20, 2023 5:28 pm
by carito
Me respondo, una forma que encontre es:

use customer
aCols := dbstruct()

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

Si algo mejor, me cuentan por favor.

Re: Cantidad de Campos de un DBF

PostPosted: Sat May 20, 2023 6:14 pm
by karinha
Code: Select all  Expand view

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

Re: Cantidad de Campos de un DBF

PostPosted: Sat May 20, 2023 7:52 pm
by carito
Gracias Karinha.

Re: Cantidad de Campos de un DBF

PostPosted: Mon May 22, 2023 4:17 am
by carlos vargas
(cAlias)->( FCount() )

Re: Cantidad de Campos de un DBF

PostPosted: Mon May 22, 2023 1:41 pm
by carito
Hola Carlos, super.... esta funcion era la mas especifica y correcta. muchas gracias.