关于一个多种方法的查询 ( 积分: 10 )

  • 主题发起人 主题发起人 fuxin198311
  • 开始时间 开始时间
F

fuxin198311

Unregistered / Unconfirmed
GUEST, unregistred user!
例有一张表
学号 姓名 性别
20032712 张三 男
20032714 张红 女
现在我在combobox中有查找选项是 学号 及姓名 但是我想这只能精确查找 但是我想查看全部的就不行了 但是不可能在combobox中加全部呀 因为表中无这个字段 求各位帮下小弟了怎么办呢 我的代码是这样的
procedure TFYDJGL.FormCreate(Sender: TObject);
var i:integer;
begin
list1:=tstringlist.Create ;
list2:=tstringlist.Create ;
list1.Add('xh');
list2.Add('学号');
list1.Add('xm');
list2.Add('姓名');
for i:=0 to list1.count-1 do
combobox1.Items.Add(list2.Strings);
if ComboBox1.Items.Count=0 then exit;
ComboBox1.ItemIndex:=0;
end;
查找按钮的事件代码
procedure TT1010AForm.SpeedButton1Click(Sender: TObject);
var k:integer;
begin
if (trim(edit1.Text)='') or (combobox1.ItemIndex=-1) then
begin
showmessage('请输入查询值!');
exit;
end;
try
k:=combobox1.ItemIndex ;
with adoquery1 do
begin
close;
sql.Clear ;

sql.add('select * from T1010 where '+list1.strings[k]+'='''+edit1.Text+'''');
open ;
active:=true;
if adoquery1.RecordCount=0 then
showmessage('没有这个数值!');
end;

except
showmessage('查询失败!');
end;
end;
 
你那全部是什么意思?
只按学号查,只按姓名查,只按性别查?
 
就是不按了什么查了 所有的都显示出来
 
不用这么复杂吧,用where 1=1 and 再去判断条件是否加到后面去就可以了
 
我是想在combobox组件中也显示全部 当选取全部时 Edit组件不可用 直接点查找则显示所有的
 
function WhereClause_Get: string
begin
if Combo.Text = '全部' then
begin
Result := '';
end else
begin
Result := Format(' where %S = ''%S''', [list1.strings[Combo.ItemIndex], Edt.Text]);
end;
end;

procedure TFYDJGL.FormCreate(Sender: TObject);
var i:integer;
begin
list1:=tstringlist.Create ;
list2:=tstringlist.Create ;
list1.Add('xh');
list2.Add('学号');
list1.Add('xm');
list2.Add('姓名');
list2.add('全部');
for i:=0 to list1.count-1 do
combobox1.Items.Add(list2.Strings);
if ComboBox1.Items.Count=0 then exit;
ComboBox1.ItemIndex:=0;
end;

procedure TT1010AForm.SpeedButton1Click(Sender: TObject);
begin
...
//sql.add('select * from T1010 where '+list1.strings[k]+'='''+edit1.Text+'''');//改成如下
sql.add('select * from T1010'+ WhereClause_Get;
...
end;
 
function WhereClause_Get: string
begin
if Combo.Text = '全部' then
begin
Result := '';
end else
begin
Result := Format(' where %S = ''%S''', [list1.strings[Combo.ItemIndex], Edt.Text]);
end;
end;

procedure TFYDJGL.FormCreate(Sender: TObject);
var i:integer;
begin
list1:=tstringlist.Create ;
list2:=tstringlist.Create ;
list1.Add('xh');
list2.Add('学号');
list1.Add('xm');
list2.Add('姓名');
list2.add('全部');
for i:=0 to list1.count-1 do
combobox1.Items.Add(list2.Strings);
if ComboBox1.Items.Count=0 then exit;
ComboBox1.ItemIndex:=0;
end;

procedure TT1010AForm.SpeedButton1Click(Sender: TObject);
begin
...
//sql.add('select * from T1010 where '+list1.strings[k]+'='''+edit1.Text+'''');//改成如下
sql.add('select * from T1010'+ WhereClause_Get;
...
end;
 
后退
顶部