Implementando Sequence no MySQL: Delphi - Parte 2

Veja nesta Quick, como podemos criar uma Sequence em MySQL.

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

Artigos relacionados