Primeiro o Gerson construiu métodos com sobrecarga para cobrir os diferentes casos. A idéia já era ótima, mas nós acabamos juntos chegando a esta 'ultimate' solução Hehe.
Este método deve ser um procedimento global ou um método público de um objeto:
procedure AbrirDataSet(DataSet: TDataSet; Parametros: array of Variant);
var
i: Integer;
begin
DataSet.Close;
for i := 0 to Pred(Length(Parametros)) do
DataSet.Params[i].Value := Parametros[i];
DataSet.Open;
end;
Pronto. Simples, não :)
Lembrando: na unit em que este método for declarado tem que ter as units DB e Variants na cláusula uses
O parâmetro DataSet representa o DataSet que vai ser usado - Pode ser qualquer classe derivada de TDataSet (como TClientDataSet, TADODataSet, TBDEDataSet, etc...).
O Parâmetro Parametros é um array contendo os valores dos parâmetros que serão passados para o DataSet. Detalhe: os parâmetros devem ser passados na mesma ordem que está na propriedade Params do DataSet.
Pronto. Agora na aplicação ao invés de ter no mínimo 3 linhas de código para abrir o DataSet só precisa uma:
AbrirDataSet(CdsProdutos, [EditDescricao.Text]);
O exemplo acima vai passar o valor do EditDescricao para o primeiro parâmetro do DataSet CdsProdutos e vai abrir o DataSet.
Para mais parâmetros é só separá-los com vírgulas dentro dos colchetes - Os colchetes são necessários porque o parâmetro é um array.
Então é isso. Divirtam-se e procurem sempre maneiras de fazer o menor e mais bonito código possível. Abraços.
Excelente artigo. Ajudou MUITO!!!
ResponderExcluirParabéns.
Paulo Cesar