求一个order by的问题.(50)

  • 主题发起人 主题发起人 paulwang200810
  • 开始时间 开始时间
P

paulwang200810

Unregistered / Unconfirmed
GUEST, unregistred user!
我有九个checkbox.选中几个我就按那几个排序.(个数不定)如何组织这个order by?如: select * from tablename order by ?..
 
好象有点麻烦阿,我随便写了一个,不过得按第一个字段排序。不太满足你的要求。SQl.Add('select * from tablename order by 1');if CHECKBOX1.CHECKED thenbegin SQl.Add(',field1');end;if CHECKBOX2.CHECKED thenbegin SQl.Add(',field2');end;if CHECKBOX3.CHECKED thenbegin SQl.Add(',field3');end;...if CHECKBOX9.CHECKED thenbegin SQl.Add(',field9');end;
 
checkbox 只是例子真正的环境是在类似SQL的环境中不能使用字符累加,然后execute.看有没有其他好的方法?
 
Var OrderStr:String;Begin OrderStr:=''; if CHECKBOX1.CHECKED then OrderStr := OrderStr+',field1'; if CHECKBOX2.CHECKED then OrderStr := OrderStr+',field2'; system.Delete(OrderStr,1,1); if OrderStr<>'' then OrderStr:=' Order BY '+OrderStr; ..... .....end;End;
 
谢谢楼上的解答但请参考你楼上的回答环境不支持字符累加然后execute.不是在delphi中. 是自己做的一个解释器!有自己的脚本!语法相似于delphi+sql. 但目前还没有execute的功能. 所以请教大家还有什么好方法? 
 
语法类似delphi+sql,是你说的。问题是你的语法支持了什么功能,大家都不知道,怎么猜呢?
 
改进自己的解释器吧,你从一开始提的问题,就误导大家了。
 
仅仅在SQL里面不用字符累加再execute.这个功能要怎么实现?
 
比如有2个boolean.same, out : boolean;if (same = true) and (out=false) then select * from table order by same elseif (same = true) and (out=true) then select * from table order by same,outelseif (same = false) and (out=true) then select * from table order by out能不能把这些判断和语句写到一句话中. 因为九个条件,这样一个个的写就不大现实了!
 
znxia 的好像可以哦
 
组合方式一共有2^9 = 512种,由于你的解释器不能提供 Execute 字符串的功能,所以这512种SQL语句你必须一个一个地写出来,还是改进你的解释器吧,老兄。还有一种对你来说比较可行的方法,那就是编写一个程序,自动生成那512个判断条件以及相应的SQL,呵呵。。。
 
多人接受答案了。
 
后退
顶部