Fórum delphi não pega codigo automático #418094

05/06/2012

0

olá pessoal estou usando o firebird tenho uma triger e generator mas o delphi continua me pedindo para colocar o id sendo que está sendo gerado pelo generator, no banco funciona normal, alguem sabe a solução?
Marcelo Augusto

Marcelo Augusto

Responder

Posts

06/06/2012

William

Colega configure seu campo ID no FieldsEditor, ele deve estar com a propriedade Required = true, essa configuração exige que seja informado o valor do campo ID.
Responder

Gostei + 0

06/06/2012

Gustavo Bretas

Marcelo, esse é um dos motivos de eu não usar trigger para alimentar Chave!

Como vc esta usando Generator, tente criar uma função que vc passe como parâmetro o nome do Generator, e nela vc faz o select e retorna o código para o Field!
Responder

Gostei + 0

07/06/2012

Marcelo Augusto

Marcelo, esse é um dos motivos de eu não usar trigger para alimentar Chave!

Como vc esta usando Generator, tente criar uma função que vc passe como parâmetro o nome do Generator, e nela vc faz o select e retorna o código para o Field!



valeu wllfi e bretas, antes eu usava o oracle mas não achei artigos sobre como implementar o backup para o banco de dados
passei para o firebird por isso, quando ao codigo fiz no delphi mesmo, obrigado.
Responder

Gostei + 0

07/06/2012

Marcelo Augusto

Marcelo, esse é um dos motivos de eu não usar trigger para alimentar Chave!

Como vc esta usando Generator, tente criar uma função que vc passe como parâmetro o nome do Generator, e nela vc faz o select e retorna o código para o Field!



valeu wllfi e bretas, antes eu usava o oracle mas não achei artigos sobre como implementar o backup para o banco de dados
passei para o firebird por isso, quando ao codigo fiz no delphi mesmo, obrigado.


Mais uma pergunta, antes quando usava o banco oracle o banco era atualizado instantaneamente já com o firebird ele somente atualiza quando do encerramento do programa. existe algo que possa ser feito
o codigo que estou usando segue abaixo:
procedure TF_Funcionario.BitSalvarClick(Sender: TObject);
begin

If length(trim(DbNome.Text)) = 0 then
MessageDlg(Preenchimento obrigatório do campo Nome !!,mtInformation,[mbOK],0);

if length(trim(DbLookUpCepNome.Text)) = 0 then
MessageDlg(Preenchimento obrigatório dos campos do Endereço <click no Botão cadastrar Endereço) !!,mtInformation,[mbOK],0);
if Application.MessageBox(Deseja salvar?,Confirmação,
MB_YesNo) = IDYes then
panelendereco.Visible:=true;
paneldadopessoal.Visible:=true;
begin
if dmdados.DsFuncionario.State in[DsInsert,DsEdit] then
begin
editar;
dmdados.TblFuncionario.Post;
dmdados.tblFuncionario.ApplyUpdates;
Dmdados.tblFuncionario.last;
leitura;
end;
end;
end;
Responder

Gostei + 0

07/06/2012

Deivison Melo

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;
Responder

Gostei + 0

07/06/2012

Marco Salles

Mais uma pergunta, antes quando usava o banco oracle o banco era atualizado instantaneamente já com o firebird ele somente atualiza quando do encerramento do programa. existe algo que possa ser feito


Atualizar o que é dar um Refresh ???

ps) Não é o Firebird , é a tecnologia que vc esta utilizando Dbexpress/ClientdatasSet

Os dados ficam na memória e são aplicados quando vc der o ApplayUpdates

So não entendi porque o last no apos o ApplayUpdates

dmdados.TblFuncionario.Post;
dmdados.tblFuncionario.ApplyUpdates;
Dmdados.tblFuncionario.last; // ???
Responder

Gostei + 0

08/06/2012

Marcelo Augusto

Mais uma pergunta, antes quando usava o banco oracle o banco era atualizado instantaneamente já com o firebird ele somente atualiza quando do encerramento do programa. existe algo que possa ser feito


Atualizar o que é dar um Refresh ???

ps) Não é o Firebird , é a tecnologia que vc esta utilizando Dbexpress/ClientdatasSet

Os dados ficam na memória e são aplicados quando vc der o ApplayUpdates

So não entendi porque o last no apos o ApplayUpdates

dmdados.TblFuncionario.Post;
dmdados.tblFuncionario.ApplyUpdates;
Dmdados.tblFuncionario.last; // ???


Ha, sim após gravar eu jogo ele para o último registro para mostrar antes usava de outro jeito tbl.close, tbl.open
também costumo usar uma procedimento mostrar, ontem cnsegui fazer gravar na hora usanto após o apply Updates o commando
dmdados.IBTransaction1.CommitRetaining;


na verdade esta tbl.las ficou de um outro prg o qual fazia entradas sequenciais na tabela para juntamente com uma query pegar o ultimo numero select tblreg.las+1;

Pessoal muito obrigado pelas dicas sou novo em prog. e vocês tem me ajudado muito.
Responder

Gostei + 0

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

Aceitar