数据查询(50分)

  • 主题发起人 主题发起人 visional
  • 开始时间 开始时间
V

visional

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)]我想实现可按照两个条件同时满足查询 和 只要任意一个条件满足就能查询.
代码如下,但有错误,请高手帮忙解决.
procedure Tfview1.BitBtn2Click(Sender: TObject);
var
cc1,cc2,cc3,cc4 : string;
nn,nn1:integer;
begin
cc1 := combobox2.Text;
cc3 := edit2.Text;
Table1.First;
While (Not Table1.EOF) do
Begin
if (combobox1.Text:= 'and')then
begin
cc2 := Table1.FieldByName('dq').asString;
cc4 := Table1.FieldByName('xm').asString;
nn := CompareText (cc1, cc2);
nn1 := CompareText (cc3, cc4);
if (nn = 0) and (nn1=0) Then Break;
Table1.Next;
end;

End ;
else
if (combobox1.Text:='or') then
begin
cc2 := Table1.FieldByName('dq').asString;
cc4 := Table1.FieldByName('xm').asString;
nn := CompareText (cc1, cc2);
nn1 := CompareText (cc3, cc4);
if (nn = 0) or (nn1=0) Then Break;
Table1.Next;
end;
If (Table1.EOF) Then ShowMessage ('没有找到该记录。')
Else ShowMessage ('记录找到。');
end;
 
if (combobox1.Text:= 'and')then//???combobox1.text='and'????
if (combobox1.Text:='or') then//:=是赋值的意思啊,=是比较啊
 
如果记录上万条你的程序就要死了。
为何不用SQL来查呢?
Query1.SQL.Add('SELECT * FROM T_Table ')
if Edit1.Text<>'' then
begin
if Edit2.Text<>'' then
Query1.SQL.Add('WHERE (XM='''+Edit1.Text+''')'+ComboBox1.Text+'(DQ='''+Edit2.Text+''')')
else
Query1.SQL.Add('WHERE (XM='''+Edit1.Text+''')');
end
else
begin
if Edit2.Text<>'' then
Query1.SQL.Add('WHERE (DQ='''+Edit2.Text+''')');
end;
end;
 
应该为:
Query1.SQL.Add('SELECT * FROM T_Table ')
if combobox1.itemindex=0 then
begin
if Edit2.Text<>''and edit1.text<>'' then
Query1.SQL.Add('WHERE (XM='''+Edit1.Text+''')'+ComboBox1.Text+'(DQ='''+Edit2.Text+''')')
else
Query1.SQL.Add('WHERE (XM='''+Edit1.Text+''')');
end
else
begin
if Edit2.Text<>'' then
Query1.SQL.Add('WHERE (DQ='''+Edit2.Text+''')');
end;
end;
 
后退
顶部