Olá galera, nesta Quick Tips, irei continuar com a construção da nossa Class TSequence, agora vamos implementar nosso método UpdateSequence.
Explicação :
A finalidade desta function é bem simples iremos através dela localizar o último ID armazenado na tabela SequenceIDDocumento, com este ID armazenado vamos dar um Update na SequenceIDDocumento acrescentando + 1 no seu valor, ou seja se retornou 0 passará a ser 1, e assim por diante, sempre acrescentando +1.
Podemos notar que existe logo no início uma junção com o nome SequenceID+xNome, para que isso ? Evitar que fiquemos informando SequenceIDX, SequenceIDY, ao usarmos esta função, eu faço isso pois mantenho o padrão nos nomes das minhas Sequences, que quiser ter um nome para cada Sequence basta remover esta linha.
class function TSequence.UpdateSequence(xNome: String; Conexao: TSQLConnection): String;
Var
xQry : TSQLQuery;
ID : Integer;
begin
Try
xNome := 'SequenceID'+xNome;
xQry := TSQLQuery.Create(Nil);
With xQry do
begin
ID := GetLastSequence(xNome, Conexao);
Inc(ID);
SQLConnection := Conexao;
SQL.Clear;
SQL.Add('UPDATE ' + xNome +' SET ID = ' + IntToStr(ID) );
ExecSQL;
Close;
SQL.Clear;
SQL.Add('SELECT * FROM ' + xNome );
Open;
Result := Fields[0].AsString;
end;
Finally
FreeAndNil(xQry);
End;
end;
Vamos construir o exemplo para vermos funcionar.
Adicione um Form, e salve o mesmo como uFrmPrincipa.pas , feito isso vamos adicionar :
1 TBitBtn(BtnGerar)
1 TLabeledEdit(EdtIDDocumento)
1 TSQLConnection(BDDevMedia – Configurado para o nosso banco de dados MySQL)

Agora vamos implementar o evento onClick do BtnGerar
procedure TFrmPrincipal.BtnGerarClick(Sender: TObject);
begin
EdtIDDocumento.Text := TSequence.UpdateSequence('DOCUMENTO',BDDevMedia);
end;
Como falado anteriormente veja como faço para executar a procedure, passo apenas “DOCUMENTO” e a conexão, mas isso é devido minha Sequence se chamar SequenceIDDocumento, e também por ter aquela linha de concatenação usando SequenceID+xNome, sendo assim dentro da função xNome será igual a SequenceIDDocumento. Assim finalizamos nosso exemplo. Porém alguém pode perguntar Wesley como vou atribuir isso a um determinado campo no meu DataSet ?
Supondo que eu esteja passando através do meu DataSorce, veja como :
DSPadrao.DataSet.FieldByName(‘IDDocumento’).AsString := TSequence.UpdateSequence('DOCUMENTO');
Supondo que eu esteja passando através do meu ClientDataSet, veja como :
ClientDataSet1.FieldByName(‘IDDocumento’).AsString := TSequence.UpdateSequence('DOCUMENTO');
Obviamente nosso DataSet, tem que estar em modo de Inclusão ou Edição, concordam ?
Fico por aqui ate à próxima Quick Tips.
Um abraço
Wesley Y
wyamazack@rwsolution.com.br