FOR - WHILE - DO UNTIL
TENHO UM PROBLEMAZINHO.....
Citação:If BD.GetFieldValue(recDocs, [Ô]FCT[Ô]) <> 0 Then
ContFct = 1
Do Until recDocs.EOF
ContFct = 1
ContFct = ContFct + 1
recDocs.MoveNext
Print #f, [Ô]R1[Ô] [ô].....
If BD.GetFieldValue(recDocs, [Ô]FCTln[Ô]) <> 0 Then
DO WHILE BD.GETFIELDVALUE(RECDOCS, [Ô]FCT.FCTID[Ô]) = BD.GETFIELDVALUE(RECDOCS, [Ô]FCT.FCTID[Ô])
Print #f, [Ô]R2[Ô]
recDocs.MoveNext
Loop
End If
Print #f, [Ô]R3[Ô]
recDocs.MoveNext
Loop
End If
OU SEJA ELE AGORA IMPRIME O 1º R1, DE SEGUIDA TODOS OS R2 E O R3 NÃO, BLOQUEIA. OS DADOS VEM DE 2 TABELAS DA BASE DADOS. E SO SEI QUAL LINHA PERTENCE A QUAL COM O FCTID, MAS DE TABELAS DIFERENTES, FCTLN E FCT
PRECISO DE AJUDA
Citação:If objSQLacs.Provider = 1 Or objSQLacs.Provider = 2 Then
BD.RecOpen recDocs, [Ô]SELECT * FROM Fct INNER JOIN FCTLN ON (FCT.FCTID = FCTLN.FCTID) WHERE (Fct.FctData) >=#[Ô] & Format(DataIni.Value, [Ô]m/d/yyyy[Ô]) & _
[Ô]# And (Fct.FctData) <=#[Ô] & Format(DataFim.Value, [Ô]m/d/yyyy[Ô]) & _
[Ô]# And (FctLn.FctLnData) >=#[Ô] & Format(DataIni.Value, [Ô]m/d/yyyy[Ô]) & _
[Ô]# And (FctLn.FctLnData) <=#[Ô] & Format(DataFim.Value, [Ô]m/d/yyyy[Ô]) & [Ô]# ORDER By Fct.FctId, FctLn.FctId, Fct.FctNr, Fct.FctData, FctLn.FctLnData [Ô]
ElseIf objSQLacs.Provider = 3 Then
[ô]SQL...
End If
If BD.RecEmpty(recDocs) = False Then
If BD.GetFieldValue(recDocs, [Ô]FCT[Ô]) <> 0 Then
ContFct = 0
Do Until recDocs.EOF
ContFct = 0
ContFct = ContFct + 1
[ô] isto é o cabeçalho que se imprime no ficheiro txt,
[ô]r1
Print #f, [Ô]R1[Ô] & Format(BD.GetFieldValue(recDocs, [Ô]FctData[Ô]), [Ô]yyyy[Ô]) & Format(BD.GetFieldValue(recDocs, [Ô]FctData[Ô]), [Ô]mm[Ô]) & Format(BD.GetFieldValue(recDocs, [Ô]FctData[Ô]), [Ô]dd[Ô]) _
& [Ô]0010[Ô] & [Ô]F-[Ô] & Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctNr[Ô])), [Ô]000000[Ô]) & [Ô]00[Ô] _
& Format(BD.GetFieldValue(recDocs, [Ô]FctEntCd[Ô]), [Ô]000000[Ô]) & [Ô]0000[Ô] & [Ô]0000[Ô] & [Ô]0000[Ô] & [Ô]0010[Ô] _
& [Ô]EUR[Ô] & [Ô]0000[Ô] & [Ô]G-000000[Ô] & [Ô]00000000[Ô] & Space(106) & [Ô]N[Ô]
If BD.GetFieldValue(recDocs, [Ô]FCTln[Ô]) <> 0 Then
ContaLinha = 0
Do While BD.GetFieldValue(recDocs, [Ô]fct.fctid [Ô]) = BD.GetFieldValue(recDocs, [Ô]FCTLN.FCTID[Ô])
ContaLinha = ContaLinha + 1
[ô] R2
[ô] este é o r2 que é o [Ô]meio [Ô] todas as linhas de artigos são representadas aki
Print #f, [Ô]R2[Ô] & Format(BD.GetFieldValue(recDocs, [Ô]FctData[Ô]), [Ô]yyyy[Ô]) & Format(BD.GetFieldValue(recDocs, [Ô]FctData[Ô]), [Ô]mm[Ô]) & Format(BD.GetFieldValue(recDocs, [Ô]FctData[Ô]), [Ô]dd[Ô]) _
& [Ô]0010[Ô] & [Ô]F-[Ô] & Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctNr[Ô])), [Ô]000000[Ô]) _
& Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctLnCD[Ô])), [Ô]000000000000000[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô]00000000[Ô] & [Ô]00000000[Ô] & [Ô]00000000[Ô] & [Ô]UN[Ô] & [Ô]0001[Ô] _
& Format(BD.GetFieldValue(recDocs, [Ô]FctLnTxIva[Ô]), [Ô]00[Ô]) & [Ô]00[Ô] & Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctLnQtd[Ô])), [Ô]00000000.000[Ô]), [Ô],[Ô], [Ô][Ô]) _
& [Ô] [Ô] & Format(BD.GetFieldValue(recDocs, [Ô]FctLnTxDesc[Ô]), [Ô]00[Ô]) & [Ô]00[Ô] & [Ô]0000[Ô] & [Ô]0000[Ô] & [Ô]U[Ô] & Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctLnVlrDef[Ô])), [Ô]00000000.000[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] _
& Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctLnDesc[Ô])), [Ô]00000000.00[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] & [Ô]0000000000[Ô] & [Ô] [Ô] _
& Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctLnVlr[Ô])), [Ô]00000000.00[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] & Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctLnValorCIva[Ô])), [Ô]00000000.00[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] _
& Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctLnIva[Ô])), [Ô]00000000.00[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] & Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctLnValorCIva[Ô])), [Ô]00000000.00[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] & Replace(Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctLnIvaInc[Ô])), [Ô]0[Ô]), [Ô]0[Ô], [Ô]N[Ô]), [Ô]-1[Ô], [Ô]S[Ô]) & [Ô]N[Ô]
recDocs.MoveNext
Loop
End If
[ô] R3
[ô]r3 é os totais da fatura
Print #f, [Ô]R3[Ô] & Format(BD.GetFieldValue(recDocs, [Ô]FctData[Ô]), [Ô]yyyy[Ô]) & Format(BD.GetFieldValue(recDocs, [Ô]FctData[Ô]), [Ô]mm[Ô]) & Format(BD.GetFieldValue(recDocs, [Ô]FctData[Ô]), [Ô]dd[Ô]) _
& [Ô]0010[Ô] & [Ô]F-[Ô] & Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctNr[Ô])), [Ô]000000[Ô]) _
& Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctTotalDesc[Ô])), [Ô]00000000.00[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] & [Ô]0000000000[Ô] & [Ô] [Ô] _
& Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctTotalSIVA[Ô])), [Ô]00000000.00[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] & Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctTotal[Ô])), [Ô]00000000.00[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] _
& Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctTotalIVA[Ô])), [Ô]00000000.00[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] & [Ô]0000000000[Ô] & [Ô] [Ô] & Replace(Format(CStr(BD.GetFieldValue(recDocs, [Ô]FctTotal[Ô])), [Ô]00000000.00[Ô]), [Ô],[Ô], [Ô][Ô]) & [Ô] [Ô] & Space(76) & [Ô]N[Ô]
recDocs.MoveNext
Loop
End If
Sal:
PROXIMO:
BD.RecClose recDocs, True
End If
ajude-me
bom derrepente você não esta sabendo fazer a pergunta. mas existe algumas coisas que você deve se atentar, exemplo:
em outro tópico disee pra você tomar cuidado com isso
f BD.GetFieldValue(recDocs, [Ô]FCT[Ô]) <> 0 Then
ContFct = 1
Do Until recDocs.EOF
[txt-color=#e80000]ContFct = 1[/txt-color] <--- esta linha não pode existir
ContFct = ContFct + 1
[txt-color=#e80000]recDocs.MoveNext[/txt-color] <--- e esta linha tem que estar por ultimo antes do loop
porém você repete o movenext em todo codigo, isso vira uma lambança
ContFct = 0
Do Until recDocs.EOF
ContFct = ContFct + 1
If x=y then
seu print
end if
if x=y then
seu print
end if
recDocs.MoveNext <--- e esta linha tem que estar por ultimo antes do loop
Loop
eu safo me a minha maneira.