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

📄 constunt.~pas

📁 适合新手 绝对精品 仓库管理系统 本人花钱购买来的源代
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit ConstUnt;

interface

uses
  Db, ADODB, Sysutils, Classes, Forms, IniFiles, Windows;

type

  TFieldSq = 1..18;

  TLogonInf = class
    private
      //用于连接数据库jbda的数据库连接组件
      FdbJbda: TADOConnection;
      //用于连接数据库ckgl的数据库连接组件
      FdbCkgl: TADOConnection;
      //用于记录是否登陆成功
      FLogoned: Boolean;
      //用于记录登陆用户名
      FUserName: ShortString;
      //用于记录登陆用户的密码
      FPassWord: ShortString;
      //用于记录当前数据库中的表索引
      FTabNameIndex: Integer;
      //用于记录当前数据库中表的字段索引
      FFieldNameIndex: Integer;
      //用于记录当前的操作类型
      FOpratorIndex: Integer;
      FLinkIndex: Integer;
      //用于记录新密码
      FNewPassWord: ShortString;
      FFunctionLst: TStringList;
      FFieldTypeLst: TStringList;



    private
      function DBConnection: Boolean;
      function GetWorkPath: ShortString;
      function GetAllUser: TStringList;
      function GetPWDCorrect: Boolean;
      function GetGhsLst: TStringList;
      function GetJldwLst: TStringList;
      function GetCklbLst: TStringList;
      function GetHwlbLst: TStringList;
      function GetPpcdLst: TStringList;
      function GetKhmcLst: TStringList;
      function GetShrmLst: TStringList;
      function GetHwggLst: TStringList;
      function GetYsfsLst: TStringList;
      function GetShdzLst: TStringList;
      function GetJhrmLst: TStringList;
      function GetTabEnNameLst: TStringList;
      function GetTabCnNameLst: TStringList;
      function GetFieldCnNameLst: TStringList;
      function GetOpratorCnLst: TStringList;

      function GetLinkCnLst: TStringList;
      function GetAllRecord(const TabName, FieldName: ShortString)
        : TStringList;
      function GetCnFieldName(const EnFieldName: ShortString)
        : ShortString;
      function GetChangePwd: Boolean;

      procedure SetLogoned(Value: Boolean);
      procedure SetUserName(Value: ShortString);
      procedure SetPassWord(Value: ShortString);
      procedure SetTabNameIndex(Value: Integer);
      procedure SetFieldNameIndex(Value: Integer);
      procedure SetOpratorIndex(Value: Integer);
      procedure SetLinkIndex(Value: Integer);
      procedure SetNewPassWord(Value: ShortString);

    protected
      constructor Create; virtual;

    public
      destructor Destroy; override;

    published
      //存储应用程序的安装路径
      property WorkPath: ShortString read GetWorkPath;
      property Logoned: Boolean read FLogoned write SetLogoned;
      property dbJbda: TADOConnection read FdbJbda;
      property dbCkgl: TADOConnection read FdbCkgl;
      property DBTryConnection: Boolean read DBConnection;
      property AllUser: TStringList read GetAllUser;
      //登陆用户名称
      property UserName: ShortString read FUserName write SetUserName;
      //登陆用户密码
      property PassWord: ShortString read FPassWord write SetPassWord;
      property PWDCorrect: Boolean read GetPWDCorrect;
      //供货商列表
      property GhsLst: TStringList read GetGhsLst;
      //计量单位列表
      property JldwLst: TStringList read GetJldwLst;
      property CklbLst: TStringList read GetCklbLst;
      property HwlbLst: TStringList read GetHwlbLst;
      property PpcdLst: TStringList read GetPpcdLst;
      property KhmcLst: TStringList read GetKhmcLst;
      property ShrmLst: TStringList read GetShrmLst;
      property HwggLst: TStringList read GetHwggLst;
      property YsfsLst: TStringList read GetYsfsLst;
      property ShdzLst: TStringList read GetShdzLst;
      property JhrmLst: TStringList read GetJhrmLst;
      property TabEnNameLst: TStringList read GetTabEnNameLst;
      property TabCnNameLst: TStringList read GetTabCnNameLst;
      property CnOpratorLst: TStringList read GetOpratorCnLst;
      property CnLinkLst: TStringList read GetLinkCnLst;
      property TabNameIndex: Integer read FTabNameIndex write
        SetTabNameIndex;
      property FieldNameIndex: Integer read FFieldNameIndex write
        SetFieldNameIndex;
      property OpratorIndex: Integer read FOpratorIndex write
        SetOpratorIndex;
      property LinkIndex: Integer read FLinkIndex write SetLinkIndex;
      //表中字段名称列表
      property FieldNameLst: TStringList read GetFieldCnNameLst;
      //表中字段类型列表
      property FieldTypeLst: TStringList read FFieldTypeLst;
      property ChangePwd: Boolean read GetChangePwd;
      property NewPassWord: ShortString write SetNewPassWord;
      property FunctionLst: TStringList read FFunctionLst;

    public
      function GetNextPzh(const TabName, VDate: ShortString)
        : ShortString;
      function UpdateLog(const Content: string): Boolean;
      //设置新记录默写字段的值
      function UpdateKc(const Ck, Hwlb, Hwgg, Hwdw, Hwcd: string;
        const Hwsl, Dj: Double): Boolean;
       //仓库盘点
      procedure Ckpd(const PdBeginTime, PdEndTime: string);
      //数据备份
      function Sjbf(const TargetDir: ShortString): Boolean;
      //数据恢复
      function Sjhf(const FileNames: TStringList): Boolean;
      //删除盘点数据
      procedure DeletePdData(const TableName: string);
      function GetEnFieldName(const CnFieldName: string): string;



  end;

(*
  - 字符串资源
*)
resourcestring

  AppTitle             = '仓库管理系统';
  DBConnectionString   = 'Provider=Microsoft.Jet.OLEDB.4.0;'
                         + 'Password="";Data Source=%s;'
                         + 'Persist Security Info=True';

  SaveError            = '保存数据中发生错误,请重试!';
  FTPFailMsg           = 'FTP站点连接不成功,请稍后重试!';
  AbnormityError       = '操作中异常出错,请重试!';
  UserNameIsEmptyError = '用户名为空,请重输!';
  NotExistsUser        = '用户名不存在,请重新输入!';
  PassWordError        = '输入%s密码不正确,请重试!';
  PassWordNotSame      = '两次密码输入不一致!';
  SendPrompt           = '确认将报告单报送[%s]吗?';
  GDateFormat          = 'YYYYMMDD';
  DateTimeFormat       = 'YYYY-MM-DD HH24:MI:SS';
  GSptStr              = '__^#$%@';
  NotFound             = '没有找到符合条件的!';
  NotExistPrt          = '打印模板文件%s不存在,请检查!';
  NotSaveInf           = '是否保存对"%s"内容的更改?';
  DBConnectFail        = '无法与数据库服务器连接,请查看%s!';
  ChnagePwdSuccess     = '%s的密码修改已经修改,请记住新密码!';
  UserNameIsEmpty      = '请选取用户再进行%s操作!';
  SelLocation          = '选取备份数据位置';
  SjbfComplete         = '数据备份完全无损完成!';
  SjhfComplete         = '数据恢复完全无损恢复!';
  ReLogon              = '您需要重新登陆系统吗?';
  CloseInf             = '你真的退出仓库管理系统吗?';
  NoFind               = '对不起,没有找到相关数据!';
  ErrCondition         = '请检查您所选取的条件!';


const
  MsgI     = '提示';
  MsgW     = '警告';
  MsgE     = '错误';
  MsgQ     = '询问';
  Msg1IBTN = MB_OK + MB_ICONINFORMATION;
  Msg1WBTN = MB_OK + MB_ICONWARNING;
  Msg2IBTN = MB_YESNO + MB_ICONINFORMATION;
  Msg2QBTN = MB_YESNO + MB_ICONQUESTION;
  Msg2WBTN = MB_YESNO + MB_ICONWARNING;
  Msg3QBTN = MB_YESNOCANCEL + MB_ICONQUESTION;
  Msg3WBTN = MB_YESNO + MB_ICONWARNING;

var
  LogonInf: TLogonInf;


function GetTableMaxValue(const DBConnection: TADOConnection;
  const TableName: ShortString; const FieldName: ShortString = 'bh')
    : Word;
const

  En_Oprator: array[0..5] of string =
   (
   '>',
   '<',
   '=',
   '>=',
   '<=',
   '<>'
   );

  Cn_Oprator: array[0..5] of string =
   (
   '大于',
   '小于',
   '等于',
   '大于等于',
   '小于等于',
   '不等于'

   );

  En_Link: array[0..2] of string =
   (
   '   ',
   'and',
   'or '
   );

  Cn_Link: array[0..2] of string =
   (
   '无',
   '与',
   '或'
   );


implementation

const
  CkEnTab: array[0..6] of string =
    (
    'rk', 'ck', 'tk', 'dk', 'gh', 'pd', 'jc'
    );
  CkCNTab: array[0..6] of string =
    (
    '入库', '出库', '退库', '调库', '归还', '盘点', '借出'
    );

  En_FieldName: array[0..47] of string =
    (
    'bh',
    'shr',
    'hplb',
    'cd',
    'gg',
    'jldw',
    'rkrq',
    'pzh',
    'ghs',
    'cfck',
    'rkdj',
    'rksl',
    'rkze',
    'mem',
    'czy',
    'ckrq',
    'khmz',
    'chck',
    'shdz',
    'yxfs',
    'ckdj',
    'cksl',
    'ckze',
    'tkrq',
    'ghbm',
    'tkdj',
    'tksl',
    'tkze',
    'dkrq',
    'dcck',
    'drck',
    'dkdj',
    'djsl',
    'dkze',
    'jcrq',
    'jhr',
    'jcck',
    'jcsl',
    'hhrq',
    'hhr',
    'ghck',
    'ghsl',
    'whsl',
    'pdrq',
    'pdck',
    'pky',
    'dj',
    'ze'
    );

  Cn_FieldName: array[0..47] of string =
    (
    '编号',
    '送货人',
    '货品类别',
    '品牌/产地',
    '规格',
    '计量单位',
    '入库日期',
    '凭证号',
    '供货商',
    '存放仓库',
    '入库单价',
    '入库数量',
    '入库总额',
    '备注',
    '操作员',
    '出库日期',
    '客户名称',
    '出货仓库',
    '收货地址',
    '运输方式',
    '出库单价',
    '出库数量',
    '出库总额',
    '退库日期',
    '供货部门',
    '退库单价',
    '退库数量',
    '退库总额',
    '调库日期',
    '调出仓库',
    '调入仓库',
    '调库单价',
    '调库数量',
    '调库总额',
    '借货日期',
    '借货人',
    '借出仓库',
    '借出数量',
    '还货日期',
    '还货人',
    '归还仓库',
    '归还数量',
    '未还数量',
    '盘点日期',
    '盘点仓库',
    '盘亏/赢',
    '单价',
    '总额'
    );

      
function GetTableMaxValue(const DBConnection: TADOConnection;
  const TableName: ShortString; const FieldName: ShortString = 'bh')
    : Word;
begin
  with TADOQuery.Create(nil) do
    try
      Connection := DBConnection;
      Close;
      SQL.Clear;
      SQL.Add('select max(%s) from %s');
      SQL.Text := Format(SQL.Text, [FieldName, TableName]);
      Open;
      Result := Fields[0].AsInteger + 1;
      Close;
    finally
      Free;
    end;    
end;

function TLogonInf.GetAllUser: TStringList;
begin
  Result := TStringList.Create;
  Result.Clear;
  //设置默认前缀TADOQuery
  with TADOQuery.Create(nil) do
    try
      //设置TADOQuery组件的Connection属性,连接到数据库jbda
      Connection := FdbJbda;
      //关闭查询
      Close;
      //清除sql语句
      SQL.Clear;
      //添加查询操作员名称的sql语句
      SQL.Add('select name from czy');
      //打开查询
      Open;
      while not Eof do
      begin
        //获得操作员名称
        Result.Add(Format('%s', [Fields[0].AsString]));
        //移到下一个操作员
        Next;
      end;
      //关闭查询
      Close;

    finally
      //出现异常错误,释放TADOQuery组件
      Free;
    end;
end;


function TLogonInf.DBConnection: Boolean;
begin
  Result := True;
  with TIniFile.Create(WorkPath + 'infor.ini') do
    try
      try
        //建立名为FdbJbda的TADOConnection组件
        FdbJbda := TADOConnection.Create(nil);
        //建立名为FdbCkgl的TADOConnection组件
        FdbCkgl := TADOConnection.Create(nil);
        //设置FdbJbda的数据库连接字符串
        FdbJbda.ConnectionString := Format(DBConnectionString,
          [workpath+'JBDA.MDB']);
        //设置FdbJbda的数据库连接字符串
        FdbCkgl.ConnectionString := Format(DBConnectionString,
          [workpath+'ckgl.mdb']);
        FdbJbda.LoginPrompt := False;
        FdbCkgl.LoginPrompt := False;
        //激活数据库连接
        FdbJbda.Connected := True;
        FdbCkgl.Connected := True;
      except
        //数据库连接出错,给出提示
        MessageBox(0, PChar(Format(DBConnectFail, ['本地库'])),
          MsgI, Msg1IBTN);
        FdbJbda.Free;
        FdbCkgl.Free;
        Result := False;
      end;
    finally
      //释放数据库连接
      Free;
    end;
end;

function TLogonInf.GetWorkPath: ShortString;
begin
  Result := ExtractFilePath(Application.ExeName);
end;

procedure TLogonInf.SetLogoned(Value: Boolean);
begin
  FLogoned := Value;
end;

constructor TLogonInf.Create;
begin
end;

destructor TLogonInf.Destroy;
begin
  FdbJbda.Connected := False;
  FdbCkgl.Connected := False;
  FdbJbda.Free;
  FdbCkgl.Free;
end;


procedure TLogonInf.SetUserName(Value: ShortString);
begin
  FUserName := Value;
end;

procedure TLogonInf.SetPassWord(Value: ShortString);
begin
  FPassWord := Value;
end;

function TLogonInf.GetPWDCorrect: Boolean;
var
  I: Byte;
  FieldSqStr,teststr: string;
begin
  //设置用户权限字符串
  for I := Low(TFieldSq) to High(TFieldSq) do
    FieldSqStr := FieldSqStr + '[' + IntToStr(I) + '], ';
  //统一字符串长度
  FieldSqStr := Copy(FieldSqStr, 1, Length(FieldSqStr) - 2);
  //设置默认前缀
  with TADOQuery.Create(nil) do
    try
      Connection := FdbJbda;
      Close;
      //清除sql语句
      SQL.Clear;
      //添加搜索登陆用名名称信息资料的sql语句
      SQL.Add('select name, mm, %s from czy where name = '''
        + FUserName + #39);
      SQL.Text := Format(SQL.Text, [FieldSqStr]);
      //激活查询
      Open;
      //获得登陆用户密码
      Result := Fields[1].AsString = FPassWord;
      if Result then
      //用户输入的密码正确,设置用户权限字符串
      begin
        //建立用户权限字符串
        FFunctionLst := TStringList.Create;
        //清空用户权限字符串
        FFunctionLst.Clear;
        //设置用户权限字符串
        for I := 2 to FieldCount - 1 do  begin
          teststr:=Fields [i].AsString ;
          FFunctionLst.Add(Fields[I].AsString);
          end;
      end;
      //关闭查询
      Close;
    finally
      Free;
    end;
end;

function TLogonInf.GetGhsLst: TStringList;
begin
  Result := GetAllRecord('ghs', 'ghsname');
end;

function TLogonInf.GetJldwLst: TStringList;
begin
  Result := GetAllRecord('jldw', 'jldw');
end;

function TLogonInf.GetCklbLst: TStringList;
begin
  Result := GetAllRecord('cklb', 'cklb');
end;

function TLogonInf.GetHwlbLst: TStringList;
begin
  Result := GetAllRecord('hwlb', 'hwlb');
end;

function TLogonInf.GetPpcdLst: TStringList;
begin
  Result := GetAllRecord('ghs', 'dz');
end;

function TLogonInf.GetKhmcLst: TStringList;
begin
  Result := GetAllRecord('kh', 'khname');
end;

function TLogonInf.GetShrmLst: TStringList;
begin
  Result := TStringList.Create;

  with TADOQuery.Create(nil) do
    try

      Connection := FdbCkgl;
      Prepared;
      Close;
      SQL.Clear;
      SQL.Add('select shr from rk group by shr');
      Open;
      while not Eof do

⌨️ 快捷键说明

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