foxpro取得離線視圖

字號:

獲取離線視圖是簡單的:確信包含了視圖定義的數(shù)據(jù)庫是當前數(shù)據(jù)庫并使用新的 createoffline() 函數(shù)。語法如下:
    createoffline( [, ])
     是離線視圖的名字。任何視圖都可以離線;你不用特別定義一個視圖作為“離線表”。
    選項 是要建立的DBF的目錄和文件名。如果你未指定, VFP 將在當前目錄中建立一個與視圖同名的表(例如, 如果視圖名字是LV_CUSTOMER, 表名將是LV_CUSTOMER.DBF)。
    注意VFP 文檔中關(guān)于該參數(shù)的描述是錯誤的; 它規(guī)定你只能為該表指定一個目錄, 但實際上你也可以指定名字 (盡管擴展名不是必須的)。
    如果視圖成功的離線,createoffline() 返回.T.。
    如果視圖已經(jīng)離線,如果你使用了第二個參數(shù)而又未指定文件名, 如果視圖表或支持性表緩存文件已經(jīng)存在 (該行為有望在將來的版本中得到改變;依我看來, 它不會妨害set safety), 或源表不能打開,則返回 .F.。
    以下是該函數(shù)的一個例子:
    llSuccess = createoffline('LV_CUSTOMER', 'OFFLINE\LV_CUSTOMER')
    該例試圖讓LV_CUSTOMER 視圖離線并在當前目錄下的OFFLINE子目錄中建立一個叫LV_CUSTOMER.DBF 的表。
    這里是關(guān)于生成離線視圖的其它要注意的事:
    createoffline() 打開視圖所基于的表而不是視圖本身。
    如果視圖離線,dbgetprop(, 'View', 'Offline') 返回.T.。
    VFP 5.0 (包括5.0a) 有一個bug:如果 createoffline() 返回.F., 指明視圖因某種原因而未能離線, dbgetprop(, 'View', 'Offline') 出乎意料的返回.T.。dropoffline()也不會正常工作; 它返回.F。指明視圖不能離線, 而且即使它確實已經(jīng)不是離線視圖, dbgetprop(, 'View', 'Offline') 繼續(xù)返回.T., 然而; 在視圖聯(lián)線模式或管理模式下打開視圖將會得到一條 "對象不是一個離線視圖" 錯誤。幸運的是, 如果你解決該問題而致使createoffline() 失敗, 你可以再次使用它來讓視圖離線.