[firebase-br] Auto Incremento
Weberson-Yahoo
webersonrosemberg em yahoo.com.br
Sex Abr 20 13:26:46 -03 2007
Não sei qual componente você usa, mas se estiver utilizando o trio de
componentes SQLDataSet (ou SQLQuery), Provider e ClientDataSet, você deve
criar uma trigger no banco para o generator antes da inserção (Before
Insert):
CREATE TRIGGER TR_CODIGO_NOVO_BI FOR PRODUTO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.PROD_CODIGO_NOVO IS NULL) THEN
NEW.PROD_CODIGO_NOVO = GEN_ID(GEN_PRODUTO,1);
END
Depois, você deve ir no Delphi, em Fields Editor do ClientDataSet e do
SQlDataSet, marque a propriedade Required=false para o campo que será
auto-incrementado.
Espero que ajude.
Weberson Rosemberg
-------------------------------------
Tecnologia da Informação
Santa Casa de Franca
----- Original Message -----
From: "Marcelo Castro - [www.ligteltelecom.com.br]"
<marcelo.castro em ligteltelecom.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, April 20, 2007 1:20 PM
Subject: [firebase-br] Auto Incremento
Amigos;
Eu estou usando um generator para criar auto incremento.
Seria possível fazer eu fazer esse auto incremento direto no banco.
Porém estou usando uma query para isso.
Estou fazendo assim pelo delphi.
procedure TDM_Server.DspProdutosBeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind; var Applied: Boolean);
begin
IF UpdateKind = ukInsert THEN
BEGIN
if SourceDS = QryProdutos THEN
BEGIN
QryGenProdutos.OPEN;
TRY
FNUMPROD :=
QryGenProdutos.fieldbyname('PROD_CODIGO_NOVO').AsInteger;
finally
QryGenProdutos.Close;
end;
DeltaDS.fieldbyname('PROD_CODIGO').NewValue := FnumPROD;
end;
end;
end;
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista