多表查询(100分)

B

blhappy

Unregistered / Unconfirmed
GUEST, unregistred user!
根据客户的需要查询,在客户不给定条件下面是多个选择条件下查询。
如在产品信息,成品率,销售情况,生产情况中按自行选择n种条件进行查询怎么写语名。谢谢回答
 
什么意思?是根据用户选择的项生成SQL语句吗?
用个逻辑开关变量加条件判断就可以了,不难。
 
将选项列出,对读进来的数据进行解析,空格的不要查就行了
 
比如说你有多个TEDIT来填入多个条件,通用做法如下:
首先把SQL语句的WHERE部分提取出来,用字串变量strWhere来处理
if not (edtPName.Text='') then
begin
if strWhere='' then
strWhere:=' where P.PName Like ''%'+edtPName.Text+'%'''
else
strWhere:=strWhere+' and P.PName Like ''%'+edtPName.Text+'%'''
end;
把各字段对应的TEDIT和字段名称代入这一段代码就可以了
然后在SQL语句中加入,
可以给分了:)
 
我也是这样做的只是在最前面一句中做了一个所有条件为空的判断,在后面不为空的条件
中最后一句加入一个WHere语句,再把SQL查询字符串加入出现以下错误:
if combobox1.text<>'' then
begin
sqlstring:='工作令号='+''''+combobox1.text+'''';
end;
if combobox2.text<>'' then
begin
if sqlstring<>'' then
begin
sqlstring:=sqlstring+'and 产品型号='''+combobox2.text+'''';
end
else
begin
sqlstring:='产品型号='''+combobox2.text+'''';
end;
end;
.......
adoquery2.sql.add('select * from shengchan where ');
adoquery2.sql.add(sqlstring);
错误信息:[microsoft][odbc]sql server driver][sql server] line2:incorrect syntax
near'=''.process stopped.
 
很简单呀,你只要对sql语句的条件进行组合!
 
用combobox
case combobox1.text of
'':str:='';
end;
query.close;
query.sql.clear;
query.sql.add('select * from xx where XX=:XX');
query.Parameters.ParamByName('xx').value:=str;
query.open
 
这个不难哪, 以前我也作过与此类似的。根据条件组合语句不就行了…
 
select * from tabl1 where a like %:A% and b like %:b% and c like %:c% ...
 
这个问题确实很好解决啊
oceanwave已经给出答案了
 
顶部