sql语句实现查询功能(20分)

  • 主题发起人 主题发起人 hqlww
  • 开始时间 开始时间
H

hqlww

Unregistered / Unconfirmed
GUEST, unregistred user!
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from guyuan.db');
query1.sql.add('where department like:department');
query1.params.paramValues['department']:=combobox1.text;
Query1.ExecSQL;
query1.open;
这个实现了查询,请问我要选择一个不是查询department比如我还有一个
要查询一个比25岁大的记录,怎么写呢?
能利用RadioButton的checked属性选择更好。谢谢。

我知道一点,比如可能需要用几个if语句,要不,也可以用with语句,具体怎么写呢?
你也知道添加控件radiogroup1还有当然就是radiobutton1,radiobutton2设置他们的 checked属性,
我是这样想的,对吗?
 
var
s:string;
begin
s:='';
if radiobutton1.checked then s:=s+'and (department like :department) ';
if radiobutton2.checked then s:=s+'and (age>25)';
....
if s<>'' then
begin
query1.sql.clear;
query1.sql.add('select * from guyun.db');
query1.sql.add(s);
query1.exesql;
query1.open;
end;
搞定,给分。

 
AnsiString SQLData;
SQLData := 'select * from guyuan';
if (radiobutton1.checked)
sqldata := sqldata + '>' + edit1.text.trim() (if edit1.value = 25)
else if (radiobutton2.checked)
sqldata = sqldata + ':=' + edit1.text.trim()
query1.close;
query1.clear;
query1.sql.add(sqldata);
query1.open;
query1.close;

我是以BCB的语法来写的,一般是用一个字符串来做好了再一起加入,当然这是我的做法
 
to 狼牙:写错了,应该这样
var
s:string;
begin
s:='';
if radiobutton1.checked then s:=s+' department like :department '
else if radiobutton2.checked then s:=s+' age>25 '
else ...;
if s<>'' then
begin
query1.sql.clear;
query1.sql.add('select * from guyun.db ');
query1.sql.add('where '+s);
if radiobutton1.checked then
query1.params.paramValues['department']:=combobox1.text
else if ...
else ...;
query1.open;
end;

//Query1.ExecSQL是不需要的,
//如果有多个不同的参数,要注意给每个参数付值,
//对于多个查询条件的组合,我上面写的也不是很好,其实有很多复杂的内容判断,
不过在这里只是举个例子,就不用那么烦了,要注意各个条件之间的关系,
例如 and 在什么时候出现,多做一些调试就不会出错了。
 
westboy2000,首先感谢你对我的回答,应用你的办法我已经可以成功了。
现在我在试着给查询年龄的数字改写成能够自己在Edit中输入,希望我能在你帮助下我能尽快给
Delphi学习掌握地更好,很想结交你这个朋友,可以吗?
我的QQ:52674330
 
欢迎!我的信箱 westboy2000@263.net,大家共同学习。[:)]
 
再问你啊,我这个怎么没有办法啊,我想年龄要自己在Edit里输入,应该怎么修改呢?
你有别的联系方式吗?
 
没有别的联系方式。[:(]
年龄要自己在Edit里输入,那就随便输入好了,但是程序要这样写了
var
s:string;
begin
s:='';
if radiobutton1.checked then s:=s+' department like :department '
else if radiobutton2.checked then s:=s+' age>:age '
else ...;
if s<>'' then
begin
query1.sql.clear;
query1.sql.add('select * from guyun.db ');
query1.sql.add('where '+s);
if radiobutton1.checked then
query1.params.paramValues['department']:=combobox1.text
else if radiobutton2.checked then
query1.params.paramValues['age']:=edit.text //或者用StrToInt(edit.text),你自己调试一下吧
else ...;
query1.open;
end;
当然最好提前判断一下edit中输入的是不是都是数字,如果否则提示,要求重新输入。
可以用这样的方法,放在上面那段程序的上面。
try
StrToInt(edit.text);
except
showmessage('请输入数字');
Abort;
end;
 
后退
顶部