【求】sql,delphi高手进,在线等,急!!!!!!!(50)

  • 主题发起人 主题发起人 sunke520
  • 开始时间 开始时间
S

sunke520

Unregistered / Unconfirmed
GUEST, unregistred user!
SELECT 站点名, sum(雾日数) AS 雾的总日数FROM 表WHERE (年=1971 And 月>=2) Or (年=1972 And 月<=6) and (站点名 in ('南京','上海','北京','天津'))GROUP BY 站点名;这句话查询的是1971年2月到1972年6月南京,上海,北京,天津雾的总日数。delphi窗体上放了4个checkbox,复选框的标题分别是各个站点名。[red]现要求只查询复选框被选中的站点名的雾的总日数,问各位大虾怎么改上面的sql语句?[/red]附:s:='';
if CheckBox1.Checked=True then
s:=s+'站点名='+#39+'青州'+#39+' or ';
if CheckBox2.Checked=True then
s:=s+'站点名='+#39+'寿光'+#39+' or ';
if CheckBox3.Checked=True then
s:=s+'站点名='+#39+'临朐'+#39+' or ';
if CheckBox4.Checked=True then
s:=s+'站点名='+#39+'昌乐'+#39+' or ';
s:=TrimRight(s);
n:=length(s);
s:=copy(s,1,n-2);
 
怎么把s变成sql语句里“站点名 in ('南京','上海','北京','天津')”形式?
 
使用stringlist这个类来保存你的站点名称,最后在生成SQL的时候,去stringlist的commtext这个属性就可以了。
 
楼上jin_sue提出的用stringlist这个类可以把字符串分割,问题是现在如果s:='站点名='青州' or 站点名='寿光'';(也就是我选中了checkbox1,checkbox2这2个站点),用stringlist这个类来保存站点名称,最后生成SQL的时候,commatext:= ' 站点名='青州' ,or, 站点名='寿光' ';如何把or这个字符去掉,而结果只要 '站点名='青州' ,站点名='寿光' '这俩个?求各位帮忙啊。。。。。。。。。
 
不知道是不是没看懂你的需求,就像JIN——SUE所说,动态生成WHERE 后面的(站点名 in ('南京','上海','北京','天津'))把几个站点换掉不就行了吗?
 
s:='';
if CheckBox1.Checked=True then
s:=s+#39+'青州'+#39+',';
if CheckBox2.Checked=True then
s:=s+#39+'寿光'+#39+',';
if CheckBox3.Checked=True then
s:=s+#39+'临朐'+#39+',';
if CheckBox4.Checked=True then
s:=s+#39+'昌乐'+#39+',';
s:=TrimRight(s);
n:=length(s);
s:=copy(s,1,n-2);用S替换掉IN的后面的括号中的内容
 
后退
顶部