Fórum Generator não gera ID #452577

20/08/2013

0

Ola pessoal......mais uma vez aqui para pedir ajuda a vocês...

Estou montando um sistema em Delphi com BD Firebird. Usando o IBExpert para montar as tabelas, criei a tabela, o generator, a trigger e o procedure, tudo listado pelo IBExpert. No formulário fiz a conexão e deu tudo ok. Fiz os teste de ler os registros da tabela e deu tudo ok. Mas na hora de inserir um novo registro, ele não gera o ID e nem mostra no campo referente ao ID do formulário e com isso na hora de postar da erro porque o valor está nulo.

Alguém pode me ajudar por favor com uma luz para resolver isso?

Agradeço a ajuda que aparecer.
Carlos Magno

Carlos Magno

Responder

Posts

20/08/2013

Rafael Brendolan

Está usando Client Data Set?
Lembre de colocar o campo ID como AutoInc e Required = False.
Responder

Gostei + 0

20/08/2013

Carlos Magno

Opa, Rafael......

Estou usando um IBDataSet.....e sim, coloquei o campo ID como AutoInc.....agora, como coloco o Required como False?
Responder

Gostei + 0

20/08/2013

Rafael Brendolan

Abre o componente, seleciona o campo ID e lá em baixo vai ter Required. Coloque como False. Ai antes de dar o ApplyUpdate você tem que passar o ID.
Responder

Gostei + 0

20/08/2013

Carlos Magno

Rafael, desculpe pela demora em responder.....a sua dica deu certíssimo....agora só um detalhe....

Como eu faria então para que, quando eu clicasse no botão insert para iniciar um novo registro, o novo ID aparecesse no campo ID do formulário?
Responder

Gostei + 0

20/08/2013

Deivison Melo

Porquê não usa uma função para retornar esse valor?

No final das contas irá ser praticamente a mesma coisa....


function GeneratorID (aName: string; Connection: TSQLConnection; Incrementa: Boolean): integer;

function GeneratorID (aName: string; Connection: TSQLConnection;
Incrementa: Boolean): integer;
var
Qry: TSQLQuery;
begin
Qry := TSQLQuery.Create(nil);
try
Qry.SQLConnection := Connection;
if Incrementa then
Qry.SQL.Add(
'SELECT GEN_ID('+aName+', 1) FROM RDB$DATABASE')
else
Qry.SQL.Add(
'SELECT GEN_ID('+aName+', 0) FROM RDB$DATABASE');
Qry.Open;
Result := Qry.Fields[0].AsInteger;
finally
FreeAndNil(Qry);
end;
end;


O retorno vc salva em um campo (Edit ou dbedit) e até mesmo em um label...

Responder

Gostei + 0

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

Aceitar