大哥们帮帮我啊,我好不容易等了2天才能请教各位(0分)

  • 主题发起人 主题发起人 cameroanthony
  • 开始时间 开始时间
C

cameroanthony

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把一个ADOQUERY组合查询的结果记录的数量和该字段的值显示出来
这是我的代码

begin
with form4.ADOQuery1 do
begin
close;
sql.clear;
sql.add('select * from main where 1=1 ');
if edit2.text<>'' then
begin
sql.add('and 工号=:wid');
parameters.parambyname('wid').value:=edit2.text;
end;
if edit4.text<>'' then
begin
sql.add('and 班次=:banci');
parameters.parambyname('banci').value:=edit4.text;
end;
open;
end;
edita.Text:=inttostr(ADOquery1.Recordset.RecordCount);


end;


我调试的时候就显示错误:"至少一个参数没有被指定值."
如果把条件框留空,就没问题,也不出错,而且显示0

如果我想把具体符合该条件的结果显示在EDIT 里面,应当怎么写,请各位高手指点一下啊

比如我查询出了一条记录,工号这个字段的值是12,那么我想把12显示到edita这个编辑框里呢?
 
累不累啊... 直接用 sql.add('and 班次='''+edit4.text+''''); 不就得了?
 
如果用这样的,那edit4.txt为空的时候不也也相当于值了吗?数据库表里面可以存在空值的.
 
我有没让你放弃 if xxx<>'' then 啊...
 
谢谢,我想再请问下怎么把记录数显示到EDITA里面,或者将该记录的某一字段值显示到EDITA里面??
 
edita.Text:=inttostr(ADOquery1.Recordset.RecordCount); 修改成:
if form4.ADOquery1.Recordset.RecordCount=1 then //只有一条记录时, 才能显示工号
//如果是多条记录, 就不能用edita(TEdit)控件了. 可以用DBGrid显示数据集.
edita.Text:=inttostr(form4.ADOquery1.FieldByName('工号').asString);
 
谢谢jangill,您说的很详细,可我运行的时候总是提示:至少一个参数没有被指定值

我看了一下执行到SQL语句的时候就报错的,我的ADOQuery1是从控件里面拖下来的,设置好了 connection和dataset
 
:"至少一个参数没有被指定值." 是因为where 1=1 有问题吧

edita.Text:=ADOquery1.FieldByName('工号').asString;
 
谢谢,如果不这样写,应当怎么写呢?
 
你要1=1是想表达什么意思呢,前头的应该是字段名。而且如果是字符类型应该加引号的,比如:
with ADOQuery1 do
begin
close;
sql.clear;
sql.add('select * from bank where id=''00001'' ');
if edit1.text<>'' then
begin
sql.add('and fair=:wid');
parameters.parambyname('wid').value:=edit1.text;
end;
if edit2.text<>'' then
begin
sql.add('and convenient=:banci');
parameters.parambyname('banci').value:=edit2.text;
end;
open;
end;
edit3.Text:=ADOquery1.FieldByName('fair').asString;
 
1+1是为了将后面的语句动态的添加到上面的SQL语句里面,这样就可以组合查询EDIT里面的内容了啊
 
谢谢谢谢,我发现错误了
sql.add('and 工号=:wid');//这句应当修改成 sql.add('and (工号=:wid'));一些就OK了

还是SQL语句的问题,谢谢楼上的诸位
 
begin
with form4.ADOQuery1 do
begin
if form4.adoquery1.active=true then form4.adoquery1.active:=false;
sql.clear;
sql.add('select * from main where 工号=12 ');
form4.adoquery1.active;
edita.Text:=ADOquery1.FieldByName('工号').asString;
end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
860
import
I
I
回复
0
查看
769
import
I
I
回复
0
查看
802
import
I
后退
顶部