?? child_lab.pas
字號:
unit child_lab;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, DBTables, DBCtrls, ExtCtrls, Db, StdCtrls, Mask, Buttons,
Grids, DBGrids;
type
Tfrm_YQ_Lab = class(TForm)
Table1: TTable;
Table1StringField: TStringField;
Table1StringField2: TStringField;
Table1StringField3: TStringField;
Table1DateField: TDateField;
Table1CurrencyField: TCurrencyField;
Table1StringField4: TStringField;
Table1StringField5: TStringField;
Table1SmallintField: TSmallintField;
Table1SmallintField2: TSmallintField;
Table1StringField6: TStringField;
DataSource1: TDataSource;
DataSource2: TDataSource;
Table2: TTable;
Query1: TQuery;
Table3: TTable;
Panel1: TPanel;
DBNavigator: TDBNavigator;
DataSource3: TDataSource;
Panel3: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Label10: TLabel;
Label9: TLabel;
Label8: TLabel;
Label7: TLabel;
Label6: TLabel;
Label5: TLabel;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label3: TLabel;
EditDBEdit10: TDBEdit;
EditDBEdit5: TDBEdit;
EditDBEdit7: TDBEdit;
EditDBEdit8: TDBEdit;
EditDBEdit9: TDBEdit;
EditDBEdit: TDBEdit;
EditDBEdit2: TDBEdit;
EditDBEdit3: TDBEdit;
EditDBEdit4: TDBEdit;
DBEdit2: TDBEdit;
DBComboBox1: TDBComboBox;
DBEdit1: TDBEdit;
DBComboBox2: TDBComboBox;
TabSheet2: TTabSheet;
DBGrid1: TDBGrid;
Panel2: TPanel;
Label22: TLabel;
Label21: TLabel;
Label20: TLabel;
Label23: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Label11: TLabel;
Label12: TLabel;
Edit_No: TEdit;
Edit_name: TEdit;
Edit_date: TEdit;
Edit_address: TEdit;
RadioGroup1: TRadioGroup;
ComboBox1: TComboBox;
Edit_experi: TEdit;
TabSheet3: TTabSheet;
SpeedButton3: TSpeedButton;
RadioGroup2: TRadioGroup;
RadioGroup3: TRadioGroup;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure PageControl1Change(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure FormActivate(Sender: TObject);
private
procedure AllRec;
{ Private declarations }
public
{ Public declarations }
end;
var
frm_YQ_Lab: Tfrm_YQ_Lab;
implementation
uses Main, prt_lab;
{$R *.DFM}
procedure Tfrm_YQ_Lab.AllRec;
{利用SQL指令在程序運行期間動態添加表中所有記錄到TQuery數據集中}
begin
with Query1 do
begin
SQL.Clear;
SQL.Add('SELECT * FROM "Lab.db"');
Prepare;
ExecSQL;
Open;
end;
end;
procedure Tfrm_YQ_Lab.FormCreate(Sender: TObject);
begin
Height:=Constraints.MinHeight;
Width:=Constraints.MinWidth;
Panel1.Align:=alTop;
Panel3.Align:=alClient;
PageControl1.Align:=alClient;
PageControl1.ActivePageIndex:=0;
DBGrid1.Align:=alClient;
{在窗體創建的過程中,為TTable和TQuery組件動態設置
DatabaseName和TableName屬性}
Table1.DatabaseName:=MainForm.GetExePath+'mdb';
Table1.TableName:='Lab.DB';
Table2.DatabaseName:=MainForm.GetExePath+'mdb';
Table2.TableName:='type.DB';
Table3.DatabaseName:=MainForm.GetExePath+'mdb';
Table3.TableName:='experi.DB';
Query1.DatabaseName:=MainForm.GetExePath+'mdb';
AllRec;
{打開數據庫表}
table1.Open;
table2.Open;
table3.Open;
end;
procedure Tfrm_YQ_Lab.FormClose(Sender: TObject; var Action: TCloseAction);
begin
{在窗口關閉時,關閉所有數據庫表}
table1.Close;
table2.Close;
table3.Close;
with Mainform do
begin
StatusBar.Panels[1].Text:='儀器庫已關閉';
if MDIChildCount=1 then
StatusBar.Panels[1].Text:='';
end;
Action := caFree;
end;
procedure Tfrm_YQ_Lab.PageControl1Change(Sender: TObject);
begin
{根據用戶選擇的不同的標簽頁,為DataSource1數據源設置不同
的DataSet數據集屬性}
case PageControl1.ActivePageIndex of
0:begin
DataSource1.DataSet:=Table1;
Table1.Open;
end;
1:begin
DataSource1.DataSet:=Query1;
// AllRec;
end;
end;
end;
procedure Tfrm_YQ_Lab.SpeedButton2Click(Sender: TObject);
begin
AllRec;
end;
procedure Tfrm_YQ_Lab.SpeedButton1Click(Sender: TObject);
{該過程用于根據用戶的選擇或輸入,在數據庫表中查找符合條件的記錄}
var
SQLStr,SQLAll,Log:String;
SQLTemp:Pchar;
arrstr:array[1..7]of String;
i,l:integer;
function getsth(CurrEdit:TEdit):boolean;
{該函數用于取得用戶的輸入值}
begin
result:=false;
if CurrEdit.Text<>'' then
result:=true;
end;
begin
SQLAll:='';
SQLStr:='SELECT * FROM "Lab.db" WHERE ';
if RadioGroup1.ItemIndex=1 then Log:='OR' else Log:='AND';
if Getsth(Edit_name) then
arrstr[1]:='(儀器名稱='''+Edit_name.Text+''')';
arrstr[2]:=ComboBox1.text;
if arrstr[2]<>'' then
arrstr[2]:='(狀況='''+arrstr[2]+''')';
if Getsth(Edit_No) then
arrstr[3]:='(型號='''+Edit_No.Text+''')';
if Getsth(Edit_date) then
arrstr[4]:='(啟用日期='''+Edit_date.Text+''')';
if GetSth(Edit_address) then
arrstr[5]:='(放置位置='''+Edit_address.Text+''')';
if GetSth(Edit_experi) then
arrstr[6]:='(所屬實驗='''+Edit_experi.Text+''')';
arrstr[7]:='';
for i:=1 to 6 do
begin
arrstr[7]:=arrstr[7]+arrstr[i];
if arrstr[i]<>'' then
SQLAll:=SQLAll+Log+arrstr[i];
end;
if arrstr[7]='' then
begin
showmessage('沒有查詢項目?');
exit;
end;
l:=strlen(Pchar(SQLAll));
GetMem(SQLTemp,l);
SQLTemp^ := Chr(0);
if SQLAll[1]='O' then
StrCat(SQLTemp,Pchar(SQLAll)+2);
if SQLAll[1]='A' then
StrCat(SQLTemp,Pchar(SQLAll)+3);
SQLStr:=SQLStr+SQLTemp+' ORDER BY 儀器名稱,型號,啟用日期,狀況,放置位置,所屬實驗';
FreeMem(SQLTemp);
// Application.MessageBox(Pchar(SQLStr),'預查詢的SQL語句',MB_OK);
with Query1 do
begin
SQL.Clear;
SQL.Add(SQLStr);
Prepare;
ExecSQL;
Open;
end;
end;
procedure Tfrm_YQ_Lab.SpeedButton3Click(Sender: TObject);
begin
Application.CreateForm(Tfrm_prt_Lab, frm_prt_Lab);
Case RadioGroup2.ItemIndex of
0:begin
DataSource1.DataSet:=Table1;
frm_Prt_Lab.QuickRep1.DataSet:=Table1;
end;
1:begin
ShowMessage('*_^ 沒編完……');
exit;
end;
end;
frm_Prt_Lab.QuickRep1.Preview;
frm_Prt_Lab.Close;
end;
procedure Tfrm_YQ_Lab.DataSource1DataChange(Sender: TObject;
Field: TField);
begin
FormActivate(Sender);
end;
procedure Tfrm_YQ_Lab.FormActivate(Sender: TObject);
begin
MainForm.StatusBar.Panels[1].Text:='儀器庫紀錄導航信息:第'+inttostr(DataSource1.DataSet.RecNo)+'筆紀錄-總共'+inttostr(DataSource1.DataSet.RecordCount)+'筆紀錄';
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -