📄 constunt.~pas
字号:
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 + -