Criar Dbf dentro do Programa!

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Carlos.info
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 09 Ago 2005 19:37

Criar Dbf dentro do Programa!

Mensagem por Carlos.info »

Ola como faco para criar um dbf novo dentro do programa ?

Obrigado.
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Mensagem por Daniel »

Eu crio os meus dbf no dbu.

Compile este programa e execulte no diretorio onde estao os dbf ele gera um prg com os arquivos de geracao do dbfs.

Código: Selecionar todos

cls
#include "directry.ch"
aFile1:= file:= {}
aDir:= Directory("*.DBF" , "D")
Aeval(aDir,{|aFile| AADD(aFile1, aFile[1])})
aSort(aFile1)
s:= 0
Set Printer To Gera_dbf.prg
Set Device To Printer
Set printer On
For b:= 1 To Len(aFile1)
   Use &(aFile1[b])
   Copy Structure Extended To temp
   Use temp
   xi:= 1
   While ! Eof()
      If xi == 1
        x2:=  "If !File(" + Chr(34) + Lower(aFile1[b]) + Chr(34) + ")"
        X3:=  "   aStructure := {}"
        @ s, 0 Say x2
        s++
        @ s, 0 Say x3
        s++
        xi:= 2
      EndIf
      x:= 10 - Len(RTrim(Field_Name))
      x1:= "aAdd( aStructure, { " + Chr(34) + RTrim(Field_Name) + Chr(34) + Space(x) +;
         ", " + Chr(34) + Field_Type + Chr(34) + ", " + Str(Field_Len) +;
         "," + Str(Field_Dec) + " })"
      @ s, 3 Say x1
      s++
      Skip
   End
   @ s, 3 Say "dbCreate(" +Chr(34) + Lower(aFile1[b]) + Chr(34) + ", aStructure)"
   s++
   @ s, 0 Say "EndIf"
   s+= 2
   Close temp
   FErase("temp.dbf")
Next
Set Printer To
Set printer Off
Set Device To Screen
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Mensagem por Stanis Luksys »

Cara, isso não é dificil nao, basta criar uma matriz com de 4 colunas com os as seguintes informaçôes: nome do campo, tipo do campo, tamanho do campo e, casas decimais do campo (somente para numericos).

Seria algo assim:

matriz := {}

aadd( matriz, {"nome","C",30,0} )
aadd( matriz, {"data","D",8,0} )
aadd( matriz, {"saldo","N",11,2} )

depois para criar o dbf:

dbCreate(matriz)

acho q é só isso mesmo, falou?



Fui...
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Stanis Luksys escreveu:Cara, isso não é dificil nao, basta criar uma matriz com de 4 colunas com os as seguintes informaçôes: nome do campo, tipo do campo, tamanho do campo e, casas decimais do campo (somente para numericos).

Seria algo assim:

matriz := {}

aadd( matriz, {"nome","C",30,0} )
aadd( matriz, {"data","D",8,0} )
aadd( matriz, {"saldo","N",11,2} )

depois para criar o dbf:

dbCreate(matriz)

acho q é só isso mesmo, falou?



Fui...
Vc esqueceu de colocar o nome do arquivo a ser criado:

dbcreate(<nome do arquivo>, <array estrutura>, <driver RDD>)

Nesse caso, o arquivo chamado CLI01.DBF ficaria:
dbcreate("cli01", matriz)
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

So para lembra...

Especifique o nome do arquivo que será criado.

DbCreate("arquivo.dbf",matriz).
Sem mais
Wagner Nunes
www.vagucs.com.br
Responder