Fórum Ajuda com exceção no firebird!! #59405
05/02/2008
0
Caros colegas, sou um iniciante no firebird 2.0, no qual este já é meu segundo projeto de teste usando esta base de dados. Estou com dificudades de gerar uma exceção no firebird X Delphi 7.0. Uso os seguintes componentes de acesso ao banco:
SqlConection+SqlDataSet+DataSetProvider+ClienteDataSet+DataSource.
Tenho uma tabela de GRUPOS DE PRODUTOS com os seguintes campos:
create table GRU
(
id_gru integer not null,
descgru varchar(50),
constraint pk_gru primary key (id_gru)
);
A exceção deve retornar uma mensagem caso, AO GRAVAR, o campo DESCGRU (Descrição do Grupo) fique em branco. Segue o código da Trigger de NUMERO SEQUENCIAL + EXCEÇÃO:
create exception ERRO1 ´Campo de preenchimento obrigatório!!´
set term^;
create trigger seq_gru for gru
active before insert position 0
as
declare variable SEQ integer;
begin
select max(id_gru) from gru into seq;
if (seq is null) then seq = 0;
seq = seq+1;
new.id_gru = seq;
if (new.descgru is null) then execption ERRO1;
end;
^
set term;^
no caso, o correto seria essa exceção ficar no UPDATE, pois caso o usuário alterasse o registro e deixasse o campo em branco tb ocorreria a exceção.
Agradeço aos colegas do forum, e peço que se alguem tiver uma forma mais profissional de fazer isso que estou querendo, ficaria muito grato!!
agraço a todos!!
SqlConection+SqlDataSet+DataSetProvider+ClienteDataSet+DataSource.
Tenho uma tabela de GRUPOS DE PRODUTOS com os seguintes campos:
create table GRU
(
id_gru integer not null,
descgru varchar(50),
constraint pk_gru primary key (id_gru)
);
A exceção deve retornar uma mensagem caso, AO GRAVAR, o campo DESCGRU (Descrição do Grupo) fique em branco. Segue o código da Trigger de NUMERO SEQUENCIAL + EXCEÇÃO:
create exception ERRO1 ´Campo de preenchimento obrigatório!!´
set term^;
create trigger seq_gru for gru
active before insert position 0
as
declare variable SEQ integer;
begin
select max(id_gru) from gru into seq;
if (seq is null) then seq = 0;
seq = seq+1;
new.id_gru = seq;
if (new.descgru is null) then execption ERRO1;
end;
^
set term;^
no caso, o correto seria essa exceção ficar no UPDATE, pois caso o usuário alterasse o registro e deixasse o campo em branco tb ocorreria a exceção.
Agradeço aos colegas do forum, e peço que se alguem tiver uma forma mais profissional de fazer isso que estou querendo, ficaria muito grato!!
agraço a todos!!
Maxymus
Curtir tópico
+ 0
Responder
Posts
05/02/2008
Sremulador
amigo você pode fazer isto setando campo para not null, quanto a exceção, o que esta ocorrendo, você já verificou se ele não esta passando outra informação para o campo, e assim não retornando o null
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)