Página 1 de 1

Problema

Enviado: 15 Dez 2004 14:39
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

Enviado: 15 Dez 2004 15:41
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..

oLA

Enviado: 15 Dez 2004 16:03
por JuniorVaz
Não, não tentei isto não, mas não entendi a sua colokação, poderia me dar um exemplo? Obrigado...

Enviado: 15 Dez 2004 16:47
por Antonio
Engano...

Enviado: 15 Dez 2004 16:48
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...

Enviado: 16 Dez 2004 15:28
por Everton
Olá Junior.

É isso que o Sergio mostrou no exemplo, deu certo ?

Enviado: 16 Dez 2004 21:21
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