Fórum Veja: Como colocar o Generator em um Dbedit usando Dbexpress #192336
02/11/2003
0
Bom, com esta solução vc poderá que ter o Generator e a Tigger que incrementa o generator.
Peguei um sqlDataset e dei o nome de sqlGenerator, no qual irá servir para todas as minhas tabelas. e depois criei uma unit e coloquei a seguinte função abaixo:(veja a unit completa)
unit UFuncao;
interface
uses SysUtils;
Function Generator(NomeGenerator:String):String; //Esta função é para retornar o código do Generator
implementation
uses udm;
Function Generator(NomeGenerator:String):String; //Esta função é para retornar o código do Generator
begin
with dm.sqlGenerator do
begin
Close;
CommandText := ´SELECT GEN_ID(´+NomeGenerator+´,0) FROM rdb$database´;
Open;
Generator := inttostr(Fields[0].AsInteger+1);
end;
end;
end.
depois declarei ela no Uses dos forms que iria utiliza-la
e a chamei da seguinte forma: (veja no button)
procedure TfrmProduto.btnNovoClick(Sender: TObject);
begin
btnGravar.Enabled := true;
btnNovo.enabled := false;
dm.cdsProduto.Append;
dbeCodigo.Text := Generator(´GEN_PRODUTO_ID´); //Função usada para retornar o valor do Generator (GEN_PRODUTO_ID) da tabela de produtos
dbeDescricao.SetFocus;
end;
No caso é só passar o nome do Generator da tabela que vc quer.
Espero que meus colegas tenham entendido.
Jelves
Jelves
Curtir tópico
+ 0Posts
03/11/2003
Jelves
Gostei + 0
03/11/2003
Moliva
A única grande diferença, é a de que como estou em rede e muitos usuários poderão cadastrar ao mesmo tempo, eu só retorno o Generator na hora da gravaçao.
Image a situação:
UsuA pressiona Novo e começa a incluir. (generator 5)
UsuB pressiona Novo e começa a Incluir. (generator 5)
(os dois vão aparecer com o mesmo código).
UsuB Grava seu registro (generator 5)
UsuA Grava seu registro (generator 6, porém na tela ele vai achar que é o 5 também.
Eu fiz mais ou menos o seguinte
procedure TfrmProduto.btnGravarClick(Sender: TObject);
begin
. . .
dbeCodigo.Text := Generator(´GEN_PRODUTO_ID´);
Post;
. . .
end;
[]s
Moliva
Gostei + 0
03/11/2003
Jelves
Jelves
jelves@bol.com.br
Gostei + 0
04/11/2003
Moliva
Não consigo ver a necessidade do código ser retornado durante a inserção.
Mas de qualquer forma tentarei arrumar uma outra saída.
[]s
Moliva
Gostei + 0
04/11/2003
Jelves
Mais a forma que nós utilizamos ficou boa, pois desta forma não precisamos mudar a propriedade Requerid do campo CodProd para false, pois estamos passando o código.
Obrigado!
Jelves
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)