Page 1 of 1

Favor ayuda con Array

PostPosted: Thu May 30, 2024 5:55 pm
by remtec
Estimados Amigos.

Hace un tiempo no ingresaba por aca.

Tengo la necesidad de pedir su ayuda.

Debo crear una Structura de una DBF, desde un Array(), y no he podido dar con la solucion.

Quedo atento a sus comentarios.

Como siempre, muy agradecido por su noble ayuda.

Code: Select all  Expand view

Local  aTSecre:= {}

     Sele b
     Go top
     i=1
     Do While  !Eof()
            nSec:= aScan(aTSecre,   { | array | array[1] == b->Cod_Dig} )
            If nSec=0
                 i:=i+1
             AADD( aTSecre,{ b->Cod_Dig})    // Aqui cargo en Array con una dato como "JAME","TAMA"
            Endif
        b->(DbSkip())
     Enddo

     // Aqui debo crear la Estructura de la DBF
        If !file("EstaHora.DBF")
            aStru :={{"Med_Tra" , "C",4,0 },;  // Campo fijo
                                // Aqui debo agregar campos de acuerdo a la cantidad que contiene en Array, Nombres Tales como "JANE","TAMA"
                                For i=1 to len(aTSecre)
                                    cam:=aTSecre[nSec][1]
                     {"&cam" , "N",10,0 },;
                                Next i
                     {"Ter_Arc" , "c",01,0 }}     // Hora_Dig
            Dbcreate("EstaHora.dbf",aStru)
        Endif
 

Re: Favor ayuda con Array

PostPosted: Thu May 30, 2024 6:26 pm
by JoseAlvarez
Saludos,

Hace años que dejé de trabajar con DBF, pero en aquellos tiempos lo hacía así:

Code: Select all  Expand view
********************************************************************************
**                   Crear TECNICOS.DBF  Logicamente                            **
********************************************************************************

cFile         :=".\Datos\Tecnicos.DBF"
aFileStructure:={{'nombre'    ,'c',25,0},;
                 {'cedula'    ,'c',10,0},;
                 {'telefonos' ,'c',30,0},;
                 {'direccio1' ,'c',40,0},;
                 {'direccio2' ,'c',40,0},;
                 {'email'     ,'c',40,0},;
                 {'notas'     ,'m',10,0}}

if !File( cFile )
  dbcreate( cFile, aFileStructure )
endif
 


Espero te ayude.

Re: Favor ayuda con Array

PostPosted: Thu May 30, 2024 8:52 pm
by FranciscoA
remtec wrote:Estimados Amigos.

Hace un tiempo no ingresaba por aca.

Tengo la necesidad de pedir su ayuda.

Debo crear una Structura de una DBF, desde un Array(), y no he podido dar con la solucion.

Quedo atento a sus comentarios.

Como siempre, muy agradecido por su noble ayuda.

Code: Select all  Expand view

Local  aTSecre:= {}

     Sele b
     Go top
     i=1
     Do While  !Eof()
            nSec:= aScan(aTSecre,   { | array | array[1] == b->Cod_Dig} )
            If nSec=0
                 i:=i+1
             AADD( aTSecre,{ b->Cod_Dig})    // Aqui cargo en Array con una dato como "JAME","TAMA"
            Endif
        b->(DbSkip())
     Enddo

     // Aqui debo crear la Estructura de la DBF
        If !file("EstaHora.DBF")
            aStru :={{"Med_Tra" , "C",4,0 },;  // Campo fijo
                                // Aqui debo agregar campos de acuerdo a la cantidad que contiene en Array, Nombres Tales como "JANE","TAMA"
                                For i=1 to len(aTSecre)
                                    cam:=aTSecre[nSec][1]
                     {"&cam" , "N",10,0 },;
                                Next i
                     {"Ter_Arc" , "c",01,0 }}     // Hora_Dig
            Dbcreate("EstaHora.dbf",aStru)
        Endif
 



Hola remtec, intentalo asi:

Code: Select all  Expand view
// Aqui debo crear la Estructura de la DBF
   If !file("EstaHora.DBF")
      aStru :={{"Med_Tra" , "C",4,0 }}  // Campo fijo

      // Aqui debo agregar campos de acuerdo a la cantidad que contiene en Array, Nombres Tales como "JANE","TAMA"
      For i=1 to len(aTSecre)
          cam:=aTSecre[nSec][1]
          aadd( aStru, {cam , "N",10,0} )   <<-------
      Next i

      aadd( aStru, {"Ter_Arc" ,"C",01,0} )   // Hora_Dig

      Dbcreate("EstaHora.dbf",aStru)
   Endif
 

Re: Favor ayuda con Array

PostPosted: Thu May 30, 2024 8:57 pm
by FranciscoA
Hace tiempo hice algo parecido:
Code: Select all  Expand view
DBSELECTAREA("CTASXCOB")
INDEX ON substr(FIELD->CONCEPTO,1,22) TO CXC UNIQUE TEMPORARY
DBGOTOP()
n:=0
While !eof() //para tit cols de report
   aadd(aTitCols, substr(field->concepto,1,22))

  //CREANDO STRUCT DE DBF TEMPORAL CONFORME LOS CAMPOS NECESARIOS SEGUN ATITCOLS
   n+=1
   cCampo := "CAMPO" + Alltrim(Str(n))
   aadd( aStruct, {cCampo, "N", 10,2 } )
  //FIN CREANDO STRUCT DE DBF TEMPORAL CONFORME LOS CAMPOS NECESARIOS SEGUN ATITCOLS

   dbskip()
Enddo
 

Re: Favor ayuda con Array

PostPosted: Thu May 30, 2024 9:57 pm
by remtec
Hola Amigos, Jose y Francisco.

Tanto tiempo, como se encuentran?

Muchas gracias por sus ayuda, toda la vida dispuestos a ayudar.

Los revisare y adaptare.

Muy agradecido.

Muchos Saludos.

Re: Favor ayuda con Array

PostPosted: Fri Jun 07, 2024 5:42 am
by LuisPonce
Hola

Lo hago de esa forma y me funciona ok

cFileLst:=cRuta+"TBLSTPRE.DBF"

AADD(aStrLst,{"PRECIO","N",12,IMPDPV})

FOR C=1 TO nCanLis
cCampo:="PRECIO"+STRZERO(C,2)
AADD(aStrLst,{cCampo,"N",12,2})
NEXT

DbCreate(cFileLst,aStrLst)