Problema

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

JuniorVaz
Usuário Nível 3
Usuário Nível 3
Mensagens: 100
Registrado em: 16 Jul 2004 15:49

Problema

Mensagem por JuniorVaz »

Ola, estou criando um sistema para transportar as informações de um dbf do meu sistema, para o bradesco net empresas. Esta importação é feita através de um *.txt. Ja criei a estrutura, td ok. Mas no meu sistema, por vezes é necessario cadastrar algum cliente que agente não possue o cnpj, então liberei pra preenxer com 00000000000000, pois se digitar outra coisa o verificador diz que é cnpj invcalido... blw, acontece, que o bradesco net empresas não aceita cnpj invalidos, e nem com 00000, então na rotina que fiz abaixo, estou tentando que ele faça a relação dos cliente, mas quando algum tiver 00000000000000 como cnpj, ele pular este cliente...

USE CADCLI
SET DEVICE TO PRINT
SET PRINTER TO SACADO.TXT
LN=0
CRLF=CHR(13)+CHR(10)
DO WHILe .NOT. EOF()
xcnpj=cnpj
do case
case xcnpj = "00000000000000"
loop
endcase
@ LN,00 SAY cnpj+RAZAO+"02"+cnpj+endereco+"-"+num+cidade+bairro+uf+cep+" "+CRLF
SKIP
ENDDO
SET DEVICE TO SCREEN
SET PRINTER TO
DBCLOSEALL()
RETURN


Tentei isto, mas o sistema trava, alguem tem outra ideia pra me passar? ou me mostrar o que tem de errado, outra coisa, não sei o porque, mas quando ele cria o relatório, na primeira linha fax exato, da segunda em diante, aparece um quadradinho no inicio de cada linha.
Gostaria de ter uma ideia de porque acontece isto... VLW
Everton
Usuário Nível 3
Usuário Nível 3
Mensagens: 143
Registrado em: 07 Jul 2004 08:53
Localização: Campo Grande - MS

Mensagem por Everton »

Olá Junior.

Vc já tentou colocar um alis->(dbskip()) antes do loop para ele dar o loop e pular pro proximo registro do DBF..
Everton Luiz Penteado
Clipper 5.2b - Blink 7.0
JuniorVaz
Usuário Nível 3
Usuário Nível 3
Mensagens: 100
Registrado em: 16 Jul 2004 15:49

oLA

Mensagem por JuniorVaz »

Não, não tentei isto não, mas não entendi a sua colokação, poderia me dar um exemplo? Obrigado...
Avatar do usuário
Antonio
Usuário Nível 3
Usuário Nível 3
Mensagens: 347
Registrado em: 14 Ago 2003 17:33
Localização: Sao Paulo - SP
Contato:

Mensagem por Antonio »

Engano...
Editado pela última vez por Antonio em 15 Dez 2004 16:52, em um total de 2 vezes.
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
evolver
Membro Master
Membro Master
Mensagens: 189
Registrado em: 28 Ago 2004 01:02
Localização: Cruz Alta - RS
Contato:

Mensagem por evolver »

Código: Selecionar todos

USE CADCLI
SET DEVICE TO PRINT
SET PRINTER TO SACADO.TXT
LN=0
CRLF=CHR(13)+CHR(10)
DO WHILe .NOT. EOF()
xcnpj=cnpj
do case
case xcnpj = "00000000000000"
SKIP
loop
endcase
@ LN,00 SAY cnpj+RAZAO+"02"+cnpj+endereco+"-"+num+cidade+bairro+uf+cep+" "+CRLF
SKIP
ENDDO
SET DEVICE TO SCREEN
SET PRINTER TO
DBCLOSEALL()
RETURN
Pequeno erro seu, se ele encontrar um cnpj = um monte de zeros ele apenas executa o loop sem executar um skip o que manteria o registro no cnpj com um monte de zeros, carregando o xcnpj com um monte de zeros de novo e executando um novo loop que manteria no mesmo registro e assim infinitamente...

Veja o código com o SKIP colocado...

Editando:Lol... lancei o meu praticamente junto com o de outro colega forista...
Sergio "Evolver" Fagundes

CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
Everton
Usuário Nível 3
Usuário Nível 3
Mensagens: 143
Registrado em: 07 Jul 2004 08:53
Localização: Campo Grande - MS

Mensagem por Everton »

Olá Junior.

É isso que o Sergio mostrou no exemplo, deu certo ?
Everton Luiz Penteado
Clipper 5.2b - Blink 7.0
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Na minha opnião o Junior fez o maior balaio de gato numa coisa tão simples, não seria mais fácil assim ?

Código: Selecionar todos

USE CADCLI 
SET DEVICE TO PRINT 
SET PRINTER TO SACADO.TXT 
LN=0 
CRLF=CHR(13)+CHR(10) 
DO WHILE .NOT. EOF() 
   xcnpj=cnpj 
   IF XCNPJ<>"00000000000000" 
      @ LN,00 SAY "cnpj+RAZAO+"02"+cnpj+endereco+"+num+cidade+bairro+uf+cep+CRLF
   ENDIF
   SKIP 
ENDDO 
SET DEVICE TO SCREEN 
SET PRINTER TO 
DBCLOSEALL() 
RETURN
Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Responder