一個很好的c-s主程序

字號:

* * 2003/11/21 《酒店管理》系統(tǒng) 主程序
    * * 作者:劉雪均
    * * 版權(quán)所有 (C) 2003 寶明城大酒店
    * * 廣東深圳市公明鎮(zhèn)長春花園
    * * 深圳, 廣東 518106
    * * 中國
    * * 說明: 版權(quán)所有,嚴(yán)禁非法復(fù)制,違者必窮
    Clear
    Clear All
    Clear Dlls
    Clear Macros
    Close All
    Set Talk Off
    Set Safe Off
    Set Escape Off
    Set Debug Off
    Set Exact Off
    Set Sysmenu Save
    Set Sysmenu To
    Set Sysmenu Off
    Set NullDisplay To ''
    Set Null Off
    Set Dohistory Off
    Set Notify Cursor Off
    Release Windows
    Close Databases
    Set Date To YMD
    Set Hour To 24
    Set Seconds Off
    Set Century On
    Set Deleted On
    Set Resource On
    Set Help On
    On Shutdown Quit
    Set Clock Off
    With _Screen
    .WindowState=2
    .ZOOMBOX=.F.
    .Movable=.F.
    .MinButton=.F.
    .MaxButton=.F.
    .Closable=.F.
    .Icon="Ball.ICO"
    .Caption='《酒店管理》系統(tǒng)--均維軟件工作室'
    .LockScreen=.T.
    .AddObject('ScreenImg','Image')
    .ScreenImg.Stretch=2
    .ScreenImg.Visible=.T.
    .ScreenImg.Height=Sysmetric(2)-50
    .ScreenImg.Width=Sysmetric(1)
    .ScreenImg.Picture='DeskTopr.jpg'
    .LockScreen=.F.
    Endwith
    =Capslock(.T.)
    =Numlock(.T.)
    Public TempFile,ExePath,CurWinDir,CurPic,pCompany,ReportFile,pTeamId,pUserGroup,pUserId,pUserName,sConn,gcUpdateId,;
    m.Date_From,m.Date_To,nConn,OFBLX,OFBLY,Times
    Store 0 To nConn,OFBLX,OFBLY,Times
    Store Date() To m.Date_From,m.Date_To
    Store '' To TempFile,ExePath,CurWinDir,CurPic,pCompany,ReportFile,sConn,pTeamId,pUserGroup,pUserId,pUserName
    TempFile='T'+Right(Sys(2015),7)
    CurWinDir=Getenv('WinDir')
    ExePath=Left(Sys(16,1),Rat("\",Sys(16,1)))
    Set Default To (ExePath)
    Set Resource To &ExePath.FoxUser.Dbf
    Set Path To &ExePath.;&ExePath.HelpS
    If !Directory("&ExePath.Temp")
    Md &ExePath.Temp
    Endif
    Tmpfiles="&ExePath.Temp" &&設(shè)定當(dāng)前VFP使用的臨時文件目錄
    =DelTmpFile() &&刪除當(dāng)前用戶系統(tǒng)目錄和VFP目錄的過時的臨時文件
    *!* SET HELP TO &ExePath.HelpS\Hotel.CHM
    If !File('MYDLL.DLL')
    Messagebox('MYDLL.DLL丟失,程序不能正常運(yùn)行!',48,'系統(tǒng)提示')
    Quit
    Endif
    Declare String getserial In "MyDll.dll" Integer &&獲得硬盤廠商物理永久性的ID
    Declare String num2txt_c In "MyDll.dll" As RMBZH Double &&小寫金額轉(zhuǎn)換成大寫金額
    Declare String topy In "MyDll.dll" String &&漢字轉(zhuǎn)拼音首字母
    Declare Integer changeres In "MyDll.dll" Integer, Integer &&分變率設(shè)定
    Declare Integer WinExec In "kernel32" String,Integer
    Declare Integer FindWindow In Win32api String, String
    Declare Long BringWindowToTop In Win32API Long
    Declare Long ShowWindow In Win32API Long, Long
    Declare Integer SendMessage In user32 Integer,Integer,Integer,Integer
    Declare Integer ShellExecute In SHELL32.Dll Integer, String, String, String, String, Integer
    Declare Integer GetPrivateProfileString In Win32API As GetPrivStr String, String, String, String @, Integer, String
    Declare Integer WritePrivateProfileString In Win32API As WritePrivStr String, String, String, String
    Declare SHORT SetLocalTime In win32api String SystemTime
    *!* Declare integer ShowWindowAsync in user32 integer hwnd, integer nCmdShow
    *!* htaskbar = FindWindow("Shell_TrayWnd",0)
    *!* ShowWindowAsync(htaskbar,0) &&0為隱藏任務(wù)欄,1為顯示任務(wù)欄
    Set Class To MyLibs Additive &&使用自已的類庫
    On Error Do Err_Fix With Error( ),Message( ),Message(1), Program( ),Lineno( ) &&錯誤跟蹤處理
    If !File("&ExePath.LXJ.INI") &&判斷配置文件存在否,不存在就創(chuàng)建。
    =WriteIni('REGISTRY','Local_Id',Str(DiskSpace(Sys(5),1)),'&ExePath.LXJ.INI')
    =WriteIni('REGISTRY','Reg_Date',Ttoc(Datetime()),'&ExePath.LXJ.INI')
    =WriteIni('REGISTRY',' ','======================','&ExePath.LXJ.INI')
    =WriteIni('AUTHOR','Contact','劉 雪 均','&ExePath.LXJ.INI')
    =WriteIni('AUTHOR','Title','電腦工程師','&ExePath.LXJ.INI')
    =WriteIni('AUTHOR','Telephone','13613026728','&ExePath.LXJ.INI')
    =WriteIni('AUTHOR',' ','======================','&ExePath.LXJ.INI')
    =WriteIni('SCREEN','RandomLoad','Yes','&ExePath.LXJ.INI')
    =WriteIni('SCREEN','SourceXY','Yes','&ExePath.LXJ.INI')
    =WriteIni('SCREEN','Picture ','Picture.JPG','&ExePath.LXJ.INI')
    =WriteIni('SCREEN','StatusBar ','On','&ExePath.LXJ.INI')
    =WriteIni('SCREEN','','======================','&ExePath.LXJ.INI')
    =WriteIni('CONNECT','DRIVER','SQL SERVER','&ExePath.LXJ.INI')
    =WriteIni('CONNECT','SERVER',GETENV("COMPUTERNAME"),'&ExePath.LXJ.INI')
    =WriteIni('CONNECT','PORTNO','1433','&ExePath.LXJ.INI')
    =WriteIni('CONNECT','UID','SA','&ExePath.LXJ.INI')
    =WriteIni('CONNECT','PWD','DBA','&ExePath.LXJ.INI')
    =WriteIni('CONNECT','DATABASE','HOTEL','&ExePath.LXJ.INI')
    =WriteIni('CONNECT',' ','======================','&ExePath.LXJ.INI')
    =WriteIni('USER','LastUser','Guest','&ExePath.LXJ.INI')
    =WriteIni('USER',' ','======================','&ExePath.LXJ.INI')
    =WriteIni('UPDATE','NewExe','&ExePath.Main.EXE','&ExePath.LXJ.INI') &&工作站自動升級的共享目錄
    =WriteIni('UPDATE','NewInfo','歡迎使用本系統(tǒng)!','&ExePath.LXJ.INI') &&提示的信息
    =WriteIni('UPDATE',' ','======================','&ExePath.LXJ.INI')
    =WriteIni('OCXDLLREG',GETENV("COMPUTERNAME"),'NO','&ExePath.LXJ.INI')
    Endif
    If Upper(ReadIni('SCREEN','StatusBar','&ExePath.LXJ.INI'))='ON'
    Set Status Bar On
    _vfp.StatusBar=' 歡 迎 您 使 用 本 系 統(tǒng) . . . '
    Else
    Set Status Bar Off
    Endif
    =OleRegister() &&根據(jù)INI文件判斷是否注冊O(shè)CX,DLL文件
    =SetShortCut('酒店管理') &&在屏幕上創(chuàng)建快捷方式
    *!*工作站是否注冊判斷
    If ReadIni('REGISTRY','Local_Id','&ExePath.LXJ.INI')!=WorkJm(Iif(Empty(GetSerial(0)),Str(Diskspace(Sys(5),1)),Allt(GetSerial(0))),'HTL')
    Do Form RegWork.SCX &&調(diào)用本工作站使用注冊表單
    Endif
    Wait Window "正在連接 SQL SERVER 數(shù)據(jù)庫 ,請稍候 ...... " At Srows()/2-10,(Scol()-45)/2 Nowait Noclear
    SQLSETPROP(0,"DispLogin" ,3) &&連接不成功時不顯示ODBC登錄對話窗口
    SQLSETPROP(0,"ConnectTimeOut",20) &&連接超時等待秒數(shù)設(shè)置,可取值0至600
    SQLSETPROP(0,"IdleTimeout",0) &&空閑超時間隔秒數(shù),取0為無限期等待
    SQLSETPROP(0,"QueryTimeOut",20) &&超時錯誤之前等待的時間
    SQLSETPROP(0,"Asynchronous",.F.) &&指定結(jié)果集合是同步返回
    SQLSETPROP(0,"DispWarnings",.F.) &&不顯示一個錯誤信息
    *!*從配置文件中獲得SQL SERVER的加密連接串
    sConn='DRIVER=SQL SERVER'
    sConn=sConn+'; SERVER='+Iif(Empty(ReadIni('CONNECT','SERVER','&ExePath.LXJ.INI')),GETENV("COMPUTERNAME"),ReadIni('CONNECT','SERVER','&ExePath.LXJ.INI'))
    sConn=sConn+','+Iif(Empty(ReadIni('CONNECT','PORTNO','&ExePath.LXJ.INI')),'1433',ReadIni('CONNECT','PORTNO','&ExePath.LXJ.INI'))
    sConn=sConn+';UID='+ReadIni('CONNECT','UID','&ExePath.LXJ.INI')
    sConn=sConn+';PWD='+Iif(Empty(ReadIni('CONNECT','PWD','&ExePath.LXJ.INI')),'',JmWd(ReadIni('CONNECT','PWD','&ExePath.LXJ.INI')))
    sConn=sConn+';DATABASE='+Iif(Empty(ReadIni('CONNECT','DATABASE','&ExePath.LXJ.INI')),'NoDatabase',ReadIni('CONNECT','DATABASE','&ExePath.LXJ.INI'))
    sConn=sConn+';NetWork=DBMSSOCN'
    nConn=Sqlstringconnect(sConn)
    Wait Clear
    Do While nConn<=0
    Local YN
    YN=Messagebox('SQL Server 數(shù)據(jù)庫連接失敗,請選擇 !'+Chr(13)+Chr(13)+"Y ->重試 , N ->設(shè)定 , 取消 ->退出 !",67 ,'SQL Connect Info.')
    _Screen.Refresh
    Do Case
    Case YN=6
    Wait Window "正在連接 SQL SERVER 數(shù)據(jù)庫 ,請稍候 ...... " At Srows()/2-10,(Scol()-45)/2 Nowait Noclear
    nConn=Sqlstringconnect(sConn)
    Wait Clear
    Case YN=7
    Do Form SetServer.SCX &&SQL SERVER服務(wù)器連接配置
    Otherwise
    Quit
    Endcase
    Enddo