Erro no Select do IBDataSet
Boa noite pessoal ....como eu faço para essa procedure funcionar ....estou usando D7 e interbase..a minha tabela eh a seguinte
Quer dizer parte dela neh
eu tenho um sisteminha que faz o cadastro dos alunos e a pesquisa.....dai eu quero saber apenas os que fazem matematica e portugues dai eu vou na parte de pesquisa e tico no combobox matematica e portugues
sendo que 1 eh ticado e 0 e sem o tic
e a minha procedure eh a seguinte
dah o seguinte erro
Field mat not found
Sendo que as Variaveis Mat Port e Ing eu quero passar como parametro para o Select
oque eu preciso fazer para issu funcionar.....vlw pessoal ...obrigado por enquanto
Codigo integer
Nome varchar
Endereco varchar
Portugues integer
Matematica integer
Ingles integer
Quer dizer parte dela neh
eu tenho um sisteminha que faz o cadastro dos alunos e a pesquisa.....dai eu quero saber apenas os que fazem matematica e portugues dai eu vou na parte de pesquisa e tico no combobox matematica e portugues
sendo que 1 eh ticado e 0 e sem o tic
e a minha procedure eh a seguinte
procedure TFormCadastro.BitBtn1Click(Sender: TObject);
Var
Mat, Port, Ing: integer;
begin
IBDataSet1.ClearFields;
IBDataSet1.Close;
IF cbMat.Checked = True then
Mat:= 1
else
Mat:= 0;
IF cbPort.Checked = True then
Port:= 1
else
Port:= 0;
IF cbIng.Checked = True then
Ing:= 1
else
Ing:= 0;
IBDataSet1.ParamByName(´mat´);
IBDataSet1.ParamByName(´port´);
IBDataSet1.ParamByName(´ing´);
IBDataSet1.SelectSQL.Add(´Select * from ficha where MATEMATICA = :mat and PORTUGUES = :port and INGLES = :ing´);
IBDataSet1.ExecSQL;
IBDataSet1.Open;
if IBDataSet1.RecordCount=0 then
Begin
ShowMessage(´Nenhum aluno foi encontrado com esses dados!´);
abort;
End;
dah o seguinte erro
Field mat not found
Sendo que as Variaveis Mat Port e Ing eu quero passar como parametro para o Select
oque eu preciso fazer para issu funcionar.....vlw pessoal ...obrigado por enquanto
$grandaum$
Curtidas 0
Respostas
Rafaela.campos
10/05/2006
Então, no caso a definição dos parametros tem q vir depois da definição da SQL, e, vc não precisa de:
IBDataSet1.ClearFields;
outra coisa use a propriedade Text ao invés do método Add, pelo seguinte fato: se ja existir algo na propriedade SelectSQL o método Add adicionará a nova cláusula à ja existente, enquanto a propriedade Text substituirá o conteúdo, desta forma seu código ficaria assim:
IBDataSet1.SelectSQL.Text:=´Select * from ficha where MATEMATICA = :mat and PORTUGUES = :port and INGLES = :ing´;
//definição dos parametros como inteiros referenciando as variaveis
//criadas na procedure
IBDataSet1.ParamByName(´mat´).AsInteger:=Mat;
IBDataSet1.ParamByName(´port´).AsInteger:=Port;
IBDataSet1.ParamByName(´ing´).AsInteger:=Int;
IBDataSet1.Open;
-------
Ah, e como vc está trazendo resultados de dados do banco e não executando operações de alteração use somente o Open sem : IBDataSet1.ExecSQL;
Espero ter ajudado
Att.
IBDataSet1.ClearFields;
outra coisa use a propriedade Text ao invés do método Add, pelo seguinte fato: se ja existir algo na propriedade SelectSQL o método Add adicionará a nova cláusula à ja existente, enquanto a propriedade Text substituirá o conteúdo, desta forma seu código ficaria assim:
IBDataSet1.SelectSQL.Text:=´Select * from ficha where MATEMATICA = :mat and PORTUGUES = :port and INGLES = :ing´;
//definição dos parametros como inteiros referenciando as variaveis
//criadas na procedure
IBDataSet1.ParamByName(´mat´).AsInteger:=Mat;
IBDataSet1.ParamByName(´port´).AsInteger:=Port;
IBDataSet1.ParamByName(´ing´).AsInteger:=Int;
IBDataSet1.Open;
-------
Ah, e como vc está trazendo resultados de dados do banco e não executando operações de alteração use somente o Open sem : IBDataSet1.ExecSQL;
Espero ter ajudado
Att.
GOSTEI 0
$grandaum$
10/05/2006
Legal funcionou ...mas ele naum tah mostrando no dbgrid..e agora?
vlw pela força ai hein Rafaela
vlw pela força ai hein Rafaela
GOSTEI 0
Rogerio_amorim
10/05/2006
$Grandaum$ ,
Esse seu select é editável ? caso não for , vc deveria simplesmente usar um ibquery junto com um datasource e apontar o dbgrid para o datasource. Mas se for editável vc deve saber que é necessário acessar o dataset editor do componente ibdataset e proceder as configurações para que funcione.
Rogerio Amorim
Esse seu select é editável ? caso não for , vc deveria simplesmente usar um ibquery junto com um datasource e apontar o dbgrid para o datasource. Mas se for editável vc deve saber que é necessário acessar o dataset editor do componente ibdataset e proceder as configurações para que funcione.
Rogerio Amorim
GOSTEI 0
$grandaum$
10/05/2006
Obrigado a todos....meu problema foi resolvido ...muito obrigado
GOSTEI 0