當前位置:編程學習大全網 - 編程語言 - vfp中.prg程序怎麽做怎麽用

vfp中.prg程序怎麽做怎麽用

VFP+SQL主程序編程

這是給初學者推薦壹種格式,不壹定最好,但它卻實能正常運行

* 程序名:main.prg

* 作用:整個系統的入口

* 路徑:\妳的程序目錄\prgs

Set Talk off

Set Escap off

* 開始,程序錯誤處理

ON ERROR DO Err.PRG With Error(), Message(), Message(1), Program(), Lineno(1)

* 第壹步,清理環境**********************

*******

Close All && 關閉所有工作區中打開的數據庫、表和索引,並選擇工作區 1。

Clear Menus && 從內存中釋放所有的內存變量和數組以及所有用戶自定義菜單欄、

&& 菜單和窗口的定義。 還從內存中刪除所有用 DECLARE-ALL 註冊

&& 的外部 Windows 32 位動態鏈接庫 (.DLLS)。

* 關閉系統菜單

* 如果在發出 SET SYSMENU SAVE 命令之後修改了菜單系統,可以通過發出

* SET SYSMENU TO DEFAULT 命令來恢復前面的設置。

Set Sysmenu Save

* 在程序執行期間廢止 Visual FoxPro 主菜單欄。

Set Sysmenu Off

Set Sysmenu To

* 第二步,設置環境

* 退出Read時保存數據緩沖區內容

Set Autosave On

* 使用 INSERT、APPEND 和 BROWSE 命令創建新記錄時,不將當前記錄數據復制到新記錄中。

Set Carry Off

* 指定是否可以用在文本框中鍵入最後壹個字符的方法退出文本框。

Set Confirm Off

* 日期不顯示世紀部分

Set Century Off

* 設置日期格式為"YY.MM.DD" 格式

Set Date Ansi

* 不顯示已經刪除的記錄

Set Delete On

* 決定能否使用 LOCK ( )或 RLOCK ( ) 鎖定多個記錄。

Set Multilocks On && 網絡編程專用

* 確定 ATLTER TABLE、CREATE TABLE 和 INSERT - SQL 命令如何處理 null 值。

Set Null On

* 指定當字段是空值(NUll)顯示的文本為

Set NullDisplay To ''

* 改寫已有文件之前不顯示對話框

Set Safety Off

* 移去圖形狀態欄。

Set Status Bar Off

* 第三步,設置妳的程序路徑

* 設置程序主目錄

Public gcMainPath

gcMainPath = Sys(5)+Sys(2003)+"\"

Set Default To &gcMainPath

* 數據目錄(本地數據庫和表)

Public gcDataPath

gcDataPath =gcMainPath+"Data\"

* 程序目錄

Public gcPrgsPath

gcPrgsPath =gcMainPath+"Prgs\"

* 圖片目錄

Public gcPicsPath

gcPicsPath=gcMainPath + "pics\"

* 表單目錄

Public gcFormsPath

gcFormsPath = gcMainPath+"forms\"

* 菜單目錄

Public gcMenusPath

gcMenusPath = gcMainPath+"menus\"

* 標簽目錄

Public gcLabelsPath

gcLabelsPath = gcMainPath+"labels\

* 報表目錄

Public gcReportsPath

gcReportsPath =gcMainPath+"Reports\"

* 第四步 初始化鍵盤

Capslock(.F.)

IMEStatus(0)

Insmode(.T.)

Numlock(.T.)

* 第五步 打開自定義類庫、過程文件

Set Classlib To gcMainPath+"vcx\MyVCX.vcx"

Set Procedure To gcPrgsPath +"Myproc.prg"

* 設置不顯示ODBC登錄對話框

SQLSETPROP(0,"DispLogin",3) && 網絡專用

* 第六步 聲明其他全局變量

* 數據源名稱

Public gcDSN

gcDSN = ‘’

* 用戶登錄名

Public gcUID

gcUID = ‘’

* 用戶登錄口令

Public gcPWD

gcPWD=‘’

* 當前登錄用戶姓名(中文)

PUBLIC gcName

gcName=''

* 前後端數據庫名

Public gcSQLDatabase,gcFoxDatabase

gcSQLDatabase = ‘資料管理’ && 後端 SQL 數據庫

gcFoxDatabase = ‘資料管理’ && 前端 VFP數據庫

* 連接句柄

Public gnHandleMaster &&與後端 master 系統數據庫的連接句柄

gnHandleMaster = 0

Public gnHandleUser && 與後端用戶數據庫“gcSQLDatabase ”的連接句柄

gnHandleUser = 0

* 第七步,檢查登錄帳號

>* 調用登錄表單"login.scx"

Do Form gcFormsPath+"login.scx" To gnHandleUser

結果如下圖所示

* 如果登錄成功 gnHandleUser > 0 表示登錄成功,反之,失敗

If gnHandleUser <= 0 && 登錄失敗

Quit && 退出

Endif

* 指定當試圖退出VFP時要執行的程序

ON SHUTDOWN DO gcPrgsPath +"FileExit.prg" && 代碼如下樓所示。

* 第八步,調用程序主菜單

Do gcMenusPath+"mainmenu.mpr"

* 第九步,顯示程序封面,桌面

Do Form gcFormsPath+"title.scx" && 封面

Do Form gcFormsPath+"Desktop.scx" && 桌面,也就是妳的程序背景(圖片略)

* 第十步 打開或創建本地數據庫

cFoxDb=gcDataPath+ gcFoxDatabase + ".dbc"

If Not Files(cFoxDb) && 如果指定的數據庫不存在

Create Database &cFoxDb && 創建它

Endif

* 啟動事件處理

Read Events

* 將釋放當前的 ON SHUTDOWN 命令

ON SHUTDOWN

* 程序:FileExit

* 作用:解決程序運行後,點擊主窗口關閉按鈕[X]不能退出VFP的問題

If Messagebox('您真要退出本系統嗎?',4+32+256,'退出確認')<>6 AND gnHandleUser > 0

Return

Endif

*Do While Txnlevel()>0

* Rollback

*Enddo

Clear Events

ON SHUTDOWN

* 恢復環境

Set Sysmenu To Default

With _Screen

.WindowState=2 &&最大化

.BackColor=Rgb(255,255,255)

.Caption="Microsoft Visual FoxPro"

.Icon =''

Endwith

* 關閉數據庫及表

If Used("cfg")

Use In cfg

Endif

If Used("dsn")

Use In dsn

Endif

If Used("uid")

Use In uid

Endif

Close Database All &&關閉所有數據庫

Close All &&關閉各種類型的文件,但不關閉命令窗口、調試窗口、幫助、跟蹤窗口。

Clear Menus &&釋放內存中所有的菜單定義。

Clear Popups &&釋放內存中所有用DEFINE POPUP命令創建的菜單定義。

Clear Windows &&釋放內存中所有用戶自定義窗口的定義,並從VFP主窗口或活動的用戶自定義窗口中清除窗口。

Clear &&清屏

Set Safe On

_Screen.Picture=""

=SQLDISCONNECT(0)

Quit

* 程序:錯誤處理,由梅子提供,未驗證。

*****************

err.prg

*****************

PARAMETER NERROR , CMESSAGE , CMESSAGE1 , CPROGRAM , NLINENO

SET TEXTMERGE DELIMITERS to

SET TEXTMERGE ON

SET TEXTMERGE TO ErrorLog.txt ADDITIVE NOSHOW

\---------------------------------------------------------------------

\<<DATE( )>> <<TIME( )>> 錯誤記錄

\程序標題: <<_Screen.Caption>>

\程序開發版本: <<VERSION(1)>>

DO CASE

CASE _SCREEN.WINDOWSTATE = 0

\窗口狀態: 普通

CASE _SCREEN.WINDOWSTATE = 1

\窗口狀態: 最小化

CASE _SCREEN.WINDOWSTATE = 2

\窗口狀態: 最大化

ENDCASE

\窗口可視: <<IIF(_Screen.Visible= .T. , "可見" , "不可見")>>

\窗口集合數: <<_Screen.FormCount>>

\網絡機器信息: <<SYS(0)>>

\執行程序: <<JUSTFNAME(SYS(16,1))>>

\執行程序所在目錄: <<JUSTPATH(SYS(16,1))>>

\執行程序所在目錄磁盤空間: <<DISKSPACE(JUSTDRIVE(SYS(16,1)))>>

\默認目錄: <<SYS(5)>><<SYS(2003)>>

\默認目錄磁盤空間: <<DISKSPACE(SYS(5))>>

\文件搜尋路徑: <<SET("PATH")>>

\系統臨時目錄: <<SYS(2023)>>

\虛擬內存池大小: <<SYS(1001)>>

\正在使用的工作區: <<Alias()>>

\活動字段: <<VARREAD()>>

IF TYPE('_Screen.ActiveForm.Name') = 'C'

\活動表單: <<_Screen.ActiveForm.Name>>

\表單標題: <<_Screen.ActiveForm.Caption>>

\表單基類: <<_Screen.ActiveForm.BaseClass>>

\表單派生: <<_Screen.ActiveForm.Class>>

\表單派生庫: <<_Screen.ActiveForm.ClassLibrary>>

\表單位置: <<SYS(1271, _Screen.ActiveForm)>>

ELSE

\無活動表單

ENDIF

IF TYPE('_Screen.ActiveForm.ActiveControl') = 'O'

\活動控制: <<_Screen.ActiveForm.ActiveControl.Name>>

IF TYPE('_Screen.ActiveForm.ActiveControl.Caption') = 'C'

\控制標題: <<_Screen.ActiveForm.ActiveControl.Caption>>

ENDIF

\控件基類: <<_Screen.ActiveForm.ActiveControl.BaseClass>>

\控件派生: <<_Screen.ActiveForm.ActiveControl.Class>>

\控件派生庫: <<_Screen.ActiveForm.ActiveControl.ClassLibrary>>

\控件位置: <<SYS(1271, _Screen.ActiveForm.ActiveControl)>>

ELSE

\無活動控制

ENDIF

\錯誤代號: <<nError>>

\錯誤信息: <<cMessage>>

\產生錯誤的位置: <<cProgram>>

\所在行號: <<nLineno>>

\產生錯誤的代碼: <<cMessage1>>

\輸出內存使用情況 -> MemoryLog.txt

\輸出工作環境到 -> StatusLog.txt

SET SAFETY OFF

DISPLAY MEMORY TO File MemoryLog.txt NOCONSOLE

DISPLAY STATUS TO File StatusLog.txt NOCONSOLE

\---------------------------------------------------------------------

SET TEXTMERGE TO

Nvalue = ;

MESSAGEBOX('程序發生錯誤!詳細信息如下:' + CHR(13) + CHR(13) + '錯誤代號: ' + ;

LTRIM(STR(NERROR)) + ;

CHR(13) + ;

'錯誤行號: ' + ;

LTRIM(STR(NLINENO)) + ;

CHR(13) + ;

'錯誤信息: ' + ;

CMESSAGE + ;

CHR(13) + ;

'錯誤代碼: ' + ;

CMESSAGE1 + ;

CHR(13) + ;

'錯誤位置: ' + ;

CPROGRAM + ;

CHR(13) + ;

CHR(13) + ;

'該錯誤已經記錄到文件:Errorlog.txt,Memorylog.txt,Statuslog.txt。',50,'信息')

DO CASE

CASE Nvalue = 3

QUIT

CASE Nvalue = 4

RETRY

CASE Nvalue = 5

RETURN

ENDCASE

  • 上一篇:msp430f149 SPI發送和接收函數怎麽寫
  • 下一篇:雙網卡服務器的網絡負載平衡如何設置?
  • copyright 2024編程學習大全網