ADOQuery根据条件SQL合并

 Delphi:ADOQuery根据条件SQL合并问题:

遇到一个头晕的问题:共有6个选项,根据选项是否选中情况来组合ADOQuery的SQL内容并执行,具体如下:


代码:
  

mssql数据表: main
------------------------------------------
结构: 
                       需要搜索  需要排序
编号     bigint   8      是        是
名称     varchar  40     是        是
类型     varchar  20
收到日期 datetime 8                是
完成日期 datetime 8                是
是否完成 bit 1
是否作废 bit 1
------------------------------------------

 



相关组件名称和说明: 

搜索(CheckBox3 根据2个字段搜索):ComboBox3 字段名称 Edit8 搜索内容

完成状态(RadioGroup1 显示需要的纪录): 0 未完成 1 完成

激活状态(RadioGroup2 显示需要的纪录): 0 激活 1 作废

显示类型(CheckBox6 共有N个类型名称,显示需要类型的纪录):ComboBox4 

排序类型(CheckBox7 根据4个字段升/降排序):ComboBox5 CheckBox8

日期区间(checkBox9 显示日期区间内的纪录):ComboBox6 DateTimePicker1 DateTimePicker2

-------------------------------------------

  
  
  
  
  1. //是不是这个意思? 
  2. //---------------------------------------------------------------------------------------- 
  3. ADOQuery.SQL.Clear; 
  4. ADOQuery.SQL.Add( 'select * from main' ); 
  5. ADOQuery.SQL.Add( 'where' ); 
  6. ADOQuery.SQL.Add( '(完成状态='+IntToStr(RadioGroup1.ItemIndex)+')' ); 
  7. ADOQuery.SQL.Add( 'and (激活状态='+IntToStr(RadioGroup2.ItemIndex)+')');
  8. if CheckBox6.Checked then //显示类型 
  9. ADOQuery.SQL.Add( 'and ('显示类型='+''''+ComboBox4.Text+''''+')'); 
  10. if CheckBox3.Checked then //搜索条件 
  11. ADOQuery.SQL.Add( 'and ('+ComboBox3.Text+'='+''''+Edit8.Text+''''+')'); 
  12. if CheckBox9.Checked then begin //日期条件 
  13. ADOQuery.SQL.Add( 'and ('+ComboBox6 .Text+'>='+DateToStr(DateTimePicker1 .Date)+')'); 
  14. ADOQuery.SQL.Add( 'and ('+ComboBox6 .Text+'<='+DateToStr(DateTimePicker2 .Date)+')'); 
  15. end; 
  16. if CheckBox7.Checked then begin //排序 
  17. ADOQuery.SQL.Add( 'order by '+ ComboBox5.Text); 
  18. if CheckBox8.Checked then ADOQuery.SQL.Add( 'Desc' ); 
  19. end; 
  20. //----------------------------------------------------------------------------------------- 


你可能感兴趣的:(sql,数据库,职场,休闲,ADOQuery)