有关ADOQuery的问题
大家好,偶还是菜鸟,最近刚开始学Delphi做数据库。遇到问题还请达人帮忙!
我用ADOQuery查询SQL Sever中的表,连接和访问都没问题,怀疑是SQL语句存在错误。用了TreeView控件来限制查询条件。
具体代码
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add( 'select * from BSSJ where ZY=:a and XY=:b and NJ=:c ');
Parameters.ParamByName( 'a ').Value:=trim(treeview1.Selected.Text);
Parameters.ParamByName( 'b ').Value:=trim(treeview1.Selected.Parent.Text);
Parameters.ParamByName( 'c ').Value:=trim(treeview1.Selected.Parent.Parent.Text);
//Parameters.ParamByName( 'a ').Value:= '计算机科学与技术 ';
//Parameters.ParamByName( 'b ').Value:= '信息工程 ';
//Parameters.ParamByName( 'c ').Value:= '2001 ';
Open;
showmessage( '当前的节点内容为: '+Treeview1.Selected.Text);
end;
很奇怪,结果总是没有符合条件的记录,但是我如果用//的3句语句来代替之前的3句,则有记录出现。所以我怀疑trim(treeview1.Selected.Text)是不是表达不规范啊?对了ZY和XY都是varchar类型的!
[解决办法]
你這樣調試:
因為這樣
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add( 'select * from BSSJ where ZY=:a and XY=:b and NJ=:c ');
Parameters.ParamByName( 'a ').Value:= '计算机科学与技术 ';
Parameters.ParamByName( 'b ').Value:= '信息工程 ';
Parameters.ParamByName( 'c ').Value:= '2001 ';
Open;
showmessage( '当前的节点内容为: '+Treeview1.Selected.Text);
end;
可以出結果。所以你改一下
======1========
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add( 'select * from BSSJ where ZY=:a and XY=:b and NJ=:c ');
Parameters.ParamByName( 'a ').Value:=trim(treeview1.Selected.Text);
//Parameters.ParamByName( 'b ').Value:=trim(treeview1.Selected.Parent.Text);
//Parameters.ParamByName( 'c ').Value:=trim(treeview1.Selected.Parent.Parent.Text);
//Parameters.ParamByName( 'a ').Value:= '计算机科学与技术 ';
Parameters.ParamByName( 'b ').Value:= '信息工程 ';
Parameters.ParamByName( 'c ').Value:= '2001 ';
Open;
showmessage( '当前的节点内容为: '+Treeview1.Selected.Text);
end;
==========2=======================
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add( 'select * from BSSJ where ZY=:a and XY=:b and NJ=:c ');
Parameters.ParamByName( 'a ').Value:=trim(treeview1.Selected.Text);
Parameters.ParamByName( 'b ').Value:=trim(treeview1.Selected.Parent.Text);
//Parameters.ParamByName( 'c ').Value:=trim(treeview1.Selected.Parent.Parent.Text);
//Parameters.ParamByName( 'a ').Value:= '计算机科学与技术 ';
//Parameters.ParamByName( 'b ').Value:= '信息工程 ';
Parameters.ParamByName( 'c ').Value:= '2001 ';
====3==
。。。。調試一下,到底是哪一項導致問題的。