读书人

有关ADOQuery的有关问题

发布时间: 2012-02-23 22:01:34 作者: rapoo

有关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==
。。。。一下,到底是哪一致的。

读书人网 >.NET

热点推荐