Fórum auto-incremento pelo banco #350169
06/12/2007
0
vi varias msg no forum sobre esse assunto, porem nehuma delas resolveu meu problema. então vamos lá ....
Uso o bando de dados informix, e criei uma tabela da seguinte forma :
Column name Type num_transac serial num_etiqueta integer cod_usuario char(25) ip_maq char(25) dat_alter date hor_alter char(8 ) log_alter char(300)
O campo num_transac é um auto incremento, para criar um novo registro basta passar no insert o valor 0 (zero) para que o proprio banco gere o proximo numero.
via sql estou faço sem problemas, ou seja, enviando o comando direto para o banco, da seguinte forma:
insert into fbr_inv_audit
values ( 0, ´601´, ´anderon´, ´155.155.0.1´, ´10/11/2007´ , ´08:10:10´
, ´teste´);
porem quando tento mandar via Tquery --> TDataSetProvider --> TClientDataSet. Quando passo as informações para o Cds, via append, passo as informações para cada campo, sendo que no num_transac informo q será 0 (zero), e faço o post, não sei pq ele não atualiza no banco.
vale lembrar que tenho configurado o no Cds, nos eventos AfterPost e AfterDelete o comando applyupdates(0);
alguem pode me ajudar ?
Muito obrigado.
Vieira
Curtir tópico
+ 0Posts
10/12/2007
Sistemald
Gostei + 0
10/12/2007
Paullsoftware
para disparar o gerador do banco eu uso a funcao abaixo:
function NewGen(GenName: String; aConexao:TSQLConnection): integer; var ResultSet: TCustomSQLDataSet; SQLstmt: string; begin SQLStmt := ´SELECT CAST(gen_id(´ + GenName + ´,1)as integer) as NewValor from RDB$DATABASE;´; ResultSet := nil; try aConexao.Execute(SQLstmt, nil, @ResultSet); if Assigned(ResultSet) then begin Result := ResultSet.FieldByName(´NewValor´).AsInteger; end; finally ResultSet.Free; end; end; (* NewGen *)
if SourceDS.Name = ´NomeDoSeuDataSet´ then DeltaDS.FieldByName(´NomeDoCampoAutoIncremento´).NewValue := NewGen(´NomeDoSeuGerador´,sqlCONN);
if cdsNomeTabelaNomeCampoAutoIncremento.IsNull then cdsNomeTabelaNomeCampoAutoIncremento.AsInteger := 0;
espero ter ajudado amigo! qq coisa é só dar um grito ae blz! :wink:
Gostei + 0
10/12/2007
Itepi
Espero que ajude, poste aqui depois se funcionou!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)