Delphi其他查询
其他查询
1.多表合并查询
在对多表进行合并查询时,各表间必须有一个字段信息完全相同以建立联系,在查询时为各表建立别名,如果要显示某表的字段信息,必须在字段的前面加上“相对应的表名.”。在对多表进行合并查询时,用逻辑运算符AND连接查询条件。
下面对“tb_Mark”表进行查询,并将查询结果与“tb_Stu”表的相应信息合并成一个新表显示出来。
操作步骤如下:
(1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TComboBox和TDBGrid等组件。
(2)主要程序代码如下:
with ADOQuery1 do
begin
close;
SQL.Clear;
if ComboBox1.Text='学生编号' then
SQL.Add('select b.学生编号,b.学生姓名,b.家庭住址,a.高数,a.外语 from tb_Mark a,tb_Stu b where a.学生编号=b.学生编号 and '+'a.'+ComboBox1.Text+ComboBox2.Text+Edit1.Text)
else
SQL.Add('select b.学生编号,b.学生姓名,b.家庭住址,a.高数,a.外语 from tb_Mark a,tb_Stu b where a.学生编号=b.学生编号 and '+'a.'+ComboBox1.Text+ComboBox2.Text+''''+Edit1.Text+'''');
open;
end;
2.NOT与谓词进行组合条件的查询
逻辑运算符NOT是对查询条件进行反向查询,必须在对其查询条件完成后,再用NOT对查询信息进行反向显示,通常用括号将查询条件括起来,然后在前面加上逻辑运算符NOT。
下面用逻辑运算符NOT对数据进行查询。
操作步骤如下:
(1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TComboBox和TDBGrid等组件。
(2)主要程序代码如下:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('select * from MR_Student where not ('+ComboBox1.Text+'<='+inttostr(strtoint(Trim(edit1.Text))-1)+')');
open;
end;
end;
3.复杂查询
复杂查询是利用逻辑运算符(NOT、AND、OR)将多种查询方试相结合的方法查询,这种查询方试可以缩小查询数据的范围,提高查询效率。在使用这类查询时,应注意逻辑运算符的优先级。它们的优先顺序从高到低分别为NOT、AND、OR。
下面用逻辑运算符AND将多个条件连接在一起对多表数据进行查询。
操作步骤如下:
(1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TDataSource、Tbutton、TComboBox和TDBGrid等组件。
(2)主要程序代码如下:
with ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('select b.学生编号,b.学生姓名,b.性别,b.家庭住址,a.高数,a.外语,a.计算机文化基础,a.马经,a.数据库管理,a.数据结构,a.软件工程 from tb_Mark a,tb_Stu b where (a.学生编号=b.学生编号) and ('+'a.'+ComboBox1.Text+ComboBox2. Text+Edit1.Text+')and(b.出生年月 BETWEEN '+QuotedStr(DatetoStr(DateTimePicker1.Date))+' and '+ QuotedStr(DatetoStr (DateTimePicker2.Date))+')'+Str );
showmessage(SQL.Text);
open;
end;