📄 globalunit.~pas
字号:
unit GlobalUnit;
interface
uses
Sysutils,Db, ADODB,
PlmsDM,
ErrorRecordUnit,
SysConfigClass,
Classes,
ScreenClass,
winsock,
ControlClass;//控制器组
var
gEmployeeId: integer;
gPrivilege: integer;
gEmployeeName,gAccount,gPassWord: string;
gIsConnect: boolean;
gLoginTime: TDateTime;
gStationId: integer;
gErrorRecord: TErrorRecord;
gConfig : TSysConfig;
gControl: TControlMachine;
//connect to access
function ConnectLocal(): integer;
//connect to sql server
function ConnectRemote(): integer;
//得到连接字符串
function GetLocalStr(): String;
function GetRemoteStr(): string;
function GetLocalConnection(): TADOConnection;
function GetRemoteConnection(): TADOConnection;
//获取当前时间
//--取服务器时间,不成功则返回本地时间
function GetNow(): TDateTime;
//获取系统时间
function GetSystemTime(): TDateTime;
//得到远程服务器时间
function GetRemoteTime(): TDateTime;
function GetStationId() : integer;
function GetLocalComputerName(): string;
//加密字符川
function Encrypt(AStr: string): string;
//去除所有空格
//=======================系统函数==================
function GetComStrings(): TStringList;
//=================================================
//判断用户是否合法
function IsEmployeeValid(Account,APassWord: string): boolean;
//取得用户的特权级别,口令错误则返回 -1
function GetEmployeePrivilege(Account,APassWord: string): integer;
//用户登录,并
function LoginIn(Account,APassword: string): boolean;
//初始化全局变量
procedure InitializeGlobal();
//==============数据同步=================
//数据同步
function AsyData(): integer;
//上传同步
function AsyFixCardUse(): integer;
function AsyTempCardUse(): integer;
function AsyFeeStation(): integer;
function AsyGetFee(): integer;
function AsyShiftRecord(): integer;
//下载同步
function AsyAdmFeeCasual(): integer;
function AsyAdmFestival(): integer;
function AsyTimePhase(): integer;
function AsyConfig() :integer;
function AsyCard(): integer;
implementation
uses
ConstUnit;
//得到连接字符串
function GetLocalStr(): String;
begin
Result := 'Provider=Microsoft.Jet.OLEDB.4.0;';
Result := Result + 'Data Source=.\data\plms_acc.mdb;';
Result := Result + 'Persist Security Info=False';
end;
function GetRemoteStr(): string;
begin
Result := 'Provider=SQLOLEDB.1;';
Result := Result + 'Password=taocong;';
Result := Result + 'Persist Security Info=True;';
Result := Result + 'User ID=sa;';
Result := Result + 'Initial Catalog=plms_new;';
Result := Result + 'Data Source=127.0.0.1';
end;
//connect to access
function ConnectLocal(): integer;
begin
with PlmsDM.DM do
begin
if cnnLocal.Connected = true then
begin
Result := 1;
Exit;
end;
try
cnnLocal.ConnectionString := GetLocalStr(); //connect manually .
cnnLocal.Connected := true;
Result := 1;
except
cnnLocal.Connected := false;
Result := -1;
end;
end;
end;
//connect to sql server
function ConnectRemote(): integer;
begin
with PlmsDM.DM do
begin
if cnnRemote.Connected = true then
begin
Result := 1;
Exit;
end;
try
cnnRemote.ConnectionString := GetRemoteStr();
cnnRemote.Connected := true;
Result := 1;
except
cnnLocal.Connected := false;
Result := -1;
end;
end;
end;
function GetLocalConnection(): TADOConnection;
begin
with PlmsDM.DM do
begin
if cnnLocal.Connected = false then
Result := nil
else
Result := cnnLocal;
end;
end;
//得到远程的ADO连接
function GetRemoteConnection(): TADOConnection;
begin
with PlmsDM.DM do
begin
if cnnLocal.Connected = false then
Result := nil
else
Result := cnnRemote;
end;
end;
//得到当前时间
function GetNow(): TDateTime;
begin
Result := GetRemoteTime();
if Result = 0 then Result := GetSystemTime();
end;
//获取系统时间
function GetSystemTime(): TDateTime;
begin
//call API
Result := Now();
end;
function GetRemoteTime(): TDateTime;
begin
//get store proc
Result := 0;
end;
function GetStationId() : integer;
var
mQuery: TADOQuery;
mStr: string;
mConnection: TADOConnection;
begin
Result := -1;
mQuery := TADOQuery.Create(nil);
mStr := 'SELECT fee_station_id FROM fee_station '
+'WHERE computer_name = :AName';
mConnection := GetRemoteConnection();
if mConnection = nil then
mConnection := GetLocalConnection;
if mConnection = nil then
begin
Result := -1;
Exit;
end;
with mQuery do
begin
Connection := mConnection;
SQL.Clear;
SQL.Add(mStr);
try
Parameters[0].Value := GetLocalComputerName();
Open;
if RecordCount <> 1 then
begin
Result := -1;
//Close;
//Free;
Exit;
end;
Result := FieldByName('fee_station_id').AsInteger;
except
Result := -1;
//Close;
//Free;
Exit;
end;
end;
//mQuery.Close;
//mQuery.Free;
end;
function GetLocalComputerName(): string;
var
mAddr : array[0..20] of Char;
mResult : PHostEnt;
wVersionRequested : word;
err : integer;
//wsaData : ;
begin
Result := 'tx';
{
wVersionRequested := 2*256;
err := WSAStartup( wVersionRequested, &wsaData );
if err <> 0 then
begin
Result := '';
end
else begin
mAddr := '127.0.0.1';
mResult := gethostbyaddr(Addr(mAddr),9,0);
gethostname(mResult,20);
Result := 'tx';
end;
}
end;
//加密字符川
function Encrypt(AStr: string): string;
begin
Result := AStr;
end;
function GetComStrings(): TStringList;
var
mResult : TStringList;
begin
mResult := TStringList.Create;
mResult.Add('COM1');
mResult.Add('COM2');
mResult.Add('COM3');
mResult.Add('COM4');
Result := mResult ;
end;
//判断用户是否合法
function IsEmployeeValid(Account,APassWord: string): boolean;
begin
Result := (gPrivilege >= 0);
end;
//取得用户的特权级别,口令错误则返回 -1
function GetEmployeePrivilege(Account,APassWord: string): integer;
begin
Result := gPrivilege;
end;
//用户登录,并初始化全局变量
function LoginIn(Account,APassword: string): boolean;
var
mQuery: TADOQuery;
mStr: string;
mConnection: TADOConnection;
begin
Result := False;
mQuery := TADOQuery.Create(nil);
mStr := 'SELECT * FROM employee '
+'WHERE account=:Account AND password=:APassword';
mConnection := GetRemoteConnection();
if mConnection = nil then
mConnection := GetLocalConnection;
if mConnection = nil then
begin
InitializeGlobal();
Exit;
end;
with mQuery do
begin
Connection := mConnection;
SQL.Clear;
SQL.Add(mStr);
try
Parameters[0].Value := Account;
Parameters[1].Value := APassword;
Open;
if RecordCount <> 1 then
begin
InitializeGlobal();
//Close;
//Free;
Exit;
end;
gEmployeeId := FieldByName('employee_id').AsInteger;
gPrivilege := FieldByName('privilege').AsInteger;
gEmployeeName := FieldByName('employee_name').AsString;
//gAccount := FieldByName('account').AsString;
//gPassWord := FieldByName('password').AsString;
except
InitializeGlobal();
//Close;
//Free;
Exit;
end;
end;
//mQuery.Close;
//mQuery.Free;
Result := True;
end;
//初始化全局变量
procedure InitializeGlobal();
begin
gEmployeeId := -1;
gPrivilege := -1;
gEmployeeName := '';
gPassWord := '';
//gIsConnect := ;
gLoginTime := 0;
//gStationId: integer;
//gErrorRecord: TErrorRecord;
end;
//===========================================================
// ===数据同步===
//===========================================================
//数据同步
function AsyData(): integer;
begin
Result := 1;
end;
//上载使用表的通用程序
function AsyTable1(ALocalName,ARemoteName: string): integer;
var
mQuery1,mQuery2,mQuery3,mQuery4: TADOQuery;
mStr1,mStr2,mStr3,mStr4: string;
mCnnLocal,mCnnRemote : TADOConnection;
//释放所有资源
procedure FreeResource();
begin
mQuery1.Close;
mQuery2.Close;
mQuery3.Close;
mQuery4.Close;
mQuery1.Free;
mQuery2.Free;
mQuery3.Free;
mQuery4.Free;
end;
begin
mStr1 := 'select * from ' + ALocalName + ' '
+'where asy_flag =:AFlag';
mStr2 := 'update ' + ARemoteName + ' set '
+'leave_time = :ALeaveTime '
+'leave_picture= :ALeavePicture'
+'leave_station_id = :ALeaveStationId'
+'description = :ADescription'
+'where card_num=:ACardNum and enter_time=:AEnterTime';
mStr3 := 'inser into ' + ARemoteName
+ '(card_use_id,card_num,enter_time,leave_time,'
+'leave_picture,leave_station_id,description) '
+'values(:ACardUseId,:ACardNum,:AEnterTime,:LeaveTime,'
+':ALeavePicture,:ALeaveStationId,:ADescription)';
mStr4 := 'update ' + ALocalName + ' '
+'set asy_flag =:AFlag '
+'where card_num=:ACardNum and enter_time=:AEnterTime ' ;
//main pro start
mCnnRemote := GetRemoteConnection();
if mCnnRemote = nil then
begin
Result := -1;
Exit;
end;
mCnnLocal := GetLocalConnection();
if mCnnLocal = nil then
begin
Result := -2;
Exit;
end;
//ask for resource.
mQuery1 := TADOQuery.Create(nil);
mQuery2 := TADOQuery.Create(nil);
mQuery3 := TADOQuery.Create(nil);
mQuery4 := TADOQuery.Create(nil);
try
with mQuery1 do
begin
Close;
Connection := mCnnLocal;
SQL.Clear;
//从本地数据库中选择没有同步的数据
SQL.Add(mStr1);
mQuery1.Parameters[0].Value := ASY_NO;
Open;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -