AJUDA COM ARQUIVO TEXTO
Ola galera to com um duvida meio de iniciante mas nao sei como fazer isso nunca tive que trabalhar com arquivo texto, bom é seguinte tenho um sistema de dosagem de peso este sistema vai trabalhar junto com um dataSul. Esse dataSul vai enviar arquivos texto para que meu sistema execute automaticamente e devolva esse arquivo texto novamente com o peso e hora informada. MInha duvida, é a seguiinte na hora de devolver o arquivo texo, tenho que devolver do geito que ele veio por exemplo
esse é arquivo que vem
01 rec0001 1500 2 02 rec0002 1600
arquivo devolução tem que ser igal só detalhe ele vai fazer primeiro a rec0001 e devolver no arquivo texto e depois fazer o rec0002 de devolver tipo assim ficaria arquivo devolvido do sistema
1o. execulção rec0001
01 rec0001 2000 2 02 rec0002 1600
2o. execulção do rec0002
01 rec0001 2000 2 02 rec0002 2000
Como posso fazer isso
esse é arquivo que vem
01 rec0001 1500 2 02 rec0002 1600
arquivo devolução tem que ser igal só detalhe ele vai fazer primeiro a rec0001 e devolver no arquivo texto e depois fazer o rec0002 de devolver tipo assim ficaria arquivo devolvido do sistema
1o. execulção rec0001
01 rec0001 2000 2 02 rec0002 1600
2o. execulção do rec0002
01 rec0001 2000 2 02 rec0002 2000
Como posso fazer isso
Cara para ser sincero,
Eu nao entendi nada.
Eu nao entendi nada.
è assim o sistema vai ler o arquivo texto mandado pelo datasul vai mandar no grid e excultar uma funçao , depois que o sistema excultar essa função ele tem que devolver o arquivo do jeito que veio com o resultado desta função só que po rexemplo tem arquivo texto que vai vir com 1 registro outro 2 outro 3 assim sucessivamente pode ter até N registros no arquivo texto correto cada registro um do lado do outro. Essa função vai ser execultada a cada registro, e devolve o arquivo texto com o resultado da função.
1o. Exemplo mostra o arquivo que o sistema vai ler
01 rec0001 2000 02 rec0002 1600
Só que ele executa a função desse jeito
1o. vezes [Ô]01 rec0001 2000 2[Ô]
resultado da função= 2500 dia-10092009
Devolve
01 rec0001 2500 10092009 02 rec0002 1600
2o. veze que ele executla a função
02 rec0002 1600
resultado da função= 2000 dia-10092009
devolve
01 rec0001 2500 10092009 02 rec0002 2000 10092009
1o. Exemplo mostra o arquivo que o sistema vai ler
01 rec0001 2000 02 rec0002 1600
Só que ele executa a função desse jeito
1o. vezes [Ô]01 rec0001 2000 2[Ô]
resultado da função= 2500 dia-10092009
Devolve
01 rec0001 2500 10092009 02 rec0002 1600
2o. veze que ele executla a função
02 rec0002 1600
resultado da função= 2000 dia-10092009
devolve
01 rec0001 2500 10092009 02 rec0002 2000 10092009
Então você vai ter que devolver exatamente do jeito que você recebeu, porem com algumas informações adicionais ?
isso só que cada registro le uma vez e devolve le outro registro e devolve se tiver 10 registro vai fazer isso le um e devolve o arquivo + informação da função le outro e devolve o arquivo + informação da função le mas tem que estar um do lado do outro
Set rsEMPRESA = gMyConn.Execute([Ô]select nfme from cademp where codigo = [ô][Ô] & CodigoEmp & [Ô][ô][Ô])
If IsNull(rsEMPRESA.Fields([Ô]nfme[Ô]).Value) Or rsEMPRESA.Fields([Ô]nfme[Ô]).Value = [Ô][Ô] Or rsEMPRESA.Fields([Ô]nfme[Ô]).Value = [Ô]0[Ô] Then
nFMEnFDE = [Ô]0001[Ô]
Else
nFMEnFDE = rsEMPRESA.Fields([Ô]nfme[Ô]).Value + 1
nFMEnFDE = Format(nFMEnFDE, [Ô]0000[Ô])
End If
Cont = 0
Set rsCto = gMyConn.Execute([Ô]select cto_dtemissao,cto_conhecimento,cto_aliquota,cto_vlricms,cto_totalprest,cto_idcli from cadcto where cto_dtemissao BETWEEN [ô][Ô] & Format(Me.Mskdtinicial.FormattedText, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô] AND [ô][Ô] & Format(Me.mskdtfinal.FormattedText, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô] and isnull(cto_canc) and cto_codemp = [ô][Ô] & CodigoEmp & [Ô][ô][Ô])
If rsCto.RecordCount > 0 Then
gMyConn.Execute [Ô]UPDATE cademp SET nfme = [ô][Ô] & Format(nFMEnFDE, [Ô]0000[Ô]) & [Ô][ô] WHERE codigo = [ô][Ô] & CodigoEmp & [Ô][ô][Ô]
nFDE = [Ô]NFDE[Ô] & nFMEnFDE
nLocal = wImporta + [Ô]M:\WINTRANSP\NFMENFDE\[Ô] [ô] Declara para guarda o local
[ô]nNome = nLocal + [Ô]Fiscal.txt[Ô]
nFDE = nLocal + Format(nFDE, [Ô]0000[Ô]) + [Ô].txt[Ô]
nFME = [Ô]NFME[Ô] & nFMEnFDE
nFME = nLocal + Format(nFME, [Ô]0000[Ô]) + [Ô].txt[Ô]
Open nFDE For Output As #1 [ô] Abre o arquivo para saÃda.
Do While Not rsCto.EOF
[ô]nText = [Ô]0024[Ô]
[ô]nText = nText + rsCto.Fields([Ô]cto_conhecimento[Ô]).Value
[ô]nText = nText + rsCto.Fields([Ô]cto_conhecimento[Ô]).Value
[ô]If rsCto.Fields([Ô]cto_canc[Ô]).Value = [Ô]C[Ô] Then
[ô]nText = nText + [Ô]S[Ô]
[ô]Else
[ô]nText = nText + [Ô]N[Ô]
[ô]End If
[ô]nText = nText + [Ô]000000000000.00[Ô]
nText = [Ô]P21.6N353000019FFRE02 010302034 CU UN[Ô]
nText = nText + Replace(rsCto.Fields([Ô]cto_dtemissao[Ô]).Value, [Ô]-[Ô], [Ô][Ô])
nText = nText + [Ô]01011352001[Ô]
nText = nText + rsCto.Fields([Ô]cto_conhecimento[Ô]).Value
nText = nText + [Ô]00709575000010000000010000000661014[Ô]
nText = nText + Format(Replace(rsCto.Fields([Ô]cto_aliquota[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]00000[Ô])
nText = nText + Format(Replace(rsCto.Fields([Ô]cto_vlricms[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]0000000000000[Ô])
nText = nText + Format(Replace(rsCto.Fields([Ô]cto_totalprest[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]0000000000000[Ô])
nText = nText + Format(Replace(rsCto.Fields([Ô]cto_totalprest[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]0000000000000[Ô])
nText = nText + [Ô]0000NN0000000000000[Ô]
Print #1, Tab(1); nText
Cont = Cont + 1
txtCont.Text = Cont
txtCont.Refresh
rsCto.MoveNext
Loop
xText = [Ô]P21.6FNFDE[Ô]
xText = xText + Format(nFMEnFDE, [Ô]0000[Ô])
xText = xText + Format(Cont, [Ô]000000[Ô])
[ô] xText = xText + [Ô] [Ô]
Print #1, Tab(1); xText
Close #1
Set rsCto = gMyConn.Execute([Ô]select cto_dtemissao,cto_conhecimento,cto_aliquota,cto_vlricms,cto_totalprest,cto_idcli,cto_idclides from cadcto where cto_dtemissao BETWEEN [ô][Ô] & Format(Me.Mskdtinicial.FormattedText, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô] AND [ô][Ô] & Format(Me.mskdtfinal.FormattedText, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô] and isnull(cto_canc) and cto_codemp = [ô][Ô] & CodigoEmp & [Ô][ô][Ô])
Open nFME For Output As #1 [ô] Abre o arquivo para saÃda.
Do While Not rsCto.EOF
nTexto = [Ô]P21.6N353000010070957500001[Ô]
nTexto = nTexto + rsCto.Fields([Ô]cto_conhecimento[Ô]).Value
nTexto = nTexto + [Ô]CU 007095750000123710103020341352C0000S0101[Ô]
nTexto = nTexto + Replace(rsCto.Fields([Ô]cto_dtemissao[Ô]).Value, [Ô]-[Ô], [Ô][Ô])
nTexto = nTexto + Replace(rsCto.Fields([Ô]cto_dtemissao[Ô]).Value, [Ô]-[Ô], [Ô][Ô])
nTexto = nTexto + [Ô] SP[Ô]
Set rsCli = gMyConn.Execute([Ô]select estfat from cadcli where cli_id = [ô][Ô] & rsCto.Fields([Ô]cto_idcli[Ô]).Value & [Ô][ô][Ô])
nTexto = nTexto + rsCli.Fields([Ô]estfat[Ô]).Value
rsCli.CloseRecordset
nTexto = nTexto + [Ô] [Ô]
Set rsCli = gMyConn.Execute([Ô]select estfat from cadcli where cli_id = [ô][Ô] & rsCto.Fields([Ô]cto_idclides[Ô]).Value & [Ô][ô][Ô])
nTexto = nTexto + rsCli.Fields([Ô]estfat[Ô]).Value
rsCli.CloseRecordset
nTexto = nTexto + rsCto.Fields([Ô]cto_conhecimento[Ô]).Value
nTexto = nTexto + [Ô] [Ô]
nTexto = nTexto + Format(Replace(rsCto.Fields([Ô]cto_aliquota[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]00000[Ô])
nTexto = nTexto + [Ô]NMG 0661014[Ô]
nTexto = nTexto + Format(Replace(rsCto.Fields([Ô]cto_totalprest[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]0000000000000[Ô])
nTexto = nTexto + Format(Replace(rsCto.Fields([Ô]cto_vlricms[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]000000000000[Ô])
nTexto = nTexto + [Ô]000000000000SSNN[Ô]
rsCto.MoveNext
Print #1, Tab(1); nTexto
Loop
xText = [Ô]P21.6FNFME[Ô]
xText = xText + Format(nFMEnFDE, [Ô]0000[Ô])
xText = xText + Format(Cont, [Ô]000000[Ô])
[ô] xText = xText + [Ô] [Ô]
Print #1, Tab(1); xText
Close #1
MsgBox [Ô]ARQUIVO GERADO COM ÊXITO !!![Ô] & [Ô] [Ô] & [Ô] [Ô] & [Ô] [Ô] & [Ô]NFMENFDE\[Ô] & [Ô]NFDE[Ô] & nFMEnFDE & [Ô] [Ô] & [Ô] [Ô] & [Ô]/[Ô] & [Ô] [Ô] & [Ô] [Ô] & [Ô]NFMENFDE\[Ô] & [Ô]NFME[Ô] & nFMEnFDE & [Ô] [Ô] & [Ô] [Ô], vbExclamation
Else
MsgBox [Ô]NENHUM REGISTRO A SER EXPORTADO.[Ô], vbOKOnly + vbExclamation, [Ô][Ô]
End If
Da uma Olhada nesse exemplo
If IsNull(rsEMPRESA.Fields([Ô]nfme[Ô]).Value) Or rsEMPRESA.Fields([Ô]nfme[Ô]).Value = [Ô][Ô] Or rsEMPRESA.Fields([Ô]nfme[Ô]).Value = [Ô]0[Ô] Then
nFMEnFDE = [Ô]0001[Ô]
Else
nFMEnFDE = rsEMPRESA.Fields([Ô]nfme[Ô]).Value + 1
nFMEnFDE = Format(nFMEnFDE, [Ô]0000[Ô])
End If
Cont = 0
Set rsCto = gMyConn.Execute([Ô]select cto_dtemissao,cto_conhecimento,cto_aliquota,cto_vlricms,cto_totalprest,cto_idcli from cadcto where cto_dtemissao BETWEEN [ô][Ô] & Format(Me.Mskdtinicial.FormattedText, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô] AND [ô][Ô] & Format(Me.mskdtfinal.FormattedText, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô] and isnull(cto_canc) and cto_codemp = [ô][Ô] & CodigoEmp & [Ô][ô][Ô])
If rsCto.RecordCount > 0 Then
gMyConn.Execute [Ô]UPDATE cademp SET nfme = [ô][Ô] & Format(nFMEnFDE, [Ô]0000[Ô]) & [Ô][ô] WHERE codigo = [ô][Ô] & CodigoEmp & [Ô][ô][Ô]
nFDE = [Ô]NFDE[Ô] & nFMEnFDE
nLocal = wImporta + [Ô]M:\WINTRANSP\NFMENFDE\[Ô] [ô] Declara para guarda o local
[ô]nNome = nLocal + [Ô]Fiscal.txt[Ô]
nFDE = nLocal + Format(nFDE, [Ô]0000[Ô]) + [Ô].txt[Ô]
nFME = [Ô]NFME[Ô] & nFMEnFDE
nFME = nLocal + Format(nFME, [Ô]0000[Ô]) + [Ô].txt[Ô]
Open nFDE For Output As #1 [ô] Abre o arquivo para saÃda.
Do While Not rsCto.EOF
[ô]nText = [Ô]0024[Ô]
[ô]nText = nText + rsCto.Fields([Ô]cto_conhecimento[Ô]).Value
[ô]nText = nText + rsCto.Fields([Ô]cto_conhecimento[Ô]).Value
[ô]If rsCto.Fields([Ô]cto_canc[Ô]).Value = [Ô]C[Ô] Then
[ô]nText = nText + [Ô]S[Ô]
[ô]Else
[ô]nText = nText + [Ô]N[Ô]
[ô]End If
[ô]nText = nText + [Ô]000000000000.00[Ô]
nText = [Ô]P21.6N353000019FFRE02 010302034 CU UN[Ô]
nText = nText + Replace(rsCto.Fields([Ô]cto_dtemissao[Ô]).Value, [Ô]-[Ô], [Ô][Ô])
nText = nText + [Ô]01011352001[Ô]
nText = nText + rsCto.Fields([Ô]cto_conhecimento[Ô]).Value
nText = nText + [Ô]00709575000010000000010000000661014[Ô]
nText = nText + Format(Replace(rsCto.Fields([Ô]cto_aliquota[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]00000[Ô])
nText = nText + Format(Replace(rsCto.Fields([Ô]cto_vlricms[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]0000000000000[Ô])
nText = nText + Format(Replace(rsCto.Fields([Ô]cto_totalprest[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]0000000000000[Ô])
nText = nText + Format(Replace(rsCto.Fields([Ô]cto_totalprest[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]0000000000000[Ô])
nText = nText + [Ô]0000NN0000000000000[Ô]
Print #1, Tab(1); nText
Cont = Cont + 1
txtCont.Text = Cont
txtCont.Refresh
rsCto.MoveNext
Loop
xText = [Ô]P21.6FNFDE[Ô]
xText = xText + Format(nFMEnFDE, [Ô]0000[Ô])
xText = xText + Format(Cont, [Ô]000000[Ô])
[ô] xText = xText + [Ô] [Ô]
Print #1, Tab(1); xText
Close #1
Set rsCto = gMyConn.Execute([Ô]select cto_dtemissao,cto_conhecimento,cto_aliquota,cto_vlricms,cto_totalprest,cto_idcli,cto_idclides from cadcto where cto_dtemissao BETWEEN [ô][Ô] & Format(Me.Mskdtinicial.FormattedText, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô] AND [ô][Ô] & Format(Me.mskdtfinal.FormattedText, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô] and isnull(cto_canc) and cto_codemp = [ô][Ô] & CodigoEmp & [Ô][ô][Ô])
Open nFME For Output As #1 [ô] Abre o arquivo para saÃda.
Do While Not rsCto.EOF
nTexto = [Ô]P21.6N353000010070957500001[Ô]
nTexto = nTexto + rsCto.Fields([Ô]cto_conhecimento[Ô]).Value
nTexto = nTexto + [Ô]CU 007095750000123710103020341352C0000S0101[Ô]
nTexto = nTexto + Replace(rsCto.Fields([Ô]cto_dtemissao[Ô]).Value, [Ô]-[Ô], [Ô][Ô])
nTexto = nTexto + Replace(rsCto.Fields([Ô]cto_dtemissao[Ô]).Value, [Ô]-[Ô], [Ô][Ô])
nTexto = nTexto + [Ô] SP[Ô]
Set rsCli = gMyConn.Execute([Ô]select estfat from cadcli where cli_id = [ô][Ô] & rsCto.Fields([Ô]cto_idcli[Ô]).Value & [Ô][ô][Ô])
nTexto = nTexto + rsCli.Fields([Ô]estfat[Ô]).Value
rsCli.CloseRecordset
nTexto = nTexto + [Ô] [Ô]
Set rsCli = gMyConn.Execute([Ô]select estfat from cadcli where cli_id = [ô][Ô] & rsCto.Fields([Ô]cto_idclides[Ô]).Value & [Ô][ô][Ô])
nTexto = nTexto + rsCli.Fields([Ô]estfat[Ô]).Value
rsCli.CloseRecordset
nTexto = nTexto + rsCto.Fields([Ô]cto_conhecimento[Ô]).Value
nTexto = nTexto + [Ô] [Ô]
nTexto = nTexto + Format(Replace(rsCto.Fields([Ô]cto_aliquota[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]00000[Ô])
nTexto = nTexto + [Ô]NMG 0661014[Ô]
nTexto = nTexto + Format(Replace(rsCto.Fields([Ô]cto_totalprest[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]0000000000000[Ô])
nTexto = nTexto + Format(Replace(rsCto.Fields([Ô]cto_vlricms[Ô]).Value, [Ô].[Ô], [Ô][Ô]), [Ô]000000000000[Ô])
nTexto = nTexto + [Ô]000000000000SSNN[Ô]
rsCto.MoveNext
Print #1, Tab(1); nTexto
Loop
xText = [Ô]P21.6FNFME[Ô]
xText = xText + Format(nFMEnFDE, [Ô]0000[Ô])
xText = xText + Format(Cont, [Ô]000000[Ô])
[ô] xText = xText + [Ô] [Ô]
Print #1, Tab(1); xText
Close #1
MsgBox [Ô]ARQUIVO GERADO COM ÊXITO !!![Ô] & [Ô] [Ô] & [Ô] [Ô] & [Ô] [Ô] & [Ô]NFMENFDE\[Ô] & [Ô]NFDE[Ô] & nFMEnFDE & [Ô] [Ô] & [Ô] [Ô] & [Ô]/[Ô] & [Ô] [Ô] & [Ô] [Ô] & [Ô]NFMENFDE\[Ô] & [Ô]NFME[Ô] & nFMEnFDE & [Ô] [Ô] & [Ô] [Ô], vbExclamation
Else
MsgBox [Ô]NENHUM REGISTRO A SER EXPORTADO.[Ô], vbOKOnly + vbExclamation, [Ô][Ô]
End If
Da uma Olhada nesse exemplo
é o [Ô]REC[Ô] que delimita cada registro? Se for, fica MUITO fácil fazer.
coloquei em anexo o exemplo do arquivo texto do jetio que o data sul manda
[th]
QtdReceita=01
QtdIngrediente=02
NomeReceita=BM2781
tamborao=18
ingrediente=FELDS
umidade=05
tolerancia=10002
porcentagem=12000
kiloreal=199
devolução=XXXX
Essse exemplo no lugar do xxxx tenho que colocar o resultado da função com a data e hora
Cabecalho | [/th]
0102BM278118FELDS051000212000199XXXX18ARGIL049000252000765XXXX |
QtdReceita=01
QtdIngrediente=02
NomeReceita=BM2781
tamborao=18
ingrediente=FELDS
umidade=05
tolerancia=10002
porcentagem=12000
kiloreal=199
devolução=XXXX
Essse exemplo no lugar do xxxx tenho que colocar o resultado da função com a data e hora
Mas não tem um delimitador? Ou quantidade de caracteres por registro? Ou o [Ô]XXXX[Ô] é o delimitador de registros?
nao a leitura ja fazendo eu uso o mid pra contar é treta rsrs mas só falta fazer o arquivo de devolução se viu o arquivo texto ?
Sim, eu vi o teu arquivo.
Me diz ae: o XXXX mostra o fim do registro?
Tipo, aqui tem 2 [Ô]XXXX[Ô], então quer dizer dois registros?
0102BM278118FELDS051000212000199XXXX18ARGIL049000252000765XXXX
Me diz ae: o XXXX mostra o fim do registro?
Tipo, aqui tem 2 [Ô]XXXX[Ô], então quer dizer dois registros?
Tópico encerrado , respostas não são mais permitidas