Fórum AutoIncrement na inserção do registro. #236583
07/06/2004
0
Com um campo autoincrement, posso fazer a inserção de novos registros sem problema, mas o número sequente só aparece quando o registro é salvo. Existe alguma maneira de número aparecer na inserção do registro?
Lira
Curtir tópico
+ 0
Responder
Posts
07/06/2004
Poeta Noturno
Se você estiver usando interbase/firebird para essa tarefa, faça o seguinte: crie uma função para ler o generator que guarda o valor do seu campo código (por exemplo). Para ler, faça o seguinte:
function CodigoCliente(Novo: Boolean) then
var
ResultSet: TCustomSQLDataSet;
SQLStmt: string;
begin
if Novo then
SQLStmt := ´select gen_id(CRIAR_COD_CLI, 1) as VALOR from RDB$DATABASE;´
else
SQLStmt := ´select gen_id(CRIAR_COD_CLI, 0) + 1 as VALOR from RDB$DATABASE;´;
ResultSet := nil;
try
tbls.Impress.Execute(SQLStmt, nil, @ResultSet);
if Assigned(ResultSet) then
Result := ResultSet.fieldByName(´Valor´).AsInteger;
Finally
ResultSet.Free;
end;
Aqui novo representa se você está apenas lendo ou incrementando o generator.
OBS: Não esqueça de declarar SQLExpr para esse função rodar legal ok?
Espero ter ajudado.
Um abraço
Poeta Noturno
function CodigoCliente(Novo: Boolean) then
var
ResultSet: TCustomSQLDataSet;
SQLStmt: string;
begin
if Novo then
SQLStmt := ´select gen_id(CRIAR_COD_CLI, 1) as VALOR from RDB$DATABASE;´
else
SQLStmt := ´select gen_id(CRIAR_COD_CLI, 0) + 1 as VALOR from RDB$DATABASE;´;
ResultSet := nil;
try
tbls.Impress.Execute(SQLStmt, nil, @ResultSet);
if Assigned(ResultSet) then
Result := ResultSet.fieldByName(´Valor´).AsInteger;
Finally
ResultSet.Free;
end;
Aqui novo representa se você está apenas lendo ou incrementando o generator.
OBS: Não esqueça de declarar SQLExpr para esse função rodar legal ok?
Espero ter ajudado.
Um abraço
Poeta Noturno
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)