Olá Pessoal, aqui estou para minha primeira Quick Tips e nela vamos falar de um assunto um tanto simples no Delphi, porém eu irei aborar um detalhe interessantes para aqueles que ainda precisam trabalhar com BDE e lançar mão de Stored Procedure.
Bom, sei que muitas pessoas ainda utilizam o BDE para o desenvolvimento de software, em duas empresas que trabalhei deparei com algumas programadores que utilizavam TStoredProc para armazenar informações no Banco de dados. Mas se deparavam com o problema na atualização dos parâmetros do component, de não conseguir criá-lo de forma dinâmica e a utilização do método Prepare. Então segue a dica.
Muitas programadores acreditam que o Método Prepare no caso do BDE serve para preparar o script para ser utilizado no banco de dados, mas não é isso que ocorre na verdade este método é utilizado para preparar sim o Component para a Stored Procedure, assim carregando os parâmetros e algumas propriedades especificas para cada stored. Segue modo correto para a utilização.
Usando assim.
Procedure.Close;
Procedure.Prepare;
Procedure.ParamByName(‘Contrato’).Asstring := Contrato_fin;
ou
Para diminuirmos os componentes na Tela podemos usar assim.
Var
Procedure : TStoredProc;
begin
Procedure := TStoredProc.Create(nil);
Procedure.DatabaseName := 'Banco';
Procedure.StoredProcName := 'Stp ProcedureBanco;1';
Procedure.Prepare;
...
..
Procedure.ExecProc;
Procedure.unPrepare;
FreeAndnil(Procedure);
Assim diminuindo as chances do no caso você alterar a StoredProc e esquecer de atualizar os parâmetros por exemplo (Isto é comum de acontecer). O Mesmo serve para Componentes ADO. Para quem tem dificuldades em cria-los dinamicamente pela questões de carregar o parâmetro utilizem o método abaixo.
AdoProc.Parameters.Refresh;
Com DbExpress é difícil acontecer este problema pois a Framework carrega os parâmetros automaticamente ao ser passado a Stored Procedure.
Eu fico por aqui, até a próxima tips.