× Linguagem de Programação ADVPL

Perguntas Exportação e importação de arquivo dbf.

Mais
10 anos 11 meses atrás #19344 por davidjackpaiva
Ola pessoal. Estou exportando o cadastro de produtos(na verdade duas tabelas: SB1 e SB0) de um ambiente, em dbf via APSDU. No ambiente 2, dropo as tabelas, abro o programa e apendo.Assim tenho o cadastro de produto atualizado. É uma trabalheira por que vou ter que apendar 5 ambientes.

Alguem pode me ajudar a fazer uma rotina para exportar estas tabelas do ambiente 1. E outra rotina para importar os registros da tabela exportada do ambinte 1 no ambiente 2.

O que eu preciso é atualizar o cadastro dos produtos do ambiente 2 para ficar igual aos cadastros do ambiente 1.

Alguma rotina pronta,um modelo, em txt, dbf ou xml para ajudar????

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás - 10 anos 11 meses atrás #19386 por davidjackpaiva
Esta dando erro ao rodar, pois nao esta adicionando ao Array aCpos. Alguem pode me ajudar?? eu quero exportar a tabela SB1.

User Function ExpB1()

Local oGrvTXT
Local cTam := ""
Local cDec := ""
Local cTip := ""
Private cAlias := "SB1"
Public aCpos := {}
Private nX := 0

DbSelectArea("SX3")
SX3->(DbGoTop())
DbSetOrder(1)
DbSetFilter({||ALLTRIM(X3_ARQUIVO) == 'SB1'},"ALLTRIM(X3_ARQUIVO) == 'SB1'")

While!SX3->(EOF()) .AND. ALLTRIM(SX3->X3_ARQUIVO) == "SB1"
cCam := SX3->X3_CAMPO
cTam := SX3->X3_TAMANHO
cDec := SX3->X3_DECIMAL
cTip := SX3->X3_TIPO

AAdd(aCpos,{cCam,cTam,cDec,cTip})
SX3->(DbSkip())
End

dbcreate('\EXPORTACAO\produtos.dbf',aCpos)

//USE '\teste\produtos.dbf' VIA 'DBFCDX' NEW

Return
Ultima edição: 10 anos 11 meses atrás por davidjackpaiva.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #23040 por w.barros
David você conseguiu fazer a rotina de importar o .dbf ? consegue me enviar algo ? vlws

email: Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #23044 por davidjackpaiva
Oi

Consegui sim. Eu queria importar a tabela SB1.Fiz assim, e funcionou, so que se houver registro igual ao que vc vai importar , vai dar duplicidade, entao da erro. Mas ta ae a importação.

DbUseArea( .T.,"DBFCDX","\SYSTEM\SB1_IMP", "TMP", .T., .F. ) //importando do arquivo SB1_IMP.DBF que esta na pasta \system\

DbSelectArea("TMP")
DbGoTop()

DbSelectArea("SB1")
DbGoTop()

Append from "TMP"

TMP->(DbCloseArea())

o meu fonte completo esta deletando os dados da tabela e importando os registro de um dbf atualizado. O que voce quer fazer?

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #23046 por w.barros
Então, o que preciso é assim. tenho um arquivo gerado por um programa que gera um .dbf, eu preciso apenas ler esse .dbf e por enquanto jogar as informações em variáveis e/ou mostrar na tela.

o que fiz foi isso aqui. mas não lê o meu arquivo.

User Function importaDBF()

cArq := cGetFile( "(*.DBF) | *.DBF | " , "IMPORTAÇÃO APONTAMENTOS PMS",, 'E:\', .T.,GETF_LOCALHARD)

Dbusearea(.T.,"TOPCONN",cArq,"ARQTMP")

Dbselectarea("ARQTMP")

Dbgotop()

Do While !EOF()
Dbselectarea("ARQTMP")
Alert(AFU_PROJET)
Alert(AFU_TAREFA)
Alert(AFU_RECURS)
Alert(AFU_HORAI)
Alert(AFU_HORAF)
Alert(AFU_DATA)
dbSkip()
End do

Dbclosearea("ARQTMP")
Return

da problema de alias inexistente, como faço esse alias referenciar meu arquivo ? existe essa possibilidade ?

desde ja Obrigado .

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #23063 por davidjackpaiva
Se eu nao me engano o arquivo tem que estar na pasta Protheus_Data ou na System para poder usalo ou importalo, como segue no exemplo que postei anteriormente.


Tenta isso:

User Function importaDBF()

cArq := cGetFile( "(*.DBF) | *.DBF | " , "IMPORTAÇÃO APONTAMENTOS PMS",, 'E:\', .T.,GETF_LOCALHARD)


__Copyfile(cArq,"ARQUIVO_IMP.DBF") //COPIA O ARQUIVO SELECIONADO E JOGA NA PASTA \SYSTEM COM O NOME DE "ARQUIVO_IMP.DBF"


Dbusearea(.T.,"DBFCDX","\SYSTEM\ARQUIVO_IMP","ARQTMP",.T.,.F.) // NAO PRECISA INFORMA ".DBF" OK

Dbselectarea("ARQTMP")

Dbgotop()

Do While !EOF()
Dbselectarea("ARQTMP") // <-NAO ENTENDI O PORQUE DESTE AQUI.
Alert(AFU_PROJET)
Alert(AFU_TAREFA)
Alert(AFU_RECURS)
Alert(AFU_HORAI)
Alert(AFU_HORAF)
Alert(AFU_DATA)
dbSkip()
End do

Dbclosearea("ARQTMP")
Return

Se deu certo me avisa, faloww t++

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.095 segundos
Joomla templates by a4joomla