- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Exportação e importação de arquivo dbf.
×
Linguagem de Programação ADVPL
Perguntas Exportação e importação de arquivo dbf.
- davidjackpaiva
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 153
- Obrigados Recebidos: 0
10 anos 11 meses atrás #19344
por davidjackpaiva
Exportação e importação de arquivo dbf. foi criado 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????
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.
- davidjackpaiva
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 153
- Obrigados Recebidos: 0
10 anos 11 meses atrás - 10 anos 11 meses atrás #19386
por davidjackpaiva
Respondido por davidjackpaiva no tópico Exportação e importação de arquivo dbf.
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
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.
- w.barros
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 3
- Obrigados Recebidos: 0
10 anos 5 meses atrás #23040
por w.barros
Respondido por w.barros no tópico Exportação e importação de arquivo dbf.
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.
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.
- davidjackpaiva
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 153
- Obrigados Recebidos: 0
10 anos 5 meses atrás #23044
por davidjackpaiva
Respondido por davidjackpaiva no tópico Exportação e importação de arquivo dbf.
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?
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.
- w.barros
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 3
- Obrigados Recebidos: 0
10 anos 5 meses atrás #23046
por w.barros
Respondido por w.barros no tópico Exportação e importação de arquivo dbf.
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 .
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.
- davidjackpaiva
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 153
- Obrigados Recebidos: 0
10 anos 5 meses atrás #23063
por davidjackpaiva
Respondido por davidjackpaiva no tópico Exportação e importação de arquivo dbf.
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++
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.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Exportação e importação de arquivo dbf.
Tempo para a criação da página:0.095 segundos