MasteringVFP/4/7/2
出自VFP Wiki
MasteringVFP/4/7/2
的原始碼
跳轉到:
導航
,
搜尋
根據以下的原因,您並無權限去做編輯這個頁面:
你所請求執行的操作被禁止。
你可以檢視並複製本頁面的原始碼。
==== seek ==== 自從不知第幾版的 VFP 提供 Seek() 這個函數, 就沒再用 Seek 的命令, 不過剛剛看 VFP8 的 Help 才發現原來 Seek 命令也多了不少參數可以下, 還是以前都沒注意呢? <pre> SEEK eExpression [ORDER nIndexNumber | IDXIndexFileName | [TAG] TagName [OF CDXFileName] [ASCENDING | DESCENDING]] [IN nWorkArea | cTableAlias] </pre> Seek 不論函數或命令都必須事前建立 Index, 用途的解釋大概就是:資料庫建立過索引後, 使用該指令找尋到符合條件的第一筆記錄, 如果找不到將移動到最後, 可用 Found() 或 Eof() 來判斷。 使用 Seek(), 如果 Set("Near")="OFF" 的話, 不符合條件, 記錄將移動到最後, 如果 Set("Near")="ON", 不符合條件, 記錄將移動到最符合條件的記錄編號。Seek 的命令則無法做到前述功能。 我們就來看看以下的幾個例子~ ---- (1) <pre> Set Near on CREATE CURSOR ABC(Field1 C(5)) INDEX ON field1 TO XYZ INSERT INTO ABC (Field1) Value("1") INSERT INTO ABC (Field1) Value("2") INSERT INTO ABC (Field1) Value("4") INSERT INTO ABC (Field1) Value("5") SEEK "3" ? Eof() </pre> 上述 Eof() 將回傳 .T., 表示找不到 "3", 記錄也移動到最後 不過如果使用以下命令 <pre> ?Seek("3") ?Recno() </pre> 將回傳 .F., 記錄卻會停留在第 3 筆, 也就是 Field1="4" 的位置, 而不會移動到最後 您可以試試看 Set Near Off 又會發生什麼情況 ---- (2) <pre> Set Exact off CREATE CURSOR ABC(Field1 C(5)) INDEX ON field1 TO XYZ INSERT INTO ABC (Field1) Value("11") INSERT INTO ABC (Field1) Value("22") ?SEEK("2") </pre> 上述設定 Exact 為 Off, 條件查詢時因為查到第二筆 22 的第一個 2, 所以是被予許符合條件 但是當 Exact 設定為 On 時, 那要符合條件, 只能下 Seek("22") 才算符合條件。
返回到
MasteringVFP/4/7/2
。
檢視
頁面
討論
原始碼
歷史
個人工具
登入/建立新帳號 選單
導航
首頁
社群入口
現時事件
近期變動
隨機頁面
使用說明
搜尋
工具箱
鏈入頁面
相關頁面修訂記錄
所有特殊頁面