FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Cantidad de Campos de un DBF
Posts: 98
Joined: Sat Dec 03, 2016 02:49 PM
Cantidad de Campos de un DBF
Posted: Sat May 20, 2023 05: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
Posts: 98
Joined: Sat Dec 03, 2016 02:49 PM
Re: Cantidad de Campos de un DBF
Posted: Sat May 20, 2023 05: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.

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Cantidad de Campos de un DBF
Posted: Sat May 20, 2023 06:14 PM
Code (fw): Select all Collapse
// 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
Posts: 98
Joined: Sat Dec 03, 2016 02:49 PM
Re: Cantidad de Campos de un DBF
Posted: Sat May 20, 2023 07:52 PM

Gracias Karinha.

Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Cantidad de Campos de un DBF
Posted: Mon May 22, 2023 04:17 AM

(cAlias)->( FCount() )

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 98
Joined: Sat Dec 03, 2016 02:49 PM
Re: Cantidad de Campos de un DBF
Posted: Mon May 22, 2023 01:41 PM

Hola Carlos, super.... esta funcion era la mas especifica y correcta. muchas gracias.

Continue the discussion