?? unit1.pas
字號(hào):
unit unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, DBCtrls, CheckLst, Buttons,
ExtCtrls, Grids, DBGrids;
type
Tform1 = class(TForm)
DataSource1: TDataSource;
Query1: TQuery;
Panel1: TPanel;
ListBox1: TListBox;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
GroupBox2: TGroupBox;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
ListBox4: TListBox;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
Panel2: TPanel;
ListBox2: TListBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
ListBox3: TListBox;
BitBtn9: TBitBtn;
Label1: TLabel;
BitBtn10: TBitBtn;
ComboBox3: TComboBox;
Label2: TLabel;
BitBtn12: TBitBtn;
BitBtn11: TBitBtn;
DBGrid1: TDBGrid;
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn12Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
form1: Tform1;
s0,s,s1,s2:string;//條件變量
seltab:string;//選擇的表名
implementation
{$R *.DFM}
//字段選擇列表
procedure Tform1.FormActivate(Sender: TObject);
var i:integer;
begin
query1.DatabaseName:=ExtractFilePath(Application.ExeName);
seltab:=combobox3.text;
listbox1.Clear;
listbox2.Clear;
listbox3.Clear;
query1.close;
query1.sql.Clear;
query1.sql.Add('select * from '+seltab);
try
query1.Open;
except
showmessage('不能打開數(shù)據(jù)庫!');
exit;
end;
for i:=0 to query1.FieldCount-1 do
begin
listbox2.Items.add(query1.fields[i].displayname);
listbox1.Items.add(query1.fields[i].DisplayName);
query1.next;
end;
end;
//選擇要查詢的字段名
procedure Tform1.BitBtn1Click(Sender: TObject);
var i,p:integer;
begin
//為了保證“已選字段”的順,這里加入了一個(gè)參數(shù),確定增加的位置
p:=listbox3.Count;
for i:=ListBox2.Items.Count-1 downTo 0 do
if ListBox2.Selected[i] then
begin
ListBox3.Items.Insert(p,ListBox2.Items.Strings[i]);
listbox2.items.Delete(i);
end;
end;
//從“已選擇字段”中移動(dòng)字段
procedure Tform1.BitBtn2Click(Sender: TObject);
var i:integer;
begin
for i:=ListBox3.Items.Count-1 downTo 0 do
if listbox3.selected[i] then
begin
listbox2.items.insert(0,listbox3.items[i]);
listbox3.items.delete(i);
end;
end;
//選擇所有字段名
procedure Tform1.BitBtn3Click(Sender: TObject);
var i:integer;
begin
listbox3.Items.Clear;
for i:=0 to listbox2.items.count-1 do
begin
listbox3.Items.Add(listbox2.items[i]);
listbox2.Items.Delete(listbox2.itemindex);
end;
end;
//清除選擇字段
procedure Tform1.BitBtn4Click(Sender: TObject);
var i:integer;
begin
listbox3.Items.Clear;
listbox2.Items.clear;
query1.close;
query1.sql.clear;
query1.sql.add('select * from '+seltab);
query1.open;
for i:=0 to query1.FieldCount-1 do
begin
listbox2.items.add(query1.fields[i].DisplayName );
end;
end;
//生成查詢條件
procedure Tform1.BitBtn5Click(Sender: TObject);
var i:integer;
tj,lj:string;
begin
if groupbox2.Visible=false
then
groupbox2.visible:=true;
if radiobutton1.Checked then
tj:='='; //等于
if radiobutton2.Checked then
tj:='<>';//不等于
if radiobutton3.Checked then
tj:=' like ';//相似于
if listbox4.Items.text<>'' then
begin
if radiobutton5.Checked then
lj:=' and '
else
lj:=' or ';
end
else
lj:='';
if not radiobutton4.checked then
begin
if not radiobutton3.Checked then
begin
//選擇等于、不等于時(shí)生成條件
for i:=listbox1.items.count-1 downto 0 do
begin
if ListBox1.Selected[i] then
begin
listbox4.items.add(lj+listbox1.items[listbox1.itemindex]+tj+'"'+combobox1.text+'"');
end;
end;
end
else
//選擇相似于時(shí)生成條件
begin
for i:=listbox1.items.count-1 downto 0 do
begin
if ListBox1.Selected[i] then
begin
listbox4.items.add(lj+listbox1.items[listbox1.itemindex]+tj+'"'+combobox1.text+'%"');
end;
end
end;
end
else
//選擇圍范時(shí)生成的條件
for i:=listbox1.items.count-1 downto 0 do
begin
if ListBox1.Selected[i] then
begin
listbox4.items.add(lj+listbox1.items[listbox1.itemindex]+'>='+'"'+combobox1.text+'"'+' and '+listbox1.items[listbox1.itemindex]+'<='+'"'+combobox2.text+'"');
end;
end;
end;
//刪除生成的條件
procedure Tform1.BitBtn6Click(Sender: TObject);
var i:integer;
begin
for i:=listbox4.Items.Count - 1 downto 0 do
if listbox4.selected[i] then
begin
listbox4.items.delete(listbox4.itemindex);
end;
if listbox4.Items.text='' then
groupbox2.Visible:=false;
end;
//清空生成的條件
procedure Tform1.BitBtn7Click(Sender: TObject);
begin
listbox4.Items.Clear;
groupbox2.Visible:=false;
end;
//當(dāng)選擇”范圍“選項(xiàng)時(shí)
procedure Tform1.RadioButton4Click(Sender: TObject);
begin
if radiobutton4.Checked then
combobox2.Visible:=true
else
combobox2.Visible:=false;
end;
//執(zhí)行查詢操作
procedure Tform1.BitBtn8Click(Sender: TObject);
var i,j:integer;
sql,sql1,sql2:string;
begin
sql:='';
sql1:='';
sql2:='';
for i:=0 to listbox3.items.count-1 do
begin
sql1:=sql1+listbox3.items[i]+',';
end;
sql1:=copy(sql1,0,length(sql1)-1);
for i:=0 to listbox4.Items.count-1 do
begin
sql2:=sql2+listbox4.Items[i];
end;
query1.close;
query1.sql.clear;
if listbox3.Items.count=0 then
sql1:='*';
if listbox4.items.count=0 then
sql:='select '+sql1+' from '+seltab
else
sql:='select '+sql1+' from '+seltab+' where '+sql2;
query1.sql.add(sql);
query1.open;
//向DBGrid輸出查詢結(jié)果,沒有選擇的字段不顯示出來
if listbox3.items.Count<>0 then
begin
for j:=0 to dbgrid1.Columns.Count-1 do
begin
dbgrid1.Columns[j].Visible:=false;
end;
for i:=0 to listbox3.Items.Count-1 do
for j:=0 to dbgrid1.Columns.Count-1 do
begin
if trim(dbgrid1.Columns[j].FieldName)=trim(listbox3.Items[i]) then
dbgrid1.Columns[j].Visible:=true
end;
end
else
begin
for j:=0 to dbgrid1.Columns.Count-1 do
begin
dbgrid1.Columns[j].Visible:=true;
end;
end;
label1.caption:='查詢結(jié)果:'+inttostr(query1.recordcount);
end;
//選擇不同的數(shù)據(jù)表
procedure Tform1.BitBtn12Click(Sender: TObject);
begin
if combobox3.text<>'' then
begin
seltab:=combobox3.text;
form1.FormActivate(sender);
end
else
showmessage('請(qǐng)選擇數(shù)據(jù)庫!');
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -