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

📄 login.pas

📁 一. 目的: 编写出 研发部业绩分配计算系统. 二. 功能: 包括 1.人员档案 2.基本数据录入(本季度总抽层,小产品非订制业绩,小产品订制业绩,ERP非订制业绩,ERP订制业绩) 3.
💻 PAS
字号:
{ **************************************************************}
{ login unit                                                    }
{ 实现系统数据库的动成连接,实现系统的登录,三次错误后就自动退出}
{ **************************************************************}
unit login;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, Buttons,inifiles,ADODB,ComObj,adoconed,
  ExtCtrls, WinSkinData;

type
  TFom_login = class(TForm)
    GroupBox2: TGroupBox;
    Label2: TLabel;
    Bbt_cancle: TBitBtn;
    Edt_pas: TEdit;
    Dcb_name: TDBComboBox;
    Label1: TLabel;
    bbt_check: TBitBtn;
    BitBtn1: TBitBtn;
    Image1: TImage;
    BitBtn2: TBitBtn;
    ADOCommand: TADOCommand;
    procedure FormCreate(Sender: TObject);
    procedure bbt_checkClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Bbt_cancleClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Fom_login: TFom_login;
  Logintimes:integer=0;
implementation

uses data, main, share;

{$R *.dfm}

procedure TFom_login.FormCreate(Sender: TObject);
begin

end;
//实现系统登录
procedure TFom_login.bbt_checkClick(Sender: TObject);
var
  Password:String;
begin
  DLYH_Q:=TADOQuery.Create(nil);
  DLYH_Q.Connection:=dm.Connection;
  DLYH_Q.SQL.Clear;
  DLYH_Q.SQL.Add('select psw,username from login');
  DLYH_Q.SQL.Add('where username='+#39+Trim(Dcb_name.Text)+#39);
  DLYH_Q.Open;
  if DLYH_Q.RecordCount > 0 then
  begin
    Password:=DLYH_Q.FieldValues['psw'];
    if Edt_pas.Text=trim(Password) then
      begin
              fom_login.Visible:=false;
              fom_main.ShowModal;
      end
    else
      begin
        Logintimes:=Logintimes+1;
        if Logintimes < 3 then
          begin
            MessageBox(handle,pchar('密码第'+IntToStr(Logintimes)+'次错误,请重新输入!'),'密码错误',MB_OK OR MB_ICONERROR);
            Edt_pas.Text:='';
            Edt_pas.SetFocus;
          end
        else
          begin
            MessageBox(handle,'密码三次错误请关闭!','密码错误', MB_ICONERROR);
            application.Terminate;
          end;
      end;
  end;
  DLYH_Q.Close;
  FreeAndNil(DLYH_Q);
end;

procedure TFom_login.FormActivate(Sender: TObject);
var
   i:integer;
begin
//*****************************************************
//                   动态连接数据库
//****************************************************
  filename:=ExtractFilePath(paramstr(0))+'dbconf.ini';
  myinifile:=Tinifile.Create(filename);
    dm.connection.Close;
    dm.connection.ConnectionString:=myinifile.ReadString('dbconf','connectstring','');
  try
    dm.connection.Open;
    dm.connection.Connected:=true;
    dm.ADQ_worker.Active:=true;
    dm.ADQ_departAchiv.Active:=true;
    dm.ADQ_login.Active:=true;
    dm.ADQ_personAchiv.Active:=true;
    dm.ADQ_VpersonAchiv.Active:=true;
    dm.ADQ_VdepartAchiv.Active:=true;
    dm.ADQ_job.Active:=true;
    dm.ADQ_department.Active:=true;
    dm.ADQ_dinzhi.Active:=true;
  except
    showmessage('连接错误,请重新连接')
  end;
  myinifile.Free;
//********初始化控件****************
  Edt_pas.SetFocus;
  dm.ADQ_login.Last;
  for i:=1 to dm.ADQ_login.RecordCount do
  begin
    Dcb_name.Items.Add(dm.ADQ_login.fieldbyname('userName').AsString);
    dm.ADQ_login.Prior;
  end;
end;

procedure TFom_login.Bbt_cancleClick(Sender: TObject);
begin
application.Terminate;
end;

procedure TFom_login.WMSysCommand(var Msg: TWMSysCommand);
begin
  if Msg.CmdType <> SC_CLOSE then  // 屏蔽 ALT+F4
  inherited;
end;
//*************************************************************
//                     把连接字符串写入ini文件
//*************************************************************
procedure TFom_login.BitBtn1Click(Sender: TObject);
var
 i:integer;
begin
  filename:=ExtractFilePath(paramstr(0))+'dbconf.ini';
  myinifile:=Tinifile.Create(filename);
  dm.connection.Close;
  EditConnectionString(dm.connection);
  myinifile.WriteString('dbconf','connectstring',dm.connection.ConnectionString);
  try
    dm.connection.Open;
    dm.connection.Connected:=true;
    showmessage('连接重建成功');
  except
    showmessage('连接失败,请再次连接');
  end;
    dm.connection.Connected:=true;
    dm.ADQ_worker.Active:=true;
    dm.ADQ_departAchiv.Active:=true;
    dm.ADQ_login.Active:=true;
    dm.ADQ_personAchiv.Active:=true;
    dm.ADQ_VpersonAchiv.Active:=true;
    dm.ADQ_VdepartAchiv.Active:=true;
    dm.ADQ_job.Active:=true;
    dm.ADQ_department.Active:=true;
    dm.ADQ_dinzhi.Active:=true;
  myinifile.Free;
//********初始化控件****************
  Edt_pas.SetFocus;
  dm.ADQ_login.Last;
  for i:=1 to dm.ADQ_login.RecordCount do
  begin
    Dcb_name.Items.Add(dm.ADQ_login.fieldbyname('userName').AsString);
    dm.ADQ_login.Prior;
  end;
end;

procedure TFom_login.BitBtn2Click(Sender: TObject);
var
  s:string;
begin
  s:='EXEC sp_attach_db @dbname = N'+char(39)+'yjgl1'+char(39)+','+
        '@filename1 = N'+char(39)+ExtractFilePath(paramstr(0))+'data\yjgl1_Data.MDF'+char(39)+
          ','+'@filename2 = N'+char(39)+ExtractFilePath(paramstr(0))+'data\yjgl1_Log.LDF'+char(39);
  ADOCommand.CommandText := s;
  ADOCommand.Execute();
  Messagebox(handle,'数据库安装成功!','提醒',MB_OK+MB_ICONINFORMATION);
end;

end.

⌨️ 快捷键说明

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