× Linguagem de Programação ADVPL

Perguntas Importação CSV

Mais
2 anos 8 meses atrás #33131 por admin
Respondido por admin no tópico Importação CSV
Cara manda a estrutura da sua tabela, vou tentar identificar o erro pra vc.

Por favor Acessar ou Registrar para participar da conversa.

Mais
2 anos 7 meses atrás #33162 por advpl_os
Respondido por advpl_os no tópico Importação CSV
Cara. desculpe a demora.. Mas já identifiquei alguns pontos e ajustes necessários...

Contudo Criei uma nova 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.

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.100 segundos
Joomla templates by a4joomla