sintegra

04/02/2009

bom estou terminando um projeto que trata sobre sintegra e estou com o seguinte problema quando eu gero os registros 75 usando esse codigo   function tgerador.sRegistro75(var Err_Msg: string; var qnt_ok, qnt_erro: integer): boolean;
var
 TempStr: string;
begin
 Result := True;  //Executa a seleção dos registros no banco de dados
 with deasy.QrySintegra do
  begin
   Close;   unprepare;    sql.Clear;
   SQL.Add('SELECT distinct barras, cst, descricao, un,');
   SQL.Add('aliquota, basedecalculo, basest, dataemissao');
   SQL.Add('FROM itensnota WHERE');
   SQL.Add('notaid IN (');
   SQL.Add('SELECT notaid FROM nota WHERE');
   SQL.Add('(dataemissao BETWEEN :datahora_ini AND :datahora_fim) AND (');
   SQL.Add('(modelo = ''01'') OR');
   SQL.Add('(modelo = ''1A'') OR');
   SQL.Add('(modelo = ''03'') OR');
   SQL.Add('(modelo = ''06'') OR');
   SQL.Add('(modelo = ''22'')))');    ParamByName('datahora_ini').asdatetime := DataHora_Inicial;
   ParamByName('datahora_fim').asdatetime := DataHora_Final;    prepare;    Open;    if RecordCount > 0 then
    begin
     while not deasy.QrySintegra.EOF do
      begin
       //Faz a chamada da dll passando as informações do banco de dados e armazena numa string temporária
       TempStr := Registro75(datetostr(DataHora_Inicial),                       //Data Inicial
         fields.FieldByName('dataemissao').asstring, //datetostr(DataHora_Final),                                             //Data_Final
         Fields.FieldByName('barras').AsString,                           //Cod_Produto_Servico
         Fields.FieldByName('cst').AsString,                                 //Cod_NCM
         Fields.FieldByName('descricao').AsString,                                //Descricao
         Fields.FieldByName('un').AsString,                                //UND_Medida
         '0',        //Aliquota_IPI
         formatcurr('0.00', Fields.FieldByName('aliquota').AsFloat),       //Aliquota_ICMS
         formatcurr('0.00', Fields.FieldByName('basedecalculo').AsFloat),       //Aliquota_ICMS
         Fields.FieldByName('basest').AsString
         );                         //Base_ICMS_Subst
       //Executa o tratamento da string temporária testando se houve erro
       //Caso haja erro, executa o log das informações inconsistentes no RichEdit
       if not Trata_SIntegra_Str(TempStr) then
        begin
         qnt_erro := qnt_erro + 1;
         Result := False;          Err_Msg := Err_Msg + #13 +
           '    Data Inicial: ' + datetostr(DataHora_Inicial) + #13 +
           '    Data Final: ' + fields.FieldByName('dataemissao').asstring + #13 +//datetostr(DataHora_Final) + #13 +
           '    Codigo Produto: ' + Fields.FieldByName('barras').AsString + #13 +            '    Descricao: ' + Fields.FieldByName('descricao').AsString + #13 +
           '    Unidade: ' + Fields.FieldByName('un').AsString + #13 +
           '    CST: ' + Fields.FieldByName('cst').AsString + #13 +            '    Aliquota ICMS: ' + floattostr(Fields.FieldByName('aliquota').AsFloat * 100) + #13 +
           '    Base ICMS Subst: ' + Fields.FieldByName('basest').AsString;
        end
       else
        qnt_ok := qnt_ok + 1;        if not EOF then
         Next;        if quit_sintegra then
         exit;
      end;
    end;
  end;
end;   ele faz direitim so que se tiver dois registro 75 na mesma data de emissao ele gera dois 75 quero fazer de uma maneira que ele nao duplique esses registros ja tentei um monte de coisa so que so meio novo no rad e to um tempao mechendo com esse projeto!    
Paulo Silva

Paulo Silva

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

04/02/2009

Ola, Paulo.

  Observe o seu select, o Distinct irá retornar duas linhas somente quando um dos registros estiver diferente exemplo


Nome         Telefone              SEXO
ABC             123                      F
DBC             123                      F
ABC             123                      M

  o 1º e o 2º registro são semelhantes mas devido ao sexo ser diferentes, com o distinct ele irá possuir um outro registro. Então tente ver as colunas que são semelhantes e as que você realmente não vai precisar usar. Evitando assim este tipo de erro.

Att,

Wesley Y

GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

mais eu quero que ele nao repita o codigo do produto onde eu errei? tem uma maneira melhor de fazer isso? pra que ele nao repita os produtos?
GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

tipo wesley eu queria que ele mostrasse so um registro por emissao como eu tiraria a descricao do distinct ou tem uma outra forma mais viavel de fazer isso?
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Paulo, tem como você mandar estas duas tabelas ? Qual é o banco de dados ?


Eu estava pensando em fazer algo do tipo

SELECT CST, DESCRICAO, DESCRICAO FROM ITENSNOTA I
WHERE I.IDNOTA IN (
                              ( SELECT IDNOTA FROM NOTA
                               WHERE DATAEMISSAO BETWEEN '2008-01-01' AND '2008-03-01')
             )
O problema do distinct é que se você tiver 2 registros identicos com um campo apenas diferente, ele vai duplicar, tente, no teu select, tente retirar todos os campos deixando somente o IDNota, e veja no que vai dar, se tiver como me mandar o banco.

Att,

Wesley Y
GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

olha wesley quando eu executo o select ele me retorna       7520060701200607277898119110030 070     ACUCAR SABOR CRISTAL 5KG                             FD    000001200810930000000000000
7520060701200607277898119110030 070     ACUCAR SABOR CRISTAL 5KG 6X5                         FD    000001200121670000000000000   ou seja e o mesmo produto na mesma emissao so que o 6x5 ae diferenciou ele sabe tipo eu fiz dois cadastros com a mesma emissao do mesmo produto um entrou no meu estoque hj de manha depois outro caminhao veio e me trouxe novamente o mesmo produto so que o kra que foi digitar colocou o 6x5 que mudou a parada ao inves de ele me retornar que esse produto entrou hj ele ta diferenciando os dois o que eu quero fazer e pegar e colocar pelo codigo de barra ae tipo q entrou so o açucar com o codigo 7898119110030 tipo hj entrou açucar com esse codigo na data x por fardo so isso eu precisaria que meu select pegasse so um com o mesmo codigo e a mesma data de emissao ou seja que desse um distinct no codigo do produto pq o mesmo produto pode entrar 7 vezes no mesmo dia como vc esta vendo tem o mesmo codigo mais ele ta considerando outro produto!
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo, Bom dia.
  Estou analisando seu problema e tenho uma dúvida, se o código de barras é o mesmo consequentemente o produto será o mesmo, sendo assim seu sistema não esta tendo consistencia, onde você tem o mesmo produto com os mesmos dados cadastrados, assim fica inviável de resolver seu problema, pois como te falei o distinct só irá funcionar para registros iguais. Exemplo

===================
CodBarra  Descricao QNT     |
0000001   ABC              5        |
0000001   ABC              5        |
0000001   ABCDEF       5        |
===================
  Com o exemplo a cima usando o Distinct ele retornaria apenas 2 registros, como abaixo é mostrado.

===================
CodBarra  Descricao QNT     |
0000001   ABC              5       |
0000001   ABCDEF       5       |
===================

  Sugiro que na hora em que você ou algum outro usuário for informar os produtos que chegaram, em um determinado caminhão, o usuário não possa digitar a descrição, apenas fazer uma consulta pelo Cód de Barras ou pela propria descrição, mas nunca cadastrar um novo produto, pois se mudar um "a", ou um ".", o seu distinct não irá funcionar.
  Mais a baixo você disse que queria pegar o produto com o mesmo Cod.Barras e a mesma Data sendo assim coloque no seu "Where" um parametro para informar qual é a data desejada, sendo assim ficaria mais facil derrepente nem precisaria do distinct.

Exemplo : Sem o Distinct

SELECT DESCRICAO, QNT, CODBARRA

FROM PRODUTO

WHERE  DATA = :P_DATA
    AND CODBARRA = :P_CODBARRA

Exemplo : Com o Distinct

SELECT DISCINCT DESCRICAO, QNT, CODBARRA

FROM PRODUTO

WHERE  DATA = :P_DATA

   Espero que isso resolva o seu problema, meu caro. Estamos a disposição.


Att,

Wesley Y
GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

Sim e o mesmo codigo sempre so que nao e um cadastro sabe, basta que o cidadao escreva o nome do produto, sabe eu nao estou usando um form para cadastrar esses produtos sabe so to colocando uma descricao, pensei que que tinha como ele distinguir por exemplo so pelo codigo e me retornar o restante dos campos tipo ele me mostrar so um produto com datas de emissoes iguais, claro que se eu estivesse fazendo o cadastro desses produtos n teria esse problema, nao há uma forma de fazer isso? fazer ele me retornar por exemplo so 7520060701200607277898119110030 070     ACUCAR SABOR CRISTAL 5KG                             FD    000001200810930000000000000   so esse?       um colega meu disse pra eu fazer um distinct no codigo depois fazer outro select passando os id eu nao entendi muito bem! pq eu nao queria que a pessoa cadastrasse o produto por uma questao de agilidade e pq ainda estou fazengo alguns testes, claro que depois vou colocar um cadastro e tal.    
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo, tenho que te falar duas coisas.
  1 - Você esta resolvendo seu problema hoje, porém amanha teras outros tipos de problema, só queria te dar uma dica, se possivel para com a forma que esta fazendo e comece a desenvolver um sistema, pois seus dados daqui a pouco vão começar a se tornarem inconsistentes dai seu problema, poderá e será bem maior.
  2 - No post Postado em: 2/4/2009 6:28:02 PM, eu te mostrei como fazer isso que seu amigo esta dizendo, você da um select internet so com os codigos e por fora você faz um outro select. Exemplo.

SELECT CST, DESCRICAO, DESCRICAO FROM ITENSNOTA I
WHERE I.IDNOTA IN (
                              ( SELECT IDNOTA FROM NOTA
                               WHERE DATAEMISSAO BETWEEN '2008-01-01' AND '2008-03-01')
             )

Isso ae resolverá teu problema no momento, mas futuramente não terá outra solução a não ser desenvolver o sistema.  Espero que tenha ajudado

Att,

Wesley
GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

Boa tarde wesley, nao entendi esse ultimo select seu O.o nao deu certo aki nao pq funciona assim esses selects que eu estou executando e so pra colocar em um txt 1 produto de cada q entrou em cada dia etende voce ja trabalhou com sintegra? eu tenho plena consiencia e tenho tb um cadastro de produtos com as pesquisas e tal que funciona perfeitamente mais como eu disse eu quero analisar um arquivo que esta em bloco de notas que esta com esse problema onde a pessoa nao cadastrou apenas escreveu tipo o arquivo tem 4 mil produtos somente 96 deu esse problema pq nao foi cadastrado igual teria que ser, como eu disse estou começando agora e esses tipos de erros sao comuns, entao eu preciso analizar esse arquivo mais nao estou conseguindo validar ele pois existem registros 75 em duplicidade nesse ultimo select q vc lisou n deu certo nao aconteceu a mesma coisa, ou eu entendi mal oque acontece e que preciso so diferenciar o codigo nao repetira o codigo no dia entende? isso e uma medida somente para eu poder analizar o arquivo pois pretendo fazer o trem certinho so que eu nao estou conseguindo listar todos os produtos do mes sem que ele repita pq como a pessoa digitou alguns itens como eu digo nem todos mais alguns eu tb posso ir la e excluir manualmente tb da certo mais e meio deselegante O.o eu precisava disso com uma certa urgencia por isso estou tomando essas medidas. preciso que ele execute um   SQL.Add('SELECT barras, select   cst, descricao, un,');
   SQL.Add('aliquota, basedecalculo, basest, dataemissao');
   SQL.Add('FROM itensnota  WHERE');
   SQL.Add('notaid IN (');
   SQL.Add('SELECT notaid FROM nota WHERE');
   SQL.Add('(dataemissao BETWEEN :datahora_ini AND :datahora_fim) AND (');
   SQL.Add('(modelo = ''01'') OR');
   SQL.Add('(modelo = ''1A'') OR');
   SQL.Add('(modelo = ''03'') OR');
   SQL.Add('(modelo = ''06'') OR');
   SQL.Add('(modelo = ''22'')))');    ParamByName('datahora_ini').asdatetime := DataHora_Inicial;
   ParamByName('datahora_fim').asdatetime := DataHora_Final;   tipo so que ele desse um distinct so no codigo pois assim nao iria aparecer dois produtos ja que eles teem o mesmo codigo e a mesma data de emissao, tipo ali ele pega esses campos e passa pra um txt com os dados eu preciso que ele fassa isso mais sem repetir produtos com o mesmo codigo se o select desse distinct no codigo por exemplo entao nao teria dois produtos com o mesmo codigo, mais realmente eu n sei como faz isso essa e a parte complicada da coisa sao apenas medidas provisorias ate mesmo pq meu projeto ainda e so teste e tem muito o que melhorar ainda!!!       pega meu banco de dados eu upei no meu ftp ftp.brturbo.com.br usuario: destruidor28 senha:123mudar (esqueci minha senha eles alteraram pra mim mais eu nunca mudei aehuuhehueauuhe O.o)
ta na pasta nomeada de banco firebird 2.1            
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo,


   Me diz uma coisa, neste arquivo Txt, existem produtos Iguais?  São somente daquela data que você esta falando, exemplo 4 mil produtodos da data de hoje.?

  Pois como te expliquei os dados tem que estar iguais para que o distinct funciona. Não estou conseguindo ter acesso ao seu FTP. Manda ae o link que você abre inicialmente.



Fico no aguardo.

Att,

Wesley Y
GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

ftp://ftp.brturbo.com.br/ usuario: destruidor28 senha: 123mudar           tipo so pode ser especificado um produto por dia, ate que se complete um mes saka ae o que acontece e o seguinte no fim do mes vc tem q colocar uma relação por dia de cada produto que entrou so isso ta no meu ft o arquivo para que vc entenda vou colocar tb o txt, so pode haver um codigo por cada tipo de produto por dia saka?
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo,
   É o seguinte, você disse que os produtos não se repetem no mes, então quando você usar a clausula
Where DATA BETWEEN :DTINI AND :DTFIM, ele so vai pegar os produtos daquele mes, não tem como ele pegar os produtos de outro mes não, e então você não precisa usar o distinct, pois todos os produtos que estão ali são diferentes. Sacou ?

  Se possivel me manda o teu programa, pra eu dar uma olhada. 
  Qual FireBird você esta usando. 2.1 correto ?. Tentei me conectar configurando FB 1.5, 2.0. 2.1 e todos deram o mesmo erro..


Wrong or obsolete version


Fico no aguardo de mais informações


GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

Wesley, eu postei errado aki a pergunta nao é o mesmo codigo nao e que nao pode ter o mesmo produto duas vezes no mesmo dia soh isso nao tem nada haver com o codigo so que eu ja vi em muitos sistemas que o cidadao permite o cadastro duplo e mesmo assim na hora de gerar o arquivo mostra so um registro sabe tipo como eu faço pra no select ele me gerar so um registro tipo por emissao ou seja por dia! o meu colega aki fez mais eu nao entendi ele montou esse select no access!
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo,
  Me mande o Select do seu amigo, para que adptar, e te explicar como funciona. Fico no aguardo.


Att,
Wesley Y
GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

Upei novamente o banco la no ftp wesley ftp://ftp.brturbo.com.br login: destruidor28 senha:123mudar   firebird 2.1 da uma analisada aguardo retorno!          
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo, estou tentando acessar o FTP, coloco o usuario e a senha porém, não consigo conectar. Toda hora ele pede usuário e senha. Não sei o motivo. Fico no aguardo de mais instruções no que possa estar acontecendo.

Att,

Wesley Y
GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

me conectei agora normalmente, tenta conecta dnovo!
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo, consegui entrar no ftp, porém não estou conseguindo acessar teu banco de dados. Faça uma importação deste arquivo que você botou no FTP, e veja se consegue,pois eu não estou conseguindo.


Att,
Wesley Y
GOSTEI 0
Devmedia

Devmedia

04/02/2009

Paulo,
quero ressaltar que vc possui dentro da consultoria o seu próprio disco virtual. Na home da consultoria vc tem a opção "meu disco virtual" e o link de um video explicativo sobre como utilizá-lo.
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo, vamos fazer uma coisa, me manda o script somente de criação das suas tabelas, e os inserts para poder fazer manualmente  para não perdermos tempo tentando resolver a importação do banco. O que você acha ?

Estou a sua disposição. Aguardando contato.


Att,
Wesley Y
GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

Estou disponibilizando no meu disco virtual aki da devmedia a pasta dados com um monte de banco ne possivel que nenhum vai funcionar O.o!   https://www.devmedia.com.br/imagens/discovirtual/206786/dados.rar
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Paulo, irei verificar o mesmo.

Att
Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo, em fim consegui acessar teu banco de dado,srsrsrs..

Bom o result que eu obtive foi mais ou menos este. A minha pergunta é. Você quer que so apareça uma vez o produto DESINF PINHO BRILL LAV,por exemplo ???

1511440    020    CHOC LACTA BIZ LAKA BCO    PT    17    63,889    0    9/7/2006
154830    020    CHOC NESTLE ESPECIALIDADES    CD    17    72,36    0    9/7/2006
1712490    020    DESINF PINHO BRILL CITR    EE    17    14,878    0    9/7/2006
1712480    020    DESINF PINHO BRIL CITR    EE    17    16,342    0    9/7/2006
1713390    020    DESINF PINHO BRILL LAV    EE    17    14,878    0    9/7/2006
1764040    020    DESINF PINHO BRIL MAIS    EE    17    14,878    0    9/7/2006
1712500    020    DESINF PINHO BRIL PLUS    EE    17    44,634    0    9/7/2006
1730450    020    DESINF PINHO BRIL PLUSEE    E    17    24,514    0    9/7/2006
1700364    020    DETER PO ACE BANAT    EE    17    306,268    0    9/7/2006


Se for isso vai ser facil.. Fico no aguardo..
Att
Wesley Y
GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

Isso mesmo kra!! se tiver dois na mesma data que apareça so um!!
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo,
  A única solução para isso seria você remover as colunas que variam. O que esta em negrito você tem que remover. Entendeu? senão será impossivel, pois se tiver uma descrição com "L" e a outra sem o "L", para o group by ou o distinct, não funcionará. Solução é remover estas colunas. Infelizmente não tem outra saída.


Exemplo:  
1712480    020    DESINF PINHO BRIL CITR          EE      17    16,342     0    9/7/2006
1712490    020    DESINF PINHO BRILL CITR        EE     17    14,878     0    9/7/2006

Att,

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo, como está o chamado ? Você consegui entender a solução? E a dica que te mandei?

Estamos aguardando seu retorno, para concluirmos o chamado.


Att,
Wesley Y
GOSTEI 0
Paulo Silva

Paulo Silva

04/02/2009

esse problema eu consegui resolver com uma solucao momentanea e com uma definitiva, a definitiva seria obrigar o cara cadastrar e pesquisar o produto, mais como eu precisava analisar alguns registros que eu ja tinha feito a merda mesmo eu fiz asssim  //Registro75 - Registro de Código de Produto e Serviço
function tgerador.sRegistro75(var Err_Msg: string; var qnt_ok, qnt_erro: integer): boolean;
var
 TempStr: string;
begin
 Result := True;  //Executa a seleção dos registros no banco de dados
 with deasy.QrySintegra do
  begin
   Close;   unprepare;    sql.Clear;
   SQL.Add('SELECT barras,(select FIRST 1 cst from itensnota t where t.barras = itensnota.barras order by cst asc) AS cst, ');
   SQL.Add('(select FIRSt 1 descricao from itensnota t where t.barras = itensnota.barras order by descricao asc) AS descricao,');
   SQL.ADD('(select FIRSt 1 un from itensnota t where t.barras = itensnota.barras order by un asc) AS un,');
   SQL.ADD('(select FIRSt 1 aliquota from itensnota t where t.barras = itensnota.barras order by aliquota asc) AS aliquota,');
   SQL.ADD('(select FIRSt 1 basedecalculo from itensnota t where t.barras = itensnota.barras order by basedecalculo asc) AS basedecalculo,');
   SQL.ADD('(select FIRSt 1 basest from itensnota t where t.barras = itensnota.barras order by basest asc) AS basest,');
   SQL.Add('dataemissao FROM itensnota  WHERE');
   SQL.Add('notaid IN (');
   SQL.Add('SELECT notaid FROM nota WHERE');
   SQL.Add('(dataemissao BETWEEN :datahora_ini AND :datahora_fim) AND (');
   SQL.Add('(modelo = ''01'') OR');
   SQL.Add('(modelo = ''1A'') OR');
   SQL.Add('(modelo = ''03'') OR');
   SQL.Add('(modelo = ''06'') OR');
   SQL.Add('(modelo = ''55'') OR');
   SQL.Add('(modelo = ''22'')))');
   sql.add('group by barras, dataemissao');
   ParamByName('datahora_ini').asdatetime := DataHora_Inicial;
   ParamByName('datahora_fim').asdatetime := DataHora_Final;    prepare;    Open;    if RecordCount > 0 then
    begin
     while not deasy.QrySintegra.EOF do
      begin
       //Faz a chamada da dll passando as informações do banco de dados e armazena numa string temporária
       TempStr := Registro75(datetostr(DataHora_Inicial),                       //Data Inicial
         fields.FieldByName('dataemissao').asstring, //datetostr(DataHora_Final),                                             //Data_Final
         Fields.FieldByName('barras').AsString,                           //Cod_Produto_Servico
         Fields.FieldByName('cst').AsString,                                 //Cod_NCM
         Fields.FieldByName('descricao').AsString,                                //Descricao
         Fields.FieldByName('un').AsString,                                //UND_Medida
         '0',        //Aliquota_IPI
         formatcurr('0.00', Fields.FieldByName('aliquota').AsFloat),       //Aliquota_ICMS
         formatcurr('0.00', Fields.FieldByName('basedecalculo').AsFloat),       //Aliquota_ICMS
         Fields.FieldByName('basest').AsString
         );                         //Base_ICMS_Subst
       //Executa o tratamento da string temporária testando se houve erro
       //Caso haja erro, executa o log das informações inconsistentes no RichEdit
       if not Trata_SIntegra_Str(TempStr) then
        begin
         qnt_erro := qnt_erro + 1;
         Result := False;          Err_Msg := Err_Msg + #13 +
           '    Data Inicial: ' + datetostr(DataHora_Inicial) + #13 +
           '    Data Final: ' + fields.FieldByName('dataemissao').asstring + #13 +//datetostr(DataHora_Final) + #13 +
           '    Codigo Produto: ' + Fields.FieldByName('barras').AsString + #13 +            '    Descricao: ' + Fields.FieldByName('descricao').AsString + #13 +
           '    Unidade: ' + Fields.FieldByName('un').AsString + #13 +
           '    CST: ' + Fields.FieldByName('cst').AsString + #13 +            '    Aliquota ICMS: ' + floattostr(Fields.FieldByName('aliquota').AsFloat * 100) + #13 +
           '    Base ICMS Subst: ' + Fields.FieldByName('basest').AsString;
        end
       else
        qnt_ok := qnt_ok + 1;        if not EOF then
         Next;        if quit_sintegra then
         exit;
      end;
    end;
  end;
end;
   
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/02/2009

Olá Paulo,

  Que bom que resolvemos o chamado, eu já tinha te falado para você mudar o sistema, um dia você iria ter o trabalho de reescrever tudo isso, obrigando o cara a seguir as regras. Você esta indo no caminho certo.

 Um bom sistema é aquele que evita o erro do usuário, você me pergunta como assim Wesley ? 
  R: Imagina o cpf, onde você tenha que validar os mesmo, ou uma data, ou ate mesmo uma pesquisa de produtos, onde o cara pesquisa em um combo, e não digita ele em um edit.

  Sendo assim o sistema fica muito mais integro, e consistente.

Att,

Wesley Y
GOSTEI 0
POSTAR