Array
(
)

Erro ao validar tabela

Eliane Dorr
   - 08 dez 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:


#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: Expression expected but nothing found.
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.)


Marlon Spiess
   - 09 dez 2005

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


Eliane Dorr
   - 09 dez 2005

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