Erro ao validar tabela

08/12/2005

0

Boa tarde.
Estou enfrentando um problema no sistema de estoque que estou desenvolvendo. Em uma das rotinas de saída preciso validar três tabelas em um evento OnExit. (CDSCadstr, CDSEstoq, CDSEsGer)
Eu informo o código no DBEdit1.text e então no evento OnExit tenho o seguinte código:


if DBEdit1.Text <> ´´ then 
   begin 
      if Valida(DMEst.CDSCadstr,´CODIGO´,DBEdit1.Text,´Código ´) then  
         begin 
            DMEst.CDSSaiDESCRI.AsString:=DMEst.CDSCadstrDESCRICAO.AsString; 
            DMEst.CDSSaiCOMPLE.AsString:=DMEst.CDSCadstrDESCCOMP.AsString; 
            DMEst.CDSSaiUNIDADE.AsString:=DMEst.CDSCadstrUNIDADE.AsString; 
            DMEst.CDSSaiCLASFISC.AsString:=DMEst.CDSCadstrCLASFISC.AsString; 
            DMEst.CDSSaiCLASCON.AsString:=DMEst.CDSCadstrCLASCON.AsString; 
            DMEst.CDSSaiIPI.AsString:=DMEst.CDSCadstrIPI.AsString; 
            if Valida(DMEst.CDSEstoq,´CODIGO´,DBEdit1.Text,´Código  ´) then 
               begin 
                  if DMEst.CDSEstoqQTDEEFET.AsFloat=0 then 
                     begin 
                        ShowMessage(´Não há material em estoque. Digite outro código!´); 
                        DBEdit1.Clear; 
                        DBEdit1.SetFocus; 
                     end 
                  else 
                     begin
                        DMEst.CDSSaiQTDE_EFET.AsFloat:=DMEst.CDSEstoqQTDEEFET.AsFloat; 
                        DMEst.CDSSaiGONDO.AsString:=DMEst.CDSEstoqGONDOLA.AsString; 
                     end; 
               end 
            else 
               begin 
                  DBEdit1.Clear;    // Depois de mostrar a mensagem da função 
                  DBEdit2.Clear;    // valida, deveria executar esta parte 
                  DBEdit3.Clear;    // mas não é isso que ocorre, e sim o erro! 
                  DBEdit4.Clear; 
                  DBEdit41.Clear; 
                  DBEdit42.Clear; 
                  DBEdit43.Clear; 
                  DBEdit1.SetFocus; 
               end; 
            if DMEst.CDSEsGer.Locate(´CODIGO´,DBEdit1.Text,[loPartialKey,loCaseInsensitive]) then 
               DMEst.CDSSaiEST_MINIMO.AsFloat:=DMEst.CDSEsGerESTMINIMO.AsFloat 
            else 
               DMEst.CDSSaiEST_MINIMO.AsFloat:=0; 

            DBEdit5.SetFocus; 
   end 
else 
   begin 
      BitBtn1.Click; 
      DBEdit5.SetFocus; 
   end; 
end; 
end; 


O problema ocorre quando eu digito um código que não é encontrado na segunda tabela (CDSEstoq); aí me retorna o seguinte erro: [color=darkred:6aad62528a]Expression expected but nothing found.[/color:6aad62528a]
Não sei como tratar esse erro. O que o sistema deveria fazer se não encontrar o código na segunda tabela é retornar ao dbedit1 e aguardar a digitação de um novo código.
Se alguém puder me ajudar, agradeceria.
(O sistema está sendo desenvolvido em Delphi 7, plataforma CLX e o banco de dados utilizado é o Interbase 6.)


Eliane Dorr

Eliane Dorr

Responder

Posts

09/12/2005

Marlon Spiess

Olá,
não sei ao certo o q sua função valida faz, mas aparentemete faz um findkey ou locate, até ai ótimo, mas faça a validação de existência de todas as tables antes de qualquer coisa. Pelo q pude ver é só a lógica dentro do bloco.

Espero ter ajudado


Responder

09/12/2005

Eliane Dorr

Muito obrigada por sua dica Marlon. Mudei a forma de validação dos dados como vc sugeriu e funcionou certinho.
Valeu. :wink:


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar