×
Linguagem de Programação ADVPL
Perguntas Imp CSV
- advpl_os
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 9
- Obrigados Recebidos: 0
3 anos 1 mês atrás #33168
por advpl_os
Galera criei uma condição neste código de importação do CSV com um cPerg (ajustaSx1) dando a opção do usuário optar por importação Mensal ou Quinzenal.
Coloquei um IF antes do Begin Transaction, para ele ler essa informação.
Mas quando coloco o ponto de parada no IF o SX1-X1_GRUPO está posicionado em outro registro da SX1, e a informação fica diferente sempre caindo no ELSE.
Alguém consegue me ajudar...
Segue código.;
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ ÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡…o ³CSV_TICKET³ Autor ³ Osmair ³ Data ³ 01-08-2021 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ �ÄÄÄÄÄÄÄ�ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ�ÄÄÄÄÄÄ�ÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ Retorno dos dados processados Ticket ³±±
±±³ ³ . ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄ�ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function TIMPCSV()
Local cPerg := PadR("TIMPCSV",10)
AjustaSx1(cPerg)
If Pergunte(cPerg,.T.)
Processa({||IMPSZB()},"Importando CSV. Aguarde...")
EndIf
Return
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³AjustaSX1 ºAutor ³ º Data ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function AjustaSX1(cPerg)
Local aRea := GetArea()
Local aSx1 := {}
local i:=0
DBSelectArea("SX1")
SX1->(DBSetOrder(1))
cPerg := PadR(cPerg, Len(SX1->X1_GRUPO))
SX1->(DBSeek(cPerg+"01"))
AADD( aSx1,{ cPerg,"01","Período?" ,"MV_PAR02","C",9,0,0, "C","MV_PAR02","MENSAL","QUINZENAL","","","","","" } )
If SX1->X1_GRUPO != cPerg
For I := 1 To Len( aSx1 )
If !SX1->( DBSeek( aSx1[1] + aSx1[2] ) )
Reclock( "SX1", .T. )
SX1->X1_GRUPO := aSx1[1] //Grupo
SX1->X1_ORDEM := aSx1[2] //Ordem do campo
SX1->X1_PERGUNT := aSx1[3] //Pergunta
SX1->X1_PERSPA := aSx1[3] //Pergunta Espanhol
SX1->X1_PERENG := aSx1[3] //Pergunta Ingles
SX1->X1_VARIAVL := aSx1[4] //Variavel do campo
SX1->X1_TIPO := aSx1[5] //Tipo de valor
SX1->X1_TAMANHO := aSx1[6] //Tamanho do campo
SX1->X1_DECIMAL := aSx1[7] //Formato numerico
SX1->X1_PRESEL := aSx1[8] //Pre seleção do combo
SX1->X1_GSC := aSx1[9] //Tipo de componente
SX1->X1_VAR01 := aSx1[10]//Variavel que carrega resposta
SX1->X1_DEF01 := aSx1[11]//Definições do combo-box
SX1->X1_DEF02 := aSx1[12]
SX1->X1_DEF03 := aSx1[13]
SX1->X1_DEF04 := aSx1[14]
SX1->X1_VALID := aSx1[15]
SX1->X1_F3 := aSx1[16]
MsUnlock()
Endif
Next
Endif
RestArea(aRea)
Return(cPerg)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
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,,)
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()
If SX1->X1_DEF01 = "MENSAL"
Begin Transaction
ProcRegua(Len(aTxt))
DBSELECTAREA("SZB")
DBSETORDER(3)
cFilSZB := xFilial("SZB")
For nX := 2 to Len(aTxt)
cZBPedi := STRZERO(VAL(aTxt[nx][01]),10)
cZBData := substr(aTxt[nx][02],1,2)+substr(aTxt[nx][02],4,4)
cZBMat := STRZERO(VAL(aTxt[nx][07]),6)
cZBVlPr := aTxt[nx][29]
cZBGSTT := aTxt[nx][34]
cZBVLOt := aTxt[nx][35]
cZBProc := aTxt[nx][37]
cZBOBSV := aTxt[nx][38]
IF DBSeek(xFilial("SZB")+cZBMat+cZBData) .AND. cZBProc == "S" .AND. cZBGSTT == "S"
Reclock("SZB",.F.)
SZB->ZB_PED1 := cZBPedi
SZB->ZB_VLPRC1 := cZBVlPr
SZB->ZB_SALDO1 := cZBVLOt
SZB->ZB_GSTT := cZBGSTT
SZB->ZB_OBSV := cZBOBSV
SZB->(MsUnlock())
EndIF
Next Nx
ApMsgInfo("Importacao concluida com sucesso!","Sucesso!")
End Transaction
Else
Begin Transaction
ProcRegua(Len(aTxt))
DBSELECTAREA("SZB")
DBSETORDER(3)
cFilSZB := xFilial("SZB")
For nX := 2 to Len(aTxt)
cZBPedi := STRZERO(VAL(aTxt[nx][01]),10)
cZBData := substr(aTxt[nx][02],1,2)+substr(aTxt[nx][02],4,4)
cZBMat := STRZERO(VAL(aTxt[nx][07]),6)
cZBVlPr := aTxt[nx][29]
cZBGSTT := aTxt[nx][34]
cZBVLOt := aTxt[nx][35]
cZBProc := aTxt[nx][37]
cZBOBSV := aTxt[nx][38]
IF DBSeek(xFilial("SZB")+cZBMat+cZBData) .AND. cZBProc == "S" .AND. cZBGSTT == "S"
Reclock("SZB",.F.)
SZB->ZB_PED2 := cZBPedi
SZB->ZB_VLPRC2 := cZBVlPr
SZB->ZB_SALDO2 := cZBVLOt
SZB->ZB_GSTT := cZBGSTT
SZB->ZB_OBSV := cZBOBSV
SZB->(MsUnlock())
EndIF
Next Nx
ApMsgInfo("Importacao concluida com sucesso!","Sucesso!")
End Transaction
EndIF
Endif
Return
Coloquei um IF antes do Begin Transaction, para ele ler essa informação.
Mas quando coloco o ponto de parada no IF o SX1-X1_GRUPO está posicionado em outro registro da SX1, e a informação fica diferente sempre caindo no ELSE.
Alguém consegue me ajudar...
Segue código.;
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ ÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡…o ³CSV_TICKET³ Autor ³ Osmair ³ Data ³ 01-08-2021 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ �ÄÄÄÄÄÄÄ�ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ�ÄÄÄÄÄÄ�ÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ Retorno dos dados processados Ticket ³±±
±±³ ³ . ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄ�ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function TIMPCSV()
Local cPerg := PadR("TIMPCSV",10)
AjustaSx1(cPerg)
If Pergunte(cPerg,.T.)
Processa({||IMPSZB()},"Importando CSV. Aguarde...")
EndIf
Return
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³AjustaSX1 ºAutor ³ º Data ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function AjustaSX1(cPerg)
Local aRea := GetArea()
Local aSx1 := {}
local i:=0
DBSelectArea("SX1")
SX1->(DBSetOrder(1))
cPerg := PadR(cPerg, Len(SX1->X1_GRUPO))
SX1->(DBSeek(cPerg+"01"))
AADD( aSx1,{ cPerg,"01","Período?" ,"MV_PAR02","C",9,0,0, "C","MV_PAR02","MENSAL","QUINZENAL","","","","","" } )
If SX1->X1_GRUPO != cPerg
For I := 1 To Len( aSx1 )
If !SX1->( DBSeek( aSx1[1] + aSx1[2] ) )
Reclock( "SX1", .T. )
SX1->X1_GRUPO := aSx1[1] //Grupo
SX1->X1_ORDEM := aSx1[2] //Ordem do campo
SX1->X1_PERGUNT := aSx1[3] //Pergunta
SX1->X1_PERSPA := aSx1[3] //Pergunta Espanhol
SX1->X1_PERENG := aSx1[3] //Pergunta Ingles
SX1->X1_VARIAVL := aSx1[4] //Variavel do campo
SX1->X1_TIPO := aSx1[5] //Tipo de valor
SX1->X1_TAMANHO := aSx1[6] //Tamanho do campo
SX1->X1_DECIMAL := aSx1[7] //Formato numerico
SX1->X1_PRESEL := aSx1[8] //Pre seleção do combo
SX1->X1_GSC := aSx1[9] //Tipo de componente
SX1->X1_VAR01 := aSx1[10]//Variavel que carrega resposta
SX1->X1_DEF01 := aSx1[11]//Definições do combo-box
SX1->X1_DEF02 := aSx1[12]
SX1->X1_DEF03 := aSx1[13]
SX1->X1_DEF04 := aSx1[14]
SX1->X1_VALID := aSx1[15]
SX1->X1_F3 := aSx1[16]
MsUnlock()
Endif
Next
Endif
RestArea(aRea)
Return(cPerg)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
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,,)
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()
If SX1->X1_DEF01 = "MENSAL"
Begin Transaction
ProcRegua(Len(aTxt))
DBSELECTAREA("SZB")
DBSETORDER(3)
cFilSZB := xFilial("SZB")
For nX := 2 to Len(aTxt)
cZBPedi := STRZERO(VAL(aTxt[nx][01]),10)
cZBData := substr(aTxt[nx][02],1,2)+substr(aTxt[nx][02],4,4)
cZBMat := STRZERO(VAL(aTxt[nx][07]),6)
cZBVlPr := aTxt[nx][29]
cZBGSTT := aTxt[nx][34]
cZBVLOt := aTxt[nx][35]
cZBProc := aTxt[nx][37]
cZBOBSV := aTxt[nx][38]
IF DBSeek(xFilial("SZB")+cZBMat+cZBData) .AND. cZBProc == "S" .AND. cZBGSTT == "S"
Reclock("SZB",.F.)
SZB->ZB_PED1 := cZBPedi
SZB->ZB_VLPRC1 := cZBVlPr
SZB->ZB_SALDO1 := cZBVLOt
SZB->ZB_GSTT := cZBGSTT
SZB->ZB_OBSV := cZBOBSV
SZB->(MsUnlock())
EndIF
Next Nx
ApMsgInfo("Importacao concluida com sucesso!","Sucesso!")
End Transaction
Else
Begin Transaction
ProcRegua(Len(aTxt))
DBSELECTAREA("SZB")
DBSETORDER(3)
cFilSZB := xFilial("SZB")
For nX := 2 to Len(aTxt)
cZBPedi := STRZERO(VAL(aTxt[nx][01]),10)
cZBData := substr(aTxt[nx][02],1,2)+substr(aTxt[nx][02],4,4)
cZBMat := STRZERO(VAL(aTxt[nx][07]),6)
cZBVlPr := aTxt[nx][29]
cZBGSTT := aTxt[nx][34]
cZBVLOt := aTxt[nx][35]
cZBProc := aTxt[nx][37]
cZBOBSV := aTxt[nx][38]
IF DBSeek(xFilial("SZB")+cZBMat+cZBData) .AND. cZBProc == "S" .AND. cZBGSTT == "S"
Reclock("SZB",.F.)
SZB->ZB_PED2 := cZBPedi
SZB->ZB_VLPRC2 := cZBVlPr
SZB->ZB_SALDO2 := cZBVLOt
SZB->ZB_GSTT := cZBGSTT
SZB->ZB_OBSV := cZBOBSV
SZB->(MsUnlock())
EndIF
Next Nx
ApMsgInfo("Importacao concluida com sucesso!","Sucesso!")
End Transaction
EndIF
Endif
Return
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.080 segundos