DUVIDAS CHAMADO 1076

06/12/2008

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

Curtidas 0

Respostas

Rodrigo Mourão

Rodrigo Mourão

06/12/2008

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
GOSTEI 0
Jair Cruz

Jair Cruz

06/12/2008

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.
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

06/12/2008

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 !!!

GOSTEI 0
POSTAR