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

📄 globalunit.~pas

📁 停车场收费系统停车场收费系统停车场收费系统停车场收费系统
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
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 + -