我的代码哪里错了?(关于adoquery查询)
有两个combobox 一个edit,一个button(查询),一个dbgrid,我想实现
选择字段 zd_combox 选择关系 gx_combox 比较值 bjz_edit
想实现
选择字段 (姓名) 选择关系 (等于) 比较值 (某某) (查询button)
我的代码如下
procedure TF_main.BitBtn4Click(Sender: TObject);
var
ZD_SQL_VAR,GX_SQL_VAR,BJZ_SQL_VAR:string;
begin
ZD_SQL_VAR:=ZD_Combox.Items[ZD_Combox.itemindex];
BJZ_SQL_VAR :=BJZ_edit.Text;
if GX_Combox.ItemIndex =0 then GX_SQL_VAR:='='
else if GX_Combox.itemIndex=1 then GX_SQL_VAR:='<'
else if GX_Combox.itemIndex=2 then GX_SQL_VAR:='>'
else if GX_Combox.itemIndex=3 then GX_SQL_VAR:='<>'
else if GX_Combox.itemIndex=4 then
begin
GX_SQL_VAR:='like';
BJZ_SQL_VAR :='%'+BJZ_edit.Text +'%';
end;
adoQuery1.close;
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add('select * from 学生表 where '+ZD_SQL_VAR+' '+GX_SQL_VAR+' '+''''+BJZ_SQL_VAR+'''' );
adoQuery1.open;
//判断是否有记录可操作
if adoQuery1.Eof then
begin
label18.caption:='总计:0 条记录符合条件。';
end
else
begin
label18.caption:='总计: '+inttostr(adoQuery1.RecordCount)+' 条记录符合条件。';
end;
PageControl1.OnChange (self);
end;
错误提示:Access violation at address 0000000 ,reat of address 0000000
请问我代码哪里不对呀!请帮助,急ing !!!
问题点数:20、回复次数:17Top
1 楼noall()回复于 2003-08-04 14:59:54 得分 1
这个提示错误跟上面的没关系吧.
单步执行错在哪里?Top
2 楼Little2000(rainy)回复于 2003-08-04 15:02:52 得分 1
楼主的查询语句是什么呢?Top
3 楼tflb(艺无止境)回复于 2003-08-04 15:08:57 得分 0
adoQuery1.SQL.Add('select * from 学生表where '+ZD_SQL_VAR+' '+GX_SQL_VAR+' '+''''+BJZ_SQL_VAR+'''' );
我想应该是这句有问题!!Top
4 楼tflb(艺无止境)回复于 2003-08-04 15:11:36 得分 0
能不能给一个例子,能实现上面说的就行!!Top
5 楼mc43(火猴)回复于 2003-08-04 15:11:47 得分 1
好像不是SQL语句的问题吧Top
6 楼IORILI(眼镜)回复于 2003-08-04 15:14:38 得分 2
BJZ_SQL_VAR裏面沒有值
再説了 你的程序怎麽寫得那麽複雜呢 我覺得用你一半的代碼就可以實現你要的功能了Top
7 楼tflb(艺无止境)回复于 2003-08-04 15:16:27 得分 0
楼上的,能不能帮我改一个呢!我是初学!在线等待!!Top
8 楼dtxipi(精灵古怪)回复于 2003-08-04 15:19:16 得分 1
错误提示好像是程序运行有问题了吧
不是sql的问题Top
9 楼IORILI(眼镜)回复于 2003-08-04 15:19:33 得分 2
procedure TF_main.BitBtn4Click(Sender: TObject);
var
ZD_SQL_VAR,GX_SQL_VAR,BJZ_SQL_VAR:string;
begin
ZD_SQL_VAR:=ZD_Combox.TEXT;
BJZ_SQL_VAR :=BJZ_edit.Text;
end;
adoQuery1.close;
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add('select * from 学生表 where '+ZD_SQL_VAR+' '+GX_Combox.TEXT+' '+''''+BJZ_SQL_VAR+'''' );
adoQuery1.open;
//判断是否有记录可操作
if adoQuery1.Eof then
begin
label18.caption:='总计:0 条记录符合条件。';
end
else
begin
label18.caption:='总计: '+inttostr(adoQuery1.RecordCount)+' 条记录符合条件。';
end;
PageControl1.OnChange (self);
end;
Top
10 楼dickeybird888(小鸟)回复于 2003-08-04 15:20:13 得分 6
我实验了一下你的查询语句并没有错误,(查询语句是相对于字符行字段实用的);
我估计你出错误可能是因为PageControl1.OnChange (self);,
在有一种可能就是以前的代码Top
11 楼IORILI(眼镜)回复于 2003-08-04 15:20:21 得分 4
是PageControl1.OnChange (self);的錯誤吧Top
12 楼tflb(艺无止境)回复于 2003-08-04 15:34:32 得分 0
对了,是PageControl1.OnChange (self);的事,先谢谢了!!
但现在为什么在
选择字段 zd_combox , 选择关系 gx_combox 选择了数据,点查询有数据,而
比较值 bjz_edit 输入任何数据都没做用呀!!
是不是SQL 部分也有问题呀!!
Top
13 楼IORILI(眼镜)回复于 2003-08-04 15:38:21 得分 2
你要在查询之前就要输入bjz_edit ,然后才能把值传到SQL语句里Top
14 楼tflb(艺无止境)回复于 2003-08-04 15:42:56 得分 0
我是先把bjz_edit的数据输入了,可以什么数据都没有呀!
只有在gx_combox里选择了数据,dbgrid里才有数据呀!但和bjz_edit里的数据一点关系都没有!!Top
15 楼tflb(艺无止境)回复于 2003-08-04 15:48:08 得分 0
我还是用的原来的代码,因为我的gx_combox的items里面是'等于''大于'等!!Top
16 楼Englash(开始)回复于 2003-08-04 15:57:12 得分 0
procedure TF_main.BitBtn4Click(Sender: TObject);
var
ZD_SQL_VAR,GX_SQL_VAR,BJZ_SQL_VAR:string;
begin
ZD_SQL_VAR:=ZD_Combox.TEXT;
BJZ_SQL_VAR :=BJZ_edit.Text;
end;
adoQuery1.close;
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add('select * from 学生表 where '+ZD_SQL_VAR+' '+GX_Combox.TEXT+' '+''''+BJZ_SQL_VAR+'''' );
adoQuery1.open;
//判断是否有记录可操作
if adoQuery1.Eof then
begin
label18.caption:='总计:0 条记录符合条件。';
end
else
begin
label18.caption:='总计: '+inttostr(adoQuery1.RecordCount)+' 条记录符合条件。';
end;
PageControl1.OnChange (self);
end;Top
17 楼IORILI(眼镜)回复于 2003-08-04 15:58:15 得分 0
哦 我说呢 呵呵Top
18 楼Englash(开始)回复于 2003-08-12 22:49:52 得分 0
这算什么~~
大部分都是抄人家的~~
那还开什么论坛~~~
发什么贴子
有本事自己做阿~~Top




