passar valor para parametro em instrucao SQL

12/01/2006

0

No codigo abaixo eu pretendia que a variavel ´varcodigo´ fosse passada para o para o parametro ´c_varcodigo´ da instrucao SQL, mas isso nao esta acontecendo.O codigo esta plenamente funcional só nao consigo passar o valor para a instrucao SQL.O que estou fazendo de errado?


varcodigo := DataModule1.ClientDataSet1.FieldValues[´CODIGO´];
DataModule1.SQLDataSet2.CommandText := ´SELECT * FROM HISTORICO_PACIENTES WHERE CODIGO=:c_varcodigo);
DataModule1.SQLDataSet2.ParamByName(´c_varcodigo´).asinteger := varcodigo;
DataModule1.SQLDataSet2.ExecSQL;


Joe_wah

Joe_wah

Responder

Posts

12/01/2006

Eixox

varcodigo := DataModule1.ClientDataSet1.FieldValues[´CODIGO´]; 
DataModule1.SQLDataSet2.CommandText := ´SELECT * FROM HISTORICO_PACIENTES WHERE CODIGO=:c_varcodigo); 
DataModule1.SQLDataSet2.ParamByName(´c_varcodigo´).asinteger := varcodigo; 
DataModule1.SQLDataSet2.ExecSQL;


function TForm1.Teste: Integer;
var
Codigo : Integer;
Varr : Integer;
begin
SQLDataSet1.Active := False;
Codigo := SQLDataSet2.FieldValues[´CODCLI´];
SQLDataSet1.CommandText := ´´;
SQLDataSet1.CommandText := ´Select * from clientes where codcli = :pcodigo´;
SQLDataSet1.ParamByName(´pcodigo´).AsInteger := Codigo;
SQLDataSet1.Active := True;
Varr := SQLDataSet1CODCLI.Value;
Result := Varr;
end;

Eu fiz uma função e retornou corretamente o resultado. Bem verifique se o valor que está sendo atribuído a sua primeira variável corresponde exatamente ao tipo ou tente deixar o seu código mais ou menos igual a minha função que obrigatoriamente tem que funcionar.


Responder

12/01/2006

Joe_wah

Valeu, eu acabei de fazer um teste e descobri q esta funcionando no sentido de que o valor esta sendo passado(ao menos quando nao uso a variavel) mas aparentemente a instrucao SQL nao esta funcionando, nada aocorre, mas se eu subtituo por um valor fixo ela funciona, veja, isso funciona:

DataModule1.SQLDataSet2.CommandText := ´SELECT * FROM HISTORICO_PACIENTES WHERE CODIGO=:c_varcodigo´;
DataModule1.SQLDataSet2.ParamByName(´c_varcodigo´).asinteger := 34;

Mas isso abaixo nao funciona ( e posso dar certeza que a variavel ´varcodigo´ esta com o valor certo que deveria), a unica diferenca é q mudie o 34 para variavel varcodigo

DataModule1.SQLDataSet2.CommandText := ´SELECT * FROM HISTORICO_PACIENTES WHERE CODIGO=:c_varcodigo´;
DataModule1.SQLDataSet2.ParamByName(´c_varcodigo´).asinteger := varcodigo;


Responder

12/01/2006

Joe_wah

fiz outros testes e decobri q esta tudo funcionando PORÈM esse codigo é chamado sempre q um evento ocorre mas ele só esta sendo execuatdo na primeira vez q o evento ocorre, depois não funciona mais!!!!!!!!!!!!


Responder

13/01/2006

Eixox

Acho então que está faltando você ativar e desativar a sua consulta não.

Mande na íntegra o seu código para que eu possa ver o que você está fazendo.


Responder

13/01/2006

Martins

tente assim, se bem q o resultado deveria ser o esperado.


varcodigo := DataModule1.ClientDataSet1.FieldByName(´CODIGO´).AsInteger; 

DataModule1.SQLDataSet2.CommandText := ´SELECT * FROM HISTORICO_PACIENTES WHERE CODIGO=:c_varcodigo´; 

DataModule1.SQLDataSet2.ParamByName(´c_varcodigo´).asinteger := varcodigo; 

DataModule1.SQLDataSet2.ExecSQL; 



Ou então post o q foi pedido pelo eixox!!


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar