Autoincremento confiavel com SQL alguem sabe?
28/04/2003
0
Pessaol vc´s sabem como eu faco uma instrucao SQL autoincremental confiavel onde, se um usuario abrir o sistema duas vezes ou mais na mesma maquina, ao inserir um registro o sistema nao duplique.
Obs: O usuario ainda nao gravou gando abrir pela segunda vez o mesmo sistema!
Obs: O usuario ainda nao gravou gando abrir pela segunda vez o mesmo sistema!
Rodrigo Ferreira
Curtir tópico
+ 0
Responder
Posts
28/04/2003
Schumacher
Rodrigo,
Certa vez precisei de algo semelhante e criei esta função:
function ProximoCodigoStr(psTabela, psChave: String;
psFormato, psDataBase, psSessionName: String) : String;
var lsStringSQL: String;
begin
lsStringSQL:= ´SELECT MAX(´+psChave+´) as Chave FROM ´+psTabela;
with TQuery.Create(nil) do
try
DataBaseName:= psDataBase;
SessionName := psSessionName;
SQL.Text := lsStringSQL;
Open;
if FieldByName(´Chave´).IsNull then
Result := FormatFloat(psFormato, 1)
else
Result := FormatFloat(psFormato, FieldByName(´Chave´).AsFloat + 1);
finally
Close;
Free;
end;
end;
Um exemplo de uso desta função, ao clicar no botão novo registro:
tblINClientes.FieldByName(´CliCodigo´).AsString :=
ProximoCodigoStr(´CliClientes´,´CliCodigo´,´00´,´NomedaSessao´,´NomedaBasedeDados´);
_________________
Marcelo Schumacher
Certa vez precisei de algo semelhante e criei esta função:
function ProximoCodigoStr(psTabela, psChave: String;
psFormato, psDataBase, psSessionName: String) : String;
var lsStringSQL: String;
begin
lsStringSQL:= ´SELECT MAX(´+psChave+´) as Chave FROM ´+psTabela;
with TQuery.Create(nil) do
try
DataBaseName:= psDataBase;
SessionName := psSessionName;
SQL.Text := lsStringSQL;
Open;
if FieldByName(´Chave´).IsNull then
Result := FormatFloat(psFormato, 1)
else
Result := FormatFloat(psFormato, FieldByName(´Chave´).AsFloat + 1);
finally
Close;
Free;
end;
end;
Um exemplo de uso desta função, ao clicar no botão novo registro:
tblINClientes.FieldByName(´CliCodigo´).AsString :=
ProximoCodigoStr(´CliClientes´,´CliCodigo´,´00´,´NomedaSessao´,´NomedaBasedeDados´);
_________________
Marcelo Schumacher
Responder
28/04/2003
Rodrigo Ferreira
Rodrigo,
Certa vez precisei de algo semelhante e criei esta função:
function ProximoCodigoStr(psTabela, psChave: String;
psFormato, psDataBase, psSessionName: String) : String;
var lsStringSQL: String;
begin
lsStringSQL:= ´SELECT MAX(´+psChave+´) as Chave FROM ´+psTabela;
with TQuery.Create(nil) do
try
DataBaseName:= psDataBase;
SessionName := psSessionName;
SQL.Text := lsStringSQL;
Open;
if FieldByName(´Chave´).IsNull then
Result := FormatFloat(psFormato, 1)
else
Result := FormatFloat(psFormato, FieldByName(´Chave´).AsFloat + 1);
finally
Close;
Free;
end;
end;
Um exemplo de uso desta função, ao clicar no botão novo registro:
tblINClientes.FieldByName(´CliCodigo´).AsString :=
ProximoCodigoStr(´CliClientes´,´CliCodigo´,´00´,´NomedaSessao´,´NomedaBasedeDados´);
_________________
Marcelo Schumacher
Obrigado amigo pela ajuda :wink:
Responder
Clique aqui para fazer login e interagir na Comunidade :)