Erro ao validar tabela

08/12/2005

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&93;) 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

Respostas

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 Citar

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 Citar