Problema com DB2 !!!

07/02/2003

0

Pessoal, estou com um grande problema, e preciso de uma solução o quanto antes... desenvolvo uma aplicação que utiliza diversos tipos de bancos de dados (ORACLE, DB2, INTRBASE, MSSQL, ACCESS) , mas tenho um problema em DB2. Quando estou incluindo ou alterando ou excluindo um registro via SQL, eu coloco uma condição, mas se a condição não é válida, ou seja, se não existe nenhum registro para a condição, o DB2 devolve um erro, mas eu não queria que esse erro ocorresse, pois meu sistema para ao ocorrer um erro e informa o erro para o usuário. Eu estou umplementando o DB2 agora. Alguém poderiam me ajudar dizendo se existe alguma configuração do DB2 para evitar isso. Eu tenho a solução, que seria verificar antes de qualquer coisa se a condição é verdadeira, mas o sistema está muito grande e fazer isso é inviável. Se alguém puder me ajudar... agradeço ...

Rafael M. Heise


Rafael Heise

Rafael Heise

Responder

Posts

07/02/2003

Anonymous

Use O Tratamento de excessões do delphi


Try
<Seu Codigo Normal>
Except
<Se der pau no codigo normal este codigo sera execultado>
end;

espero ter ajudado


Responder

08/02/2003

Rafael Heise

bom . isso resolveria esse problema, mas e se ao alterar/incluir/excluir, ocorrer um erro que não seja esse ??? eu não posso simplesmente ignorar, eu tenho que mostrar isso pro usuário pra caso aconteça eu poder resolver e o banco dele não ficar corrompido .. o problema, é que esse erro do DB2 não é um erro, é como uma informação do DB2, dizendo que ele não encontrou nenhuma linha para incluir/altera/excluir !!! e isso eu preciso tratar, e não simplesmente ignorar !! . mas valeu a tentiva ! [ Obrigado ]
Rafael M. Heise


Responder

08/02/2003

Anonymous

procedure TForm1.Button1Click(Sender: TObject);
begin
try
Table1.AppendRecord([90020,Null,Null,Null,Null,Null,Null]);
except
on E: Exception do
if Pos(´Key violation´,E.Message) > 0 then
Table1.Cancel
else
raise; // manda o erro para fora do bloco
end;
end;


Responder

09/02/2003

Rafael Heise

pessoal, eu não posso usar try except.... primeiro pq isso mostra que eu estou simplesmente ignorando o erro e não tratando ele..... pq na verdade o erro não é um erro e sim um aviso. E no Software eu mostro todos os erros pro usuário. Eu preciso mesmo é de uma configuração do DB2 para resolver o problema.... Try Except não me ajuda.... eu sei que isso existe e eu uso para resolver algumas coisas e fazer alguns testes... mas nesse caso específico, não funciona. Eu sei fazer bastante coisa, e try except é uma das coisas mais básicas, então , me desculpem , não quero ofender, mas não me adianta receber mensagens com códigos com try except, pq isso não me adianta. Preciso mesmo é de uma configuração, e se alguém puder me ajudar... agradeço .. desculpe qualquer coisa, não é querendo ser ingrato.. mas só pode ser alguma coisa de configuração, fora isso , não tem como resolver !
obrigado...


Responder

09/02/2003

Sidfaria

após a consulta ao DB2 teste o SQLCODE, por exemplo:

if SQLCODE = 0 - execução bem sucedida
if SQLCODE > 0 - execucação bem sucedida, mas com uma mensagem de aviso
if SQLCODE < 0 - execução não foi bem sucedida
if SQLCODE = 100 - indica ausencia de dados recuperados (este é o seu caso)

O DB2 que você usa deve ser em plataforma micro, creio. Trabalhei com o DB2 em Minframe e o teste que faziamos para saber se a consulta retornou algum dado era testando o SQLCODE = 100 - veja se é igual no DB2 que você usa. Creio que seja.


Responder

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

Aceitar