⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 child_lab.pas

📁 一个做得很好地实验室仪器管理系统源代码!相信大家用得上
💻 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;
    Table1_YQBH: TStringField;
    Table1StringField2: TStringField;
    Table1StringField3: TStringField;
    Table1DateField: TDateField;
    Table1CurrencyField: TCurrencyField;
    Table1StringField4: TStringField;
    Table1StringField5: TStringField;
    Table1SmallintField: TSmallintField;
    Table1SmallintField2: TSmallintField;
    Table1StringField6: TStringField;
    DataSource1: TDataSource;
    Table2: TTable;
    Query1: TQuery;
    Table3: TTable;
    Panel1: TPanel;
    DBNavigator: TDBNavigator;
    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;
    Table4: TTable;
    DBCheckBox1: TDBCheckBox;
    Table2BDEDesigner: TSmallintField;
    Table2BDEDesigner2: TStringField;
    Table3BDEDesigner: TSmallintField;
    Table3BDEDesigner2: TStringField;
    Table4BDEDesigner: TFloatField;
    Table4_UserName: TStringField;
    Table4_YQBH: TStringField;
    Table4BDEDesigner4: TStringField;
    Table4BDEDesigner5: TStringField;
    Table4_GHRQ: TStringField;
    Table4BDEDesigner7: TStringField;
    Table4BDEDesigner8: TStringField;
    DataSource4: TDataSource;
    DataSource2: TDataSource;
    DataSource3: TDataSource;
    DBEdit3: TDBEdit;
    Label13: TLabel;
    Table1Field_OutUserName: TStringField;
    Table1Field_BeOut: TBooleanField;
    Query1_YQBH: TStringField;
    Query1BDEDesigner2: TStringField;
    Query1BDEDesigner3: TStringField;
    Query1BDEDesigner4: TDateField;
    Query1BDEDesigner5: TCurrencyField;
    Query1BDEDesigner6: TStringField;
    Query1BDEDesigner7: TStringField;
    Query1BDEDesigner8: TSmallintField;
    Query1BDEDesigner9: TSmallintField;
    Query1BDEDesigner10: TStringField;
    Query1Field_OutUserName: TStringField;
    Query1Field_BeOut: TStringField;
    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);
    procedure Table1CalcFields(DataSet: TDataSet);
    procedure Query1CalcFields(DataSet: TDataSet);
  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;
begin
  with Query1 do
  begin
    SQL.Clear;
    SQL.Add('SELECT * FROM "仪器库.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;
  Table1.DatabaseName:=MainForm.GetExePath+'mdb';
  Table1.TableName:='仪器库.db';
  Table2.DatabaseName:=MainForm.GetExePath+'mdb';
  Table2.TableName:='仪器类型代码库.db';
  Table3.DatabaseName:=MainForm.GetExePath+'mdb';
  Table3.TableName:='所属试验代码库.db';
  Table4.DatabaseName:=MainForm.GetExePath+'mdb';
  Table4.TableName:='仪器借出信息库.DB';
  table4.Open;
  Query1.DatabaseName:=MainForm.GetExePath+'mdb';
  AllRec;
  table1.Open;
  table2.Open;
  table3.Open;
end;

procedure Tfrm_YQ_Lab.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  table4.Close;
  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
  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 "仪器库.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;

procedure Tfrm_YQ_Lab.Table1CalcFields(DataSet: TDataSet);
begin
  Table1Field_BeOut.Value:=false;
  Table4.First;
  while not Table4.Eof do
    begin
    if (Table4_YQBH.Value=Table1_YQBH.Value)and(Table4_GHRQ.Value='') then
    begin
      Table1Field_BeOut.Value:=True;
      Table1Field_OutUserName.Value:=Table4_UserName.Value;
    end;
    Table4.Next;
  end;
end;

procedure Tfrm_YQ_Lab.Query1CalcFields(DataSet: TDataSet);
begin
  Query1Field_BeOut.Value:='否';
  Table4.First;
  while not Table4.Eof do
    begin
    if (Table4_YQBH.Value=Query1_YQBH.Value)and(Table4_GHRQ.Value='') then
    begin
      Query1Field_BeOut.AsString :='是';
      Query1Field_OutUserName.Value:=Table4_UserName.Value;
    end;
    Table4.Next;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -