Generator
Bom dia todos, tive vendo a resposta do A. Farias no Clube a cerca das perguntas, veja bem minha dúvida.
Bom, uso Dbexpress...ClientDatas e Firebird, tenho uma tela de cadastro de produto, no qual o campo codProduto é auto incremento(Generator), a questão é que toda vez q inserir um produto o meu Dbedit pegue o numero do generator, coisa que não tá fazendo, segundo nosso amigo A. Farias que relatou para nossos outros amigos, eu teria que fazer da seguinte forma:
With dm.sqlProduto do
begin
close;
commandText:=´Select GEN_ID(GEN_PRODUTO_ID,1) from rdb$database´;
Open;
dbeCodigo.Text := inttostr(Fields[0].AsInteger);
End;
Só que usando desta forma,o contador já grava direto no banco, e se derrepente o usuário cancelar a ação?! bom ai eu tentei fazer da seguinte forma:
With dm.sqlProduto do
begin
close;
commandText:=´Select GEN_ID(GEN_PRODUTO_ID,0) from rdb$database´;
Open;
dm.cdsProduto.insert;
dbeCodigo.Text := inttostr(Fields[0].AsInteger+1);
End;
Tudo até ai funcionou, porém depois de preenchido meu cadastro de produto e vou mandar gravar ´ dm.cdsProduto.ApplyUpdates(0);´ acontece o erro: ´Table unKnown rd$database At line 1, column 523.´
Se o A. Farias ou outro colega do forum, eu agradeço, pois gostaria de poder usar o GENERATOR, em de criar tabelas para colocar contadores.
Jelves
Bom, uso Dbexpress...ClientDatas e Firebird, tenho uma tela de cadastro de produto, no qual o campo codProduto é auto incremento(Generator), a questão é que toda vez q inserir um produto o meu Dbedit pegue o numero do generator, coisa que não tá fazendo, segundo nosso amigo A. Farias que relatou para nossos outros amigos, eu teria que fazer da seguinte forma:
With dm.sqlProduto do
begin
close;
commandText:=´Select GEN_ID(GEN_PRODUTO_ID,1) from rdb$database´;
Open;
dbeCodigo.Text := inttostr(Fields[0].AsInteger);
End;
Só que usando desta forma,o contador já grava direto no banco, e se derrepente o usuário cancelar a ação?! bom ai eu tentei fazer da seguinte forma:
With dm.sqlProduto do
begin
close;
commandText:=´Select GEN_ID(GEN_PRODUTO_ID,0) from rdb$database´;
Open;
dm.cdsProduto.insert;
dbeCodigo.Text := inttostr(Fields[0].AsInteger+1);
End;
Tudo até ai funcionou, porém depois de preenchido meu cadastro de produto e vou mandar gravar ´ dm.cdsProduto.ApplyUpdates(0);´ acontece o erro: ´Table unKnown rd$database At line 1, column 523.´
Se o A. Farias ou outro colega do forum, eu agradeço, pois gostaria de poder usar o GENERATOR, em de criar tabelas para colocar contadores.
Jelves
Jelves
Curtidas 0
Respostas
Luizfernando777
31/10/2003
Não sei como funciona o FB,
Mas no IB eu faço uma Trigger para o meu generator
Mas no IB eu faço uma Trigger para o meu generator
GOSTEI 0
Luizfernando777
31/10/2003
create generator idClientes;
set Term!!
create Trigger idClientes for Clientes before insert position 0 as
begin
new.Record=Gen_id(idClientes,1);
end!!
Set Term!!
set Term!!
create Trigger idClientes for Clientes before insert position 0 as
begin
new.Record=Gen_id(idClientes,1);
end!!
Set Term!!
GOSTEI 0
Jelves
31/10/2003
Obrigado Luiz, mais No meu caso não tem jeito de fazer desta forma, devido os componentes que estou usando...
GOSTEI 0
Luizfernando777
31/10/2003
Ok,.
esse exemplo que lhe enviei vc faz dentro da base de dados,
o banco de dados é que gerencia e não o seu projeto.
esse exemplo que lhe enviei vc faz dentro da base de dados,
o banco de dados é que gerencia e não o seu projeto.
GOSTEI 0
Jelves
31/10/2003
Tudo bem eu havia feito um Tigger, do jeito que você falou, mais toda vez que iria inserir um registro o dbedit (CodPRoduto) ficava em branco, e gostaria no momento que clicar no botão Novo, já aparecesse o código do produto dentro do Dbedit e gravasse no banco quando clicasse no botão gravar...
GOSTEI 0
Jelves
31/10/2003
GOSTEI 0
Luizfernando777
31/10/2003
Claro, vc quer um contador,
tem dois tipos,
o que pega o últ. e o q pega o que está faltando no meio da contagem,
tipo : 123 567
no caso é 4
tem dois tipos,
o que pega o últ. e o q pega o que está faltando no meio da contagem,
tipo : 123 567
no caso é 4
GOSTEI 0
Jelves
31/10/2003
Luiz obrigado pelo retorno, veja na lista a solução que encontrei...
Jelves
Jelves
GOSTEI 0