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

📄 initdbunit.pas

📁 学费管理系统,学校使用
💻 PAS
字号:
unit initDBUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxLookAndFeelPainters, StdCtrls, cxButtons, cxTextEdit,
  cxControls, cxContainer, cxEdit, cxLabel, ExtCtrls, DB, ADODB,registry;

const
  ChargeItem: array[1..6] of String = ('学费', '住宿', '书费', '保险', '生活用品', '保证金');
  Scholar:array [1..5] of String=('高职', '自考', '自开', '中专',  '五年一贯制');


type
  TInitDBform = class(TForm)
    Panel1: TPanel;
    cxLabel1: TcxLabel;
    cxLabel2: TcxLabel;
    cxLabel3: TcxLabel;
    cxLabel4: TcxLabel;
    cxButton1: TcxButton;
    cxButton2: TcxButton;
    pass_Edit: TEdit;
    dbname_edit: TEdit;
    servername_Edit: TEdit;
    account_edit: TEdit;
    ADOQuery1: TADOQuery;
    cxButton3: TcxButton;
    procedure cxButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure cxButton3Click(Sender: TObject);
  private
    { Private declarations }
  public

  end;



var
  InitDBform: TInitDBform;

implementation

uses DMUnit;

{$R *.dfm}

procedure TInitDBform.cxButton1Click(Sender: TObject);
var
  wpath:string;
  Registry: TRegistry;
  i:integer;
begin
  WPath := ExtractFilePath(Application.ExeName);
  if trim(servername_Edit.Text )='' then
  begin
    MessageBox(application.handle,pchar('服务器名称没有填写!'),'错误',MB_ICONWARNING+MB_OK);
    servername_Edit.SetFocus;
    exit;
  end;
  if trim(account_edit.Text )='' then
  begin
    MessageBox(application.handle,pchar('登录帐户没有填写!'),'错误',MB_ICONWARNING+MB_OK);
    account_edit.SetFocus ;
    exit;
  end;
  if trim(dbname_edit.Text )='' then
  begin
    MessageBox(application.handle,pchar('数据库名没有填写!'),'错误',MB_ICONWARNING+MB_OK);
    dbname_edit.SetFocus ;
    exit;
  end;
  dm.ADOConnection.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(pass_edit.Text )+';Persist Security Info=True;User ID='+trim(account_edit.Text )+';Data Source='+trim(servername_edit.Text );
  try
    dm.ADOConnection.Open;
  except
    MessageBox(application.handle,pchar('无法登录指定数据库,请检查登录信息'),'错误',MB_ICONWARNING+MB_OK);
    exit;
  end;
  with adoquery1 do
  begin
    close;
    sql.Clear;
    sql.Add('CREATE DATABASE ' +trim(dbname_edit.Text ));
    try
      ExecSQL ;
    except
      MessageBox(application.handle,pchar('无法创建数据库,请检查该数据库名称是否已存在!'),'错误',MB_ICONWARNING+MB_OK);
      dm.ADOConnection.Close;
      exit;
    end;
  end;

  with adoquery1 do
  begin
    dm.ADOConnection.BeginTrans ;
    try
      close;
      sql.Clear;
      sql.Add('use '+trim(dbname_edit.Text ));
      execsql;

      //创建数据库


      close;
      sql.Clear ;
      sql.Add('CREATE TABLE [dbo].[ChargeItem] (');
      sql.Add('[id] [int] IDENTITY (1, 1) NOT NULL ,');
      sql.Add('	[ChargeName] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL');
      sql.Add(') ON [PRIMARY]');
      ExecSQL ;







      close;
      sql.Clear ;
      sql.Add('CREATE TABLE [dbo].[Decrease] ([ID] [int] IDENTITY (1, 1) NOT NULL ,[StudentId] [bigint] NOT NULL ,');
      sql.Add('	[ChargeRangeId] [int] NOT NULL ,[StudyYear] [tinyint] NOT NULL ,[ChargeItemId] [int] NOT NULL ,[Quantum] [money] NOT NULL ,');
      sql.Add('	[Receive] [money] NOT NULL ,[DecreaseName] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,');
      sql.Add('	[DecreaseNum] [money] NOT NULL ,[DecreaseCode] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,');
      sql.Add('	[RegDate] [datetime] NOT NULL ,[Operator] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]');
      ExecSQL ;


      close;
      sql.Clear;
      sql.Add('CREATE TABLE [dbo].[Department] (');
      sql.Add(' [id] [int] IDENTITY (1, 1) NOT NULL ,');
      sql.Add('	[ScholarId] [int] NOT NULL ,');
      sql.Add('	[Department] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]');
      ExecSQL ;

      close;
      sql.Clear;
      sql.Add('CREATE TABLE [dbo].[EditReg] ([ID] [int] IDENTITY (1, 1) NOT NULL ,[StudentId] [bigint] NOT NULL ,');
      sql.Add('	[ChargeRangeId] [int] NOT NULL ,[StudyYear] [tinyint] NOT NULL ,[ChargeItemId] [int] NOT NULL ,[Quantum] [money] NOT NULL ,');
      sql.Add('	[Receive] [money] NOT NULL,[BillCode] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,');
      sql.Add('	[ReceType] [tinyint] NOT NULL ,[RegDate] [datetime] NOT NULL ,[Operator] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]');
      ExecSQL ;


      close;
      sql.Clear;
      sql.Add('CREATE TABLE [dbo].[FirstReg] ([ID] [int] IDENTITY (1, 1) NOT NULL ,[StudentID] [bigint] NOT NULL ,');
      sql.Add('	[ChargeRangeID] [int] NOT NULL ,[StudyYear] [tinyint] NOT NULL ,[ChargeItemId] [int] NOT NULL ,[Quantum] [money] NOT NULL ,');
      sql.Add('	[Fact] [money] NOT NULL ,[BillCode] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,[ReceType] [tinyint] NOT NULL ,');
      sql.Add('	[RegDate] [datetime] NOT NULL ,[Operator] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]');
      ExecSQL ;


      close;
      sql.Clear;
      sql.Add('CREATE TABLE [dbo].[Income] ([StudentID] [bigint] NOT NULL ,[ChargeRangeID] [int] NOT NULL ,');
      sql.Add('	[StudyYear] [tinyint] NOT NULL ,[ChargeItemId] [int] NOT NULL ,[Quantum] [money] NOT NULL ,');
      sql.Add('	[Fact] [money] NOT NULL ,[Derate] [money] NOT NULL ,[DerateName] [varchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,');
      sql.Add('	[ReturnNum] [money] NOT NULL ,[ReturnName] [varchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]');
      ExecSQL ;

      close;
      sql.Clear;
      sql.Add('CREATE TABLE [dbo].[ReturnDetail] ([Id] [int] IDENTITY (1, 1) NOT NULL ,[StudentId] [bigint] NOT NULL ,[ChargeRangeId] [int] NOT NULL ,');
      sql.Add('	[StudyYear] [tinyint] NOT NULL ,[ChargeItemId] [int] NOT NULL ,[Quantum] [money] NOT NULL ,');
      sql.Add('	[Receive] [money] NOT NULL ,[ReturnNum] [money] NOT NULL ,[ReturnName] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,');
      sql.Add('	[ReturnCode] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,[RegDate] [datetime] NOT NULL ,[Operator] [varchar] ( 10) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]');
      ExecSQL ;

      close;
      sql.Clear;
      sql.Add('CREATE TABLE [dbo].[Scholar] (');
      sql.Add('	[id] [int] IDENTITY (1, 1) NOT NULL ,');
      sql.Add('	[Scholar] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL');
      sql.Add(') ON [PRIMARY]');
      ExecSQL ;

      close;
      sql.Clear;
      sql.Add('CREATE TABLE [dbo].[Spec] (');
      sql.Add('	[id] [int] IDENTITY (1, 1) NOT NULL ,');
      sql.Add('	[ScholarId] [int] NOT NULL ,[DepartmentId] [int] NOT NULL ,');
      sql.Add('	[Spec] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]');
      ExecSQL ;

      close;
      sql.Clear;
      sql.Add('CREATE TABLE [dbo].[Student] (');
      sql.Add('	[id] [bigint] NOT NULL ,[ChargeYearID] [int] NOT NULL ,[StudentName] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,');
      sql.Add('	[Code] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,[Sex] [tinyint] NOT NULL ,[ScholarID] [int] NOT NULL ,');
      sql.Add('	[DepartmentID] [int] NOT NULL ,[SpecID] [int] NOT NULL ,[Length] [tinyint] NOT NULL ,[ClassCode] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,');
      sql.Add('	[Address] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,[Source] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,[Tutor] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,');
      sql.Add('  [Circs] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,');
      sql.Add('	[Memo] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,[RegDate] [datetime] NOT NULL ,[Operator] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]');
      ExecSQL ;





      close;
      sql.Clear;
      sql.Add('ALTER TABLE [dbo].[ChargeItem] WITH NOCHECK ADD');
      sql.Add('	CONSTRAINT [PK_ChargeItem] PRIMARY KEY  CLUSTERED');
      sql.Add('	([id])  ON [PRIMARY]');
      ExecSQL ;


      close;
      sql.Clear;
      sql.Add('ALTER TABLE [dbo].[Decrease] WITH NOCHECK ADD ');
      sql.Add('	CONSTRAINT [PK_Decrease] PRIMARY KEY  CLUSTERED ');
      sql.Add('	([ID])  ON [PRIMARY]');
      ExecSQL ;




      close;
      sql.Clear;
      sql.Add('ALTER TABLE [dbo].[Department] WITH NOCHECK ADD');
      sql.Add('	CONSTRAINT [PK_Department] PRIMARY KEY  CLUSTERED ');
      sql.Add('	([id])  ON [PRIMARY]');
      ExecSQL ;




      close;
      sql.Clear;
      sql.Add('ALTER TABLE [dbo].[EditReg] WITH NOCHECK ADD');
      sql.Add('	CONSTRAINT [PK_EditReg] PRIMARY KEY  CLUSTERED ');
      sql.Add('	([ID])  ON [PRIMARY]');
      ExecSQL ;
                             



      close;
      sql.Clear;
      sql.Add('ALTER TABLE [dbo].[FirstReg] WITH NOCHECK ADD');
      sql.Add('	CONSTRAINT [PK_FirstReg] PRIMARY KEY  CLUSTERED');
      sql.Add('	([ID])  ON [PRIMARY]');
      ExecSQL ;






      close;
      sql.Clear;
      sql.Add('ALTER TABLE [dbo].[Income] WITH NOCHECK ADD ');
      sql.Add('	CONSTRAINT [PK_Income] PRIMARY KEY  CLUSTERED');
      sql.Add('	([StudentID],[ChargeRangeID],');
      sql.Add('		[ChargeItemId])  ON [PRIMARY]');
      ExecSQL ;

      close;
      sql.Clear;
      sql.Add('ALTER TABLE [dbo].[ReturnDetail] WITH NOCHECK ADD');
      sql.Add('	CONSTRAINT [PK_ReturnDetail] PRIMARY KEY  CLUSTERED');
      sql.Add('	([Id])  ON [PRIMARY]');
      ExecSQL ;








      close;
      sql.Clear;
      sql.Add('ALTER TABLE [dbo].[Scholar] WITH NOCHECK ADD ');
      sql.Add('	CONSTRAINT [PK_Scholar] PRIMARY KEY  CLUSTERED ');
      sql.Add('	([id])  ON [PRIMARY]');
      ExecSQL ;





      close;
      sql.Clear;
      sql.Add('ALTER TABLE [dbo].[Spec] WITH NOCHECK ADD ');
      sql.Add('	CONSTRAINT [PK_Spec] PRIMARY KEY  CLUSTERED');
      sql.Add('	([id])  ON [PRIMARY]');
      ExecSQL ;



      close;
      sql.Clear;
      sql.Add('ALTER TABLE [dbo].[Student] WITH NOCHECK ADD ');
      sql.Add('	CONSTRAINT [PK_Student] PRIMARY KEY  CLUSTERED ');
      sql.Add('	([id])  ON [PRIMARY]');
      ExecSQL ;






















      //收费项目
      close;
      sql.Clear;
      sql.Add('insert into ChargeItem (ChargeName) values (:ChargeName)');
      if not Prepared then Prepared:=true;
      close;
      for i :=1  to 6 do
      begin
        close;
        Parameters.ParamByName('ChargeName').Value :=ChargeItem[i];
        ExecSQL ;
      end;
      if Prepared then Prepared:=false;


      //学历类型
      close;
      sql.Clear;
      sql.Add('insert into Scholar (Scholar) values (:Scholar)');
      if not Prepared then Prepared:=true;
      close;
      for i :=1  to 5 do
      begin
        close;
        Parameters.ParamByName('Scholar').Value :=Scholar[i];
        ExecSQL ;
      end;
      if Prepared then Prepared:=false;



      Registry := TRegistry.Create();
      try
        Registry.RootKey := HKEY_LOCAL_MACHINE;
        Registry.OpenKey('software\Manage', true);
        registry.WriteString('servername',trim(servername_Edit.Text ));
        registry.WriteString('accountname',trim(account_edit.Text ));
        registry.WriteString('passname',trim(pass_edit.Text ));
        registry.WriteString('dbname',trim(dbname_edit.Text ));
      finally
         freeandnil(registry);
      end;
      MessageBox(application.handle,pchar('数据库创建成功,请重新启动应用程序!'),'信息',MB_ICONWARNING+MB_OK);
      dm.ADOConnection.CommitTrans ;
    except
      dm.ADOConnection.RollbackTrans ;
      MessageBox(application.handle,pchar('无法创建数据表,请检查数据表是否已经存在!'),'错误',MB_ICONWARNING+MB_OK);
      dm.ADOConnection.Close;
      exit;
    end;
  end;
  ModalResult :=mrok;
end;

procedure TInitDBform.FormCreate(Sender: TObject);
var
  Registry: TRegistry;
  server,account,pass,db:String;
begin
  Registry := TRegistry.Create();
  try
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    if Registry.OpenKey('software\Manage', False) then
    begin
      server:=registry.ReadString('servername');
      account:=registry.ReadString('accountname');
      pass:=registry.ReadString('passname');
      db:=registry.ReadString('dbname');
      dm.ADOConnection .close;
      dm.ADOConnection.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+trim(account)+';Initial Catalog='+trim(db)+';Data Source='+trim(server)+';Password='+trim(pass);
    end
    else self.ShowModal;
  finally
    freeandnil(registry);
  end;



end;

procedure TInitDBform.cxButton3Click(Sender: TObject);
var
  wpath:string;
  Registry: TRegistry;

begin
  WPath := ExtractFilePath(Application.ExeName);
  if trim(servername_Edit.Text )='' then
  begin
    MessageBox(application.handle,pchar('服务器名称没有填写!'),'错误',MB_ICONWARNING+MB_OK);
    servername_Edit.SetFocus;
    exit;
  end;
  if trim(account_edit.Text )='' then
  begin
    MessageBox(application.handle,pchar('登录帐户没有填写!'),'错误',MB_ICONWARNING+MB_OK);
    account_edit.SetFocus ;
    exit;
  end;
  if trim(dbname_edit.Text )='' then
  begin
    MessageBox(application.handle,pchar('数据库名没有填写!'),'错误',MB_ICONWARNING+MB_OK);
    dbname_edit.SetFocus ;
    exit;
  end;
  dm.ADOConnection.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(pass_edit.Text )+';Persist Security Info=True;User ID='+trim(account_edit.Text )+';Data Source='+trim(servername_edit.Text )+';Initial Catalog='+trim(dbname_edit.Text );
  try
    dm.ADOConnection.Open;
  except
    MessageBox(application.handle,pchar('无法登录指定数据库,请检查登录信息'),'错误',MB_ICONWARNING+MB_OK);
    exit;
  end;
  Registry := TRegistry.Create();
  try
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    Registry.OpenKey('software\Manage', true);
    registry.WriteString('servername',trim(servername_Edit.Text ));
    registry.WriteString('accountname',trim(account_edit.Text ));
    registry.WriteString('passname',trim(pass_edit.Text ));
    registry.WriteString('dbname',trim(dbname_edit.Text ));
  finally
     freeandnil(registry);
  end;
  MessageBox(application.handle,pchar('数据库连接保存成功,请重新启动应用程序!'),'信息',MB_ICONINFORMATION+MB_OK);
  ModalResult :=mrok;

end;

end.

⌨️ 快捷键说明

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