Fórum DUVIDAS CHAMADO 1076 #1175

06/12/2008

0

Ola Rodrigo,        Eu utilizo SqlServer 2000, como ficaria esta function:   function TDSSMVEN.GenID(TableName: String): Integer;
var
  Qry: TSQlQuery;
begin
  Qry := TSQLQuery.Create(Self);
  Qry.SQLConnection := DMServer.DBCon;
  Qry.SQL.Add(SELECT GEN_ID(GEN_+TableName+_ID,1) FROM RDB$DATABASE);
  qry.Open;
  Result := Qry.Fields[0].AsInteger;
end;   pra que de o mesmo resultado, me de um exemplo prático...   []s. Jair.   
Jair Cruz

Jair Cruz

Responder

Posts

09/12/2008

Rodrigo Mourão

Olá Jair, Tudo BOm !!!!   Bem no SqlServer eu resolvo este problema fazendo o seguinte. Crie uma nova tabela chamada por exemplo de GenID. Nela você vai colocar um campo inteiro para O ID DE cada tabela que quiser gerar ID E UM CAMPO varCHAR para o nome da tabela. Exemplo:   Create Table GenID( nrseq int, nmtabela int)   Agora basta criar um store procedure para gerar uma "sequence" para voce. Observe abaixo:   Create Proc sp_GenID    @tabela varchar(50),    @ID int output  as   SELECT @ID = nrseq from GenID (updlock)   where nmTabela = @tabela   UPDATE GENID SET NSEQ = @ID + 1 where nmtabela   select @id as nrseq   RETURN   No Delphi a chamada fica assim:   function TDSSMVEN.GenID(TableName: String): Integer;
var
  Qry: TSQlStoredProc;
begin
  Qry := TSQlStoredProc.Create(Self);
  Qry.SQLConnection := DMServer.DBCon;   Qry.StoredProcName := GenID;   Qry.Params[0].AsString := TableName;   Qry.ExecProc;
  Result := Qry.Params[1].AsInteger;
end;   abs
Responder

Gostei + 0

09/12/2008

Jair Cruz

Ola Rodrigo,        Caso encerrado, mas so me responda uma coisa, nas tabelas do sql server tem o autoregistro, não posso usar esse recurso?   []s. Jair.
Responder

Gostei + 0

09/12/2008

Rodrigo Mourão

Sim Jair Poderia sim !!


Repare na ultima vídeo que te mandei que eu falei sobre os campos auto incremento !!!

Porém há situações que você quer saber o Id do pedido antes mesmo de gravá-lo.


Abs !!

Estarei encerrando o chamado !!!  Estaremos a disposição !!!

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar