× Linguagem de Programação ADVPL

Perguntas Importação CSV

Mais
3 anos 3 meses atrás #33119 por advpl_os
Importação CSV foi criado por advpl_os
Bom dia galera, sou novato no ADVPL e com base em alguns fontes estou tentando fazer a importação de um arquivo de retorno que recebo em csv.

Quero fazer esse arquivo pegar o índice 3 da minha SZB e atualizar campos específicos com os dados do arquivo. Porém ele não cai no bloco do Reclock de alteração.


Alguém consegue me dar uma ajuda????????


Segue código.:

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ ÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡…o ³CSV_TICKET³ Autor ³ Osmair ³ Data ³ 01-08-2021 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ ÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ Retorno dos dados processados Ticket ³±±
±±³ ³ . ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/


User Function TIMPCSV()

Processa({||IMPSZB()},"Importando CSV. Aguarde...")

Return


Static Function IMPSZB()

Local nx := 0

Private aTxt := {}
Private aRet := {}



If ParamBox({ {6,"Arquivo",SPACE(50),"","FILE(mv_par01)","", 55 ,.T.,"Arquivo .CSV |*.CSV"}},;
"Importa Retorno Ticket",@aRet,,)
//{1,"Importar .CSV",SPACE(10),"","dbSeek(xFilial('AF8')+AllTrim(mv_par03))","AF8","", 45 ,.F.},;
//{3,"Versao do Project",1 ,{"Portugues","Ingles"},70,,.F.},;

If (nHandle := FT_FUse(AllTrim(aRet[1])))== -1
Help(" ",1,"NOFILEIMPOR")
Return
EndIf


FT_FGOTOP()
While !FT_FEOF()
PmsIncProc(.T.)
cLinha := FT_FREADLN()
AADD(aTxt,{})
nCampo := 1
While At(";",cLinha)>0
aAdd(aTxt[Len(aTxt)],Substr(cLinha,1,At(";",cLinha)-1))
nCampo ++
cLinha := StrTran(Substr(cLinha,At(";",cLinha)+1,Len(cLinha)-At(";",cLinha)),'"','')
Enddo
If Len(AllTrim(cLinha)) > 0
aAdd(aTxt[Len(aTxt)],StrTran(Substr(cLinha,1,Len(cLinha)),'"','') )
Else
aAdd(aTxt[Len(aTxt)],"")
Endif
FT_FSKIP()
Enddo
FT_FUSE()


DBSELECTAREA("SZB")
DBSETORDER(3)
cFilSZB := xFilial("SZB")

For nX := 2 to Len(aTxt)
cZBMat := STRZERO(VAL(aTxt[nx][07]),6)
cZBData := STRZERO(VAL(aTxt[nx][02]),6)
cZBPedi := aTxt[nx][01]
cZBGSTT := aTxt[nx][34]
cZBOBST := aTxt[nx][38]
cZBVlPr := aTxt[nx][29]
cZBVLOt := aTxt[nx][35]

IF DBSeek(xFilial("SZB")+cZBMat+ZB_COMP)
DBGOTOP()
// * Se o Registro não for encontrado, ele abre um novo Registro em Branco e Grava as Informações da Importação * //
While !EOF() .AND. xFilial("SZB") == cFilSZB .AND. SZB->ZB_MAT == cZBMat .AND. SZB->ZB_COMP == cZBData
Reclock("SZB",.F.)
SZB->ZB_PED1 := cZBPedi
SZB->ZB_VLPRC1 := cZBVlPr
SZB->ZB_SALDO1 := cZBVLOt
SZB->ZB_GSTT := cZBGSTT
SZB->ZB_OBST := cZBOBST
SZB->(MsUnlock())
Enddo

EndIF
Next Nx

ApMsgInfo("Importacao concluida com sucesso!","Sucesso!")

Endif

Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 3 meses atrás #33120 por admin
Respondido por admin no tópico Importação CSV
segue ajuste

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ ÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡…o ³CSV_TICKET³ Autor ³ Osmair ³ Data ³ 01-08-2021 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ ÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ Retorno dos dados processados Ticket ³±±
±±³ ³ . ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/


User Function TIMPCSV()

Processa({||IMPSZB()},"Importando CSV. Aguarde...")

Return


Static Function IMPSZB()

Local nx := 0

Private aTxt := {}
Private aRet := {}



If ParamBox({ {6,"Arquivo",SPACE(50),"","FILE(mv_par01)","", 55 ,.T.,"Arquivo .CSV |*.CSV"}},;
"Importa Retorno Ticket",@aRet,,)
//{1,"Importar .CSV",SPACE(10),"","dbSeek(xFilial('AF8')+AllTrim(mv_par03))","AF8","", 45 ,.F.},;
//{3,"Versao do Project",1 ,{"Portugues","Ingles"},70,,.F.},;

If (nHandle := FT_FUse(AllTrim(aRet[1])))== -1
Help(" ",1,"NOFILEIMPOR")
Return
EndIf


FT_FGOTOP()
While !FT_FEOF()
PmsIncProc(.T.)
cLinha := FT_FREADLN()
AADD(aTxt,{})
nCampo := 1
While At(";",cLinha)>0
aAdd(aTxt[Len(aTxt)],Substr(cLinha,1,At(";",cLinha)-1))
nCampo ++
cLinha := StrTran(Substr(cLinha,At(";",cLinha)+1,Len(cLinha)-At(";",cLinha)),'"','')
Enddo
If Len(AllTrim(cLinha)) > 0
aAdd(aTxt[Len(aTxt)],StrTran(Substr(cLinha,1,Len(cLinha)),'"','') )
Else
aAdd(aTxt[Len(aTxt)],"")
Endif
FT_FSKIP()
Enddo
FT_FUSE()


DBSELECTAREA("SZB")
DBSETORDER(3)
cFilSZB := xFilial("SZB")

For nX := 2 to Len(aTxt)
cZBMat := STRZERO(VAL(aTxt[nx][07]),6)
cZBData := STRZERO(VAL(aTxt[nx][02]),6)
cZBPedi := aTxt[nx][01]
cZBGSTT := aTxt[nx][34]
cZBOBST := aTxt[nx][38]
cZBVlPr := aTxt[nx][29]
cZBVLOt := aTxt[nx][35]

IF DBSeek(xFilial("SZB")+cZBMat+ZB_COMP)
Reclock("SZB",.F.)
SZB->ZB_PED1 := cZBPedi
SZB->ZB_VLPRC1 := cZBVlPr
SZB->ZB_SALDO1 := cZBVLOt
SZB->ZB_GSTT := cZBGSTT
SZB->ZB_OBST := cZBOBST
SZB->(MsUnlock())
EndIF
Next Nx

ApMsgInfo("Importacao concluida com sucesso!","Sucesso!")

Endif

Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 3 meses atrás #33121 por admin
Respondido por admin no tópico Importação CSV
Uma dúvida, vc esta gravando registro e não criando novos, é isso mesmo ?

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 3 meses atrás #33124 por advpl_os
Respondido por advpl_os no tópico Importação CSV
Correto, quero apenas alterar registros da SZB que são posicionados pelo índice 3 da minha tabela (FILIAL + MAT + COMP)

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 3 meses atrás #33125 por advpl_os
Respondido por advpl_os no tópico Importação CSV
[Info - 11:47:37] [11:47:37] ERROR: Invalid data type on (ZB_PED1) in file d:\bamboo-agent-5.7.2\xml-data\build-dir\tp11-tecx17v3-tecxwin64\advpl\instrvar.inl at line 587

Ao entrar no Reclock o sistema apresentou esse erro.

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 3 meses atrás #33126 por admin
Respondido por admin no tópico Importação CSV
[Info - 11:47:37] [11:47:37] ERROR: Invalid data type on (ZB_PED1) in file d:\bamboo-agent-5.7.2\xml-data\build-dir\tp11-tecx17v3-tecxwin64\advpl\instrvar.inl at line 587

Ao entrar no Reclock o sistema apresentou esse erro.

Aparentemente são divergências de tipos de campo, esta tentando gravar um valor numérico num campo caracter ou vice e versa, os campos devem coincidir com os tipos das variaveis, caracter com caracter, numero com numero, data com data etc.

verifique sua tabeal SZB e compare todos os campos com as variaveis que está tentando gravar ok.

Por favor Acessar ou Registrar para participar da conversa.

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