Ajuda: TDBXError with message
Olá pessoal.
Estou desenvolvendo uma aplicação usando o Delphi 2010 e Firebird 2.0 IBExpert 2012.
O método que eu uso para inserir o código automático é o seguinte:
create trigger cursopai_bi for cursopai
active before insert position 0
as
begin
if (new.cursopaiid is null) then
new.cursopaiid = gen_id(gen_cursopai_id,1);
end
No meu DataModule eu tenho este código:
private
function genID(tablename: string): Integer;
procedure getID(DataSet: TDataSet);
{ Private declarations }
public
{ Public declarations }
end;
var
DM: TDM;
implementation
{$R *.dfm}
{ TDM }
function TDM.genID(tablename: string): Integer;
var
qry: TSQLQuery;
begin
qry:= TSQLQuery.Create(Self);
qry.SQLConnection:= DBTeste;
qry.SQL.Add('SELECT GEN_ID(GEN_'+tablename+'_ID,1) FROM RDB$DATABASE');
qry.Open;
Result:= qry.Fields[0].AsInteger;
end;
procedure TDM.DataModuleCreate(Sender: TObject);
var
I: Integer;
begin
for I := 0 to Pred(ComponentCount) do
if Components[I] is TClientDataSet then
begin
TClientDataSet(Components[I]).OnNewRecord:= getID;
end;
end;
procedure TDM.getID(DataSet: TDataSet);
begin
DataSet.Fields[0].AsInteger:= genID(Copy(DataSet.Name,3));
end;
end.
Eu tenho 7 tabela no banco de dados e apenas uma estar dando o seguinte erro ao incluir um registro:
Project CFC.exe raised exception class TDBXError with message 'invalid request BLR at offset 52
generator GEN_SCURSOPAI_ID in not defined.
Alguêm poderia me ajudar ???
Estou desenvolvendo uma aplicação usando o Delphi 2010 e Firebird 2.0 IBExpert 2012.
O método que eu uso para inserir o código automático é o seguinte:
create trigger cursopai_bi for cursopai
active before insert position 0
as
begin
if (new.cursopaiid is null) then
new.cursopaiid = gen_id(gen_cursopai_id,1);
end
No meu DataModule eu tenho este código:
private
function genID(tablename: string): Integer;
procedure getID(DataSet: TDataSet);
{ Private declarations }
public
{ Public declarations }
end;
var
DM: TDM;
implementation
{$R *.dfm}
{ TDM }
function TDM.genID(tablename: string): Integer;
var
qry: TSQLQuery;
begin
qry:= TSQLQuery.Create(Self);
qry.SQLConnection:= DBTeste;
qry.SQL.Add('SELECT GEN_ID(GEN_'+tablename+'_ID,1) FROM RDB$DATABASE');
qry.Open;
Result:= qry.Fields[0].AsInteger;
end;
procedure TDM.DataModuleCreate(Sender: TObject);
var
I: Integer;
begin
for I := 0 to Pred(ComponentCount) do
if Components[I] is TClientDataSet then
begin
TClientDataSet(Components[I]).OnNewRecord:= getID;
end;
end;
procedure TDM.getID(DataSet: TDataSet);
begin
DataSet.Fields[0].AsInteger:= genID(Copy(DataSet.Name,3));
end;
end.
Eu tenho 7 tabela no banco de dados e apenas uma estar dando o seguinte erro ao incluir um registro:
Project CFC.exe raised exception class TDBXError with message 'invalid request BLR at offset 52
generator GEN_SCURSOPAI_ID in not defined.
Alguêm poderia me ajudar ???
Jean Carlos
Curtidas 0
Respostas
Jean Carlos
03/12/2014
Programação é de doer a cabeça, há 4 dias que eu venho tentando resolver este erro, e o erro estava na minha frente o tempo todo
Só que eu nunca ia imaginar que fosse um erro.
O meu componente ClienDataSet que recebe a tabela cursopai estava renomeada da seguinte forma: cdscursopai, os outros componentes das tabelas que não deram erro estavam apenas como ds então eu apenas tirei o c do cdscursopai apenas para ficar como os outros, sem saber que isso iria resolver meu problema, pois ao rodar o programa e tentar inserir novamente não apresentou mais erro.
Ai eu pensei não pode ser só isso, fui La e coloquei o c de novo rodei o programa e apresentou o mesmo erro rsrsrsrs.
Moral da historia era apenas o meu componente ClientDataSet que não quis ser chamado de cds apenas ds.
Problema resolvido.
Só que eu nunca ia imaginar que fosse um erro.
O meu componente ClienDataSet que recebe a tabela cursopai estava renomeada da seguinte forma: cdscursopai, os outros componentes das tabelas que não deram erro estavam apenas como ds então eu apenas tirei o c do cdscursopai apenas para ficar como os outros, sem saber que isso iria resolver meu problema, pois ao rodar o programa e tentar inserir novamente não apresentou mais erro.
Ai eu pensei não pode ser só isso, fui La e coloquei o c de novo rodei o programa e apresentou o mesmo erro rsrsrsrs.
Moral da historia era apenas o meu componente ClientDataSet que não quis ser chamado de cds apenas ds.
Problema resolvido.
GOSTEI 0
Douglas
03/12/2014
Por favor, encerrem o tópico!
GOSTEI 0
Jean Carlos
03/12/2014
Como posso encerrar o Topico ??
GOSTEI 0
Douglas
03/12/2014
Jean, não se preocupe! A equipe DevMedia é que encerra.
GOSTEI 0