如何实现多处查询以下是一个例子不知道怎么弄了,请高手指点(100分)

  • 主题发起人 主题发起人 我为编程狂
  • 开始时间 开始时间

我为编程狂

Unregistered / Unconfirmed
GUEST, unregistred user!
if (ComboBox1.Text<>'') and (ComboBox2.Text<>'') and
(ComboBox3.Text<>'') and (ComboBox4.Text<>'') and
(ComboBox5.Text<>'') and (ComboBox6.Text<>'') then
begin
ADOTable1.Filter:= '单位='''+ComboBox3.Text+'''';
ADOTable1.Filtered:=True;
DBGrid1.DataSource:=DataSource1;
end;
这样写不行呀,怎么写才能实现多处查询呀,在线等。
 
你能再说的具体点吗?
顶一下
 
我一般都是自己直接写SQL语句来实现,这样灵活也方便
 
用SQL如何实现呀。
 
你没有说明白,你的COMMBBOX都是查询单位吗?
 
我这里有一个用ADOQuery做的查询。用Filter做的,你可以看看。
var
strValue,str,strFilter :String; //保存字符串
i :integer; //取出and的位置
begin
strFilter := '';
strValue :=edtTestNo.Text; //查询标本号
if Length(strValue) >0 then
strFilter := 'TestNo =' + strValue;
strValue :=edtPatientName.Text; //查询条件 + 病人姓名
if Length(strValue) >0 then
strFilter := strFilter + ' and PatientName =''' + strValue + '''';
strValue :=edtPatientID.Text; //查询条件 + 病 人类别
if Length(strValue) >0 then
strFilter := strFilter + ' and PatientID =''' + strValue + '''';
strValue :=cboPatientType.Text; //查询条件 + 病历号
if Length(strValue) >0 then
strFilter := strFilter + ' and PatientType =''' + strValue + '''';
strValue :=edtBedNo.Text; //查询条件 + 床号
if Length(strValue) >0 then
strFilter := strFilter + ' and BedNo =''' + strValue + '''';
strValue :=cboRoom.Text; //查询条件 + 送检科室
if Length(strValue) >0 then
strFilter := strFilter + ' and Room =''' + strValue + '''';
strValue :=cboSender.Text; //查询条件 + 送检医生
if Length(strValue) >0 then
strFilter := strFilter + ' and SendDoctor =''' + strValue + '''';
with DM.ADOFind do
begin
Close;
SQL.Clear;
SQL.Add('select * from DR_TEST order by ID');
Open;
Filtered :=False;
Filter :=strFilter;
Filtered :=True;
end;
 
用sql语句来实现
str:='select * from 表名 where 单位='+''''+ComboBox3.Text+''''
adoquery1.sql.add(str)
adoquery1.open
 
以上方法都不行,主要是实现多个选项中不管是否满足条件都可以进行查询。
adoquery1.sql.add('select * from base where 项目='+''''+ComboBox2.Text+''''');如果想在后面加其它的选择项,加入其它参数报错,提示不法打开数据。
 
不知道你想做什么,能把问题描述的清楚一点吗?
 
我这里想实现如下功能:有6个下拉框供选择数据,这6个下拉框可以都选也不可以不选,查询选择后的对应相符数据。用SQL如何实现,这样大家应该可以清楚了吧,在线等大家的回复,在此小弟先谢过了,解决后马上发分。
ADOQuery1.SQL.Add('SELECT * FROM base Where 类型1 like'+''''+ ComboBox1.Text+'''');在这个句子如何加入别的条件。
 
是一个字段,还是多个
 
多个字段
 
var
ssql:string
begin
ssql:='select * from base where 1=1 ';
if combobox1.text<>'' then
ssql:=ssql+' and combobox1的字段='''+combobox1.text+'''';
if combobox2.text<>'' then
ssql:=ssql+' and combobox2的字段='''+combobox2.text+'''';
............
with adoquery1 do
begin
sql.clear;
close;
sql.add(ssql);
open;
end;
end;
 
是不是选择几个就组合几个啊?Adotable就带了一个条件是吧,那用adoquery啊,sql语句也好写'SELECT * FROM base Where 类型1 like'+'''+ ComboBox1.Text+'or 类型2 like'+ComboBox1.Text+''是不是这样的啊?串语句的时候字符串要用''带入的。
 
问题解决了,谢谢大家了,转了一大圈又回到原点,给大家发分了。
 
我给你的就满足你的条件,只不过我的是Edit控件的内容,如果Edit不为空就加入到条件中,如果为空就判断下一个条件,然后通过Filter进行条件过滤。
 
后退
顶部