passar valor para parametro em instrucao SQL
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;
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
Curtidas 0
Respostas
Eixox
12/01/2006
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.
GOSTEI 0
Joe_wah
12/01/2006
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;
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;
GOSTEI 0
Joe_wah
12/01/2006
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!!!!!!!!!!!!
GOSTEI 0
Eixox
12/01/2006
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.
Mande na íntegra o seu código para que eu possa ver o que você está fazendo.
GOSTEI 0
Martins
12/01/2006
tente assim, se bem q o resultado deveria ser o esperado.
Ou então post o q foi pedido pelo eixox!!
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!!
GOSTEI 0