复选框的问题!各位帮帮小弟(50分)

  • 主题发起人 主题发起人 kobe093
  • 开始时间 开始时间
K

kobe093

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
Var
U1,U2:String;查询电压,定义
begin
u1:=Edit3.Text;
u2:=Edit4.Text;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * From test');
if checkboxA.Checked=true then

begin
ADOQuery1.SQL.Add(' WHERE 相别 LIKE ''A%''');选择A相
end;
if checkboxB.Checked=true then
begin
ADOQuery1.SQL.Add(' WHERE 相别 LIKE ''B%''');选择B相
end;
if checkboxC.Checked=true then
begin
ADOQuery1.SQL.Add(' WHERE 相别 LIKE ''C%''');选择C相
end;
ADOQuery1.SQL.Add(' and 电压 between ' + u1 + ' and ' + u2);
ADOQuery1.Open;
end;
我想要做一个范围查询器
附带ABC三相复选框
复选框要求:A B C中至少选一个,最多选两个
上面程序只能实现单选一项,如何实现复选?试了很多次乱了!
帮帮忙!感激不尽!
 
procedure TForm1.Button1Click(Sender: TObject);
Var
U1,U2,ts:String;查询电压,定义
begin
u1:=Edit3.Text;
u2:=Edit4.Text;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * From test WHERE ');
ts:='';
if checkboxA.Checked=true then

begin
ts:='相别 LIKE ''A%''';
end;
if checkboxB.Checked=true then
begin
if ts='' then
ts:='相别 LIKE ''B%'''
else
ts:=ts+' or 相别 LIKE ''B%''';
end;
if checkboxC.Checked=true then
begin
if ts='' then
ts:='相别 LIKE ''C%'''
else
ts:=ts+' or 相别 LIKE ''C%''';
end;
ADOQuery1.SQL.Add(' and 电压 between ' + u1 + ' and ' + u2);
ADOQuery1.Open;
end;

至于ABC至少选一个......Checkbox设置group>0 初始化一个选项 就OK了
最少选2个.....要你自己去控制了.....控件选择的控制你会吧.....
 
var
str1,str2:string;
//两个全局变量
procedure TForm1.CheckBoxCClick(Sender: TObject);
begin
if (checkboxA.Checked) and (checkboxB.Checked) then
begin
checkboxC.Checked:=false;
str1:='A%';
str2:='B%';
end;
end;
最终将str1和str2的值代入sql语句中
 
根本不是复选框的问题 是逻辑能力差劲的问题。
 
procedure TForm1.Button1Click(Sender: TObject);
Var
U1,U2:String;查询电压,定义
begin
if not checkboxA.Checked or not checkboxB.Checked and not checkboxC.Checked then
begin
showmessage('请最少选择一个条件');
exit;
end;
u1:=Edit3.Text;
u2:=Edit4.Text;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * From test where 1 =1 ');
if checkboxA.Checked=true then

begin
ADOQuery1.SQL.Add(' and 相别 LIKE ''A%''');选择A相
end;
if checkboxB.Checked=true then
begin
ADOQuery1.SQL.Add(' and 相别 LIKE ''B%''');选择B相
end;
if checkboxC.Checked=true then
begin
ADOQuery1.SQL.Add(' and 相别 LIKE ''C%''');选择C相
end;
ADOQuery1.SQL.Add(' and 电压 between ' + u1 + ' and ' + u2);
ADOQuery1.Open;
end;
 
1楼的我想问你下
我运行的时候老说ADOQuery1.SQL.Add(' and 电压 between ' + u1 + ' and ' + u2);
and附近有错误,怎么解决呢?我不觉得有错啊?
 
恩.....字段是中文的?
你试试把几个条件都加括号,比如ADOQuery1.SQL.Add(' and (电压 between ' + u1 + ' and ' + u2+')');
另外看看你那个电压字段类型是不是数值的....
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
680
import
I
I
回复
0
查看
486
import
I
I
回复
0
查看
639
import
I
后退
顶部