VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

VFP7/8/9學習筆記—函數篇(轉貼)

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
goto-dream



註冊時間: 2004-05-11
文章: 909


第 1 樓

發表發表於: 星期五 六月 11, 2004 1:40 pm    文章主題: VFP7/8/9學習筆記—函數篇(轉貼) 引言回覆

挖掘VFP—函數篇(VFP7/8/9學習筆記)xiolig
http://mihu.agi-china.com/sdss/dispbbs.asp?boardID=2&ID=7451&page=1


在梅子BBS已經有了,請恕在下一稿多投:
從7.0到9.0,VFP新版的推出速度遠遠超出了狐友們的跟進速度,在VFP6尚未完全消化,特別是在缺乏完整的中文幫助文檔的情況下,大量的新增、改進都來不及瞭解和應用,許多狐友還不得不到處尋找替代解決辦法。
基於這種情況,非常希望高手們能集中講解一下新版功能。
我很菜,只想從今天開始寫點學習筆記,請狐友們指正。
問題1:這段關於 AddProperty() 的 E 文作何解釋?
ADDPROPERTY( ) does not work when using the FOR EACH command with object references. However, you can use the AddProperty method instead.

問題2:這段關於 ADEL() 的解釋有問題,VFP8與VFP6沒有區別?
If you delete a column, values of the elements in the deleted column are set to False (.F.), but trailing elements are not moved.

筆記0:ADIR()函數新增參數nFlag以返回大小寫保持原樣或8.3格式的文件名。
補充1:提到DIR,不得不說說GETDIR()的新增參數nFlag和lRootOnly,用它後就能達到夢寐以求的要求了(以往只能調用Shell32.DLL來實現)。
筆記1:釋放對像時,系統會自動斷開相應的事件綁定,不必明確調用UNBINDEVENTS()

筆記2:AFONT()通過新增的nFlag參數對其行為做了一些改變。

筆記3:VFP6中文MSDN關於AINSTANCE()的敘述「只有用 CREATEOBJECT( ) 賦給內存變量和數組元素的類實例才存放到數組中。」中其實還應包含NEWOBJECT( )函數。
筆記4:ALINES()新增參數cParseChar,可以指定回車/換行以外的斷行符了。
補充2:ALINES()不受SET MEMOWIDTH的影響,速度也比MLINE()快得多,但受限於內存容量;其它幾個相關函數沒什麼變化(仔細解讀的話,會發現MSDN文檔也有不少錯漏,MEMLINS()函數的參數除備註型字段外,字符型也是可以的,想來狐友們早已這樣用了!);在MLINE()函數中使用_MLINE系統變量可以改善其性能,但必對nLineNumber進行調整。
顯示所有行示例代碼:
lcTest = "A" + CHR(10) + "B" + CHR(13) + "C"
方案一:
FOR lnCount = 1 TO ALINES(laTest, lcTest)
? laTest(lnCount)
ENDFOR
方案二:
* SET MEMOWIDTH TO 1024 &&極限
FOR lnCount = 1 TO MEMLINES(lcTest)
? MLINE(lcTest, lnCount)
ENDFOR
方案三:
_MLINE = 0
* SET MEMOWIDTH TO 1024
FOR lnCount = 1 TO MEMLINES(lcTest)
? MLINE(lcTest, 1, _MLINE)
ENDFOR

筆記5:AMEMBERS()函數,通過新參數值 nArrayContentsID: 3 可以獲取 COM 對像成員信息了(與智能感應一樣);新增參數 cFlag 可以對成員進行過濾,並可用"#"獲取cFlag輔助信息。(此函數似乎是用來擴展VFP應用的,如編寫生成器)
補充2:ASC() / CHR() 早已把漢字當單個字符看,其ASCII遠遠超出255了 Smile
筆記6:ASCAN() 函數:新增 nElementsSearched 參數以搜索指定列;新增參數 nFlag 根據其二進制值的各位以進行大小寫敏感、返回行號和精確比較;不必要的參數可以用負數跳過。
問題3:由ASESSIONS() 想到的:除了表單/表單集外,數據工作期還會用在哪些地方?
筆記7:ASORT() 函數新增 nFlag: 1 以支持大小寫敏感排序。
補充3:為數眾多的數組函數(以A打頭)返回值均為整型,大於0表示成功(和結果數)。
問題4:ASTACKINFO() 函數的推出是為了更方便獲取出錯信息或擴展VFP應用嗎?
筆記8:ATAG() 函數大大方便了索引信息的查閱,以前可是好多函數加起來都難以完成的。

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
goto-dream



註冊時間: 2004-05-11
文章: 909


第 2 樓

發表發表於: 星期五 六月 11, 2004 1:41 pm    文章主題: 引言回覆

筆記9:BINDEVENT()是VFP8最值得稱道的函數了,它甚至改變了我們的編程習慣:
(1) 注意:對ActivePage屬性進行綁定是無效的,這意味著用戶切換頁面時,並不會觸發綁定的代理程序,但由於ActivePage是可讀寫的,賦值ActivePage屬性還是可以的。
(2) 參數 nFlag 位1是用來控制簡單調用(即把事件當方法用,如代碼 THISFORM.Command1.Click)時是否執行代理程序的,不受位0的影響,希望只讀譯文的狐友注意了。
(3) 在代理程序內,可以通過給AEVENTS()函數獲取事件源,這在把多個對象綁定到同一代理程序時特別有用,一個典型的應用就是單擊表格頭進行表格排序。
(4) 綁定COM對像要用 EVENTHANDLER()。
(5) 代理程序不會返回引用參數值(主要針對RaiseEvent()函數)。
(6) 綁定到有Assign方法的屬性時,代理程序可能會被調用兩次。
(7) 有的事件實際上是方法(如GotFocus),綁定時要設置 nFlag:2 | 3。
(Cool value屬性應該用 InteractiveChange 和 ProgrammaticChange 代替進行綁定。
(9) 源對像中使用NODEFAULT不能阻止先於事件執行的代理程序(nFlag:0 | 2)
(10) 不能在兩個對像之間進行重複綁定,除非先執行 UnBindEvents()。
小結:BindEvent() 是一個功能強大的新函數,使用前一定要認真閱讀幫助文檔。

題外話:非常感謝RMH為我們翻譯了VFP8的幫助文檔,但翻譯時錯漏了一些東西,希望E文不好的狐友一定要抽點時間閱讀一下原文。

參考1:http://www.vfp.cn/forum_list.asp?forum_id=1&action=&page=1&sea_type=topic&keyword=BINDEVENT


筆記10:BITAND()、BITOR()、BITXOR()函數支持多達26個參數連續運算。
補充4:BITNOT()函數的字面解釋是對整數進行按位取反(二進制反碼),參數和結果按補碼進行解讀,可以簡單地理解成「-INT(參數)-1」。
補充5:位運算函數很少用了,可以用BITTEST()、BITSET()、BITCLEAR()等進行複雜的權限管理。

補充6:由BOF()函數想到的:RECNO()的返回值通常位於1至RECCOUNT()+1之間,但也可能是負數(緩衝時新增記錄),或者是 0 (RECNO(0),軟查找失敗時)。


補充7:CHRSAW()是用來限時檢測是否按了指定鍵的函數,它不會清除鍵盤緩衝區。
補充8:CHRTRAN()函數的另類功能是刪除指定字符,如清除字符串中的所有空格。
補充9:因為我們一般都是在進行中文處理,應盡可能選用以C結尾的雙字節字符函數,但由於AT()函數的特殊性(是否區分大小寫),相應的雙字節函數是AT_C()和ATCC(),這是歷史遺留問題。

補充10:由CURDIR()想到的:SET DEFAULT TO SYS(5) + SYS(2003) 是毫無意義的。

筆記11:為了適應新的需要,臨時表新增了一些屬性,用SPT要注意了。
補充11:存取遠程數據時,設置Fetch系列臨時表屬性可以加快程序的反應速度。


補充11:CURVAL()從磁盤上取值,OLDVAL()是更改前的值,二者都不用是現值。

補充12:DATE()、DATETIME()函數除了返回當前日期時間外,還可以用參數生成指定值。

補充13:DEFAULTEXT()、ADDBS()、FORCEEXT()、FORCEPATH()、JUSTDRIVE()、JUSTEXT()、JUSTFNAME()、JUSTPATH()、JUSTSTEM()等九個文件路徑函數給我們帶來了很大的方便,可是迄今為止不少狐友仍在使用原始的字符串解析函數去實現它們,真是可惜!


補充14:DELETED()是一個很簡單的函數,但當它用於SELECT-SQL多表查詢時,往往得不到正確的結果。
(1) 如果引用表已經打開,DELETED()總是引用當前記錄,因此結果一定是錯的。
(2) 用在SELECT-SQL語句裡的AS子句定義的別名作為DELETED()的參數無效,甚至會提示找不到別名。
(3) 鑒於上述原因,DELETED()前一定要關閉相應的表。


筆記12:Directory()函數新增參數 nFlag:1 以包括系統、隱含屬性的文件夾。

筆記13:DiskSpace()函數新增參數 nFlag 以返回磁盤總容量、用戶線程可用空間等。

筆記14:DisplayPath()函數縮短路徑以增強長路徑顯示的美觀性(不能以此進行訪問)。

筆記15:DoDefault()是常用函數了,用來明確調用父類事件或方法:
(1) 相關操作符「::」:更靈活(可調用各級祖先的任何方法/事件代碼);
(2) 相反命令 NoDefault:防止執行默認事件或方法處理,典型應用如:
① KeyPress 事件:忽略此鍵盤事件。
② Load 事件:不加載此表單。
③ QueryUnload 事件:阻止表單釋放(RELEASE方法/命令不觸發此事件,因此無效)。
④ BeforeRowColChange 事件:不改變表格中活動的行和列。
⑤ OLE拖放和項目事件:略。
(3) 無效調用(基類、父類沒有或隱藏的事件/方法)不再產生1734錯誤。
補充15:有的保留字只能用於類代碼中(如ThisForm、DoDefault、NoDefault等),初學者常犯的錯誤是在類中調用的PRG文件中使用它們。

補充16:CDOW()只能獲得英文星期名,希望這是最簡中文版:


*中文星期函數
FUNCTION PDOW
PARAMETERS tdDate
IF VARTYPE(m.tdDate) $ "DT"
RETURN SUBSTRC("日一二三四五六",INT(DOW(m.tdDate)),1)
* 這裡用 INT() 函數是由於雙字節字符串函數的一個 BUG。
ENDIF
ERROR 11
RETURN ""



補充17:DTOC()、TTOC()函數帶參數 1 時返回結果不受其它設置影響,特別有用!

筆記16:EMPTY()、ISBLANK()、ISNULL()都是用來判斷數據是否為空的函數,要注意區別它們。
(1) 可能是NULL的值(如允許為NULL的字段、對像等),應該用 VARTYPE()/TYPE() AND ISNULL()。
(2) ISBLANK() 比 EMPTY() 更徹底:
①字符型:回車/換行/製表符是 EMPTY 的,但不是 ISBLANK 的;
②數值型:0 是 EMPTY 的,但只有新增的或 BLANK 後的記錄是 ISBLANK 的;
③邏輯型:.F. 是 EMPTY 的,但只有新增的或 BLANK 後的記錄是 ISBLANK 的。
(3) ISBLANK()
(4) 絕大多數時候不需要區分字符型與備註型的區別,但請看下例:
REPLACE 備註字段 WITH SPACE(1)
內存變量 = 備註字段
? EMPTY(備註字段) &&顯示 .F.
? EMPTY(內存變量) &&顯示 .T.
(5) 可以用NVL()、EVL()函數簡化IIF(ISNULL())和IIF(EMPTY())。

筆記17:ExecScript()函數「運行多行代碼」,更高的要求示例(類定義):


SET TEXTMERGE OFF
SET TEXTMERGE TO test.prg
TEXT TEXTMERGE PRETEXT 2
LOCAL loTest
loTest = NEWOBJECT("myTest")
loTest.Test

DEFINE CLASS myTest AS Custom
PROCEDURE Test
MESSAGEBOX("Run:" + SYS(16))
ENDPROC
ENDDEFINE
ENDTEXT
SET TEXTMERGE TO
COMPILE test.prg &&可有什麼附加要求?
DO ("test.fxp") &&直寫DO test導致編譯時出錯。




補充18:EVALUATE()、宏替換(&)和名稱表達式:
(1) 名稱表達式最快,但它只能獨立地構成語句中的名稱:
lnWork = SELECT()
SELECT 0
USE ("C:\My Documents\test")
REPLACE ("字段名") WITH ...
SELECT (lnWork) &&特殊應用示例
*將SELECT()換成ALIAS()可能出錯。
(2) 命令涉及多個記錄(如 COUNT)時用宏替換,否則用 EVALUATE() 函數。
(3) 使用宏替換時務必記住:字符型變量(含數組);小數點用法。
(4) 涉及局部變量時,有的地方只能用宏替換,最典型的如查詢過濾:
lcFilter = "性別=[男]"
SET FILTER TO &lcFilter
註:請勿用非全局性變量(如ThisForm)設置過濾。

筆記18:為了返回字段標題(可以是以等號打頭的字符表達式),FIELD()函數新增參數cFieldName和nFlags:1。

筆記19:FILE()函數新增參數nFlags:1以包含隱含和系統文件,類似的還有DIRECTORY()函數。

筆記20:GETDIR()函數的改進太令人興奮了!不再需要用API來實現相同的功能了。

補充19:GETENV()函數在Windows時代似乎已經沒什麼價值了,WinDir、Temp等環境變量尚可用用!

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
goto-dream



註冊時間: 2004-05-11
文章: 909


第 3 樓

發表發表於: 星期五 六月 11, 2004 1:41 pm    文章主題: 引言回覆

VFP推出9.0Beta了,補充一下前面的內容:

筆記21:ALINES()在VFP9中有了進一步的改進:
(1)由於新增了Varbinary和Blob數據類型,傳遞lTrim:.T.時去掉尾部的0;
(2)改參數lTrim為nFlag,其二進制位的含義如下:
位0:去除首尾空白(與VFP8的lTrim含義相同);
位1:包括最後一個元素,即使它是空行;
位2:去除空元素(最後一行例外,由位1控制);
位3:大小寫敏感;
位4:在結果集中包含解析符。

筆記22:BINTOC()在VFP9中進行了nSize參數擴展:
數字8:將數值型(N)、雙精度型或貨幣型轉換成8個字節長度的字符串;
"F"、"f":將參數nExpression視為浮點數進行轉換(4字節);
"B"、"b":將參數nExpression視為雙精度進行轉換(8字節)。
注意:VFP對整數的支持只有4字節,因此不對直接將它按nSize:8進行轉換。

筆記23:CTOBIN()在VFP9中新增參數cDataType以對應於BINTOC()的改進:
cDataType的取值範圍是字符N、B、Y等,分別對應於數值、雙精度和貨幣型。

筆記24:GETFONT()函數新增參數nFontCharSet以指定字符集;VFP9新增參數值CFontStyle:P以只顯示當前默認打印機可用字體。

問題5:如何省略GETFONT()函數前面的參數?幫助文檔上說可以直接使用逗號跳過的,但GETFONT(,,"B") 引發無效參數錯誤(錯誤號11),類似的GETOBJECT(,"Excel.Application")卻能正常執行。

問題6:奇怪,GETHOST()和ISHOSTED()函數居然從VFP8後的幫助文檔中消失了,Active Document技術真的沒用或被完全替代了?

筆記25:GETNEXTMODIFIED()函數新增參數lNoFire以抑制字段規則、記錄規則和「索引『名稱』不唯一(1884)錯誤。

筆記26:GETOBJECT()函數又有新用途了,只是對IMoniker是什麼東東不明白。

筆記27:GETPICT()函數支持的圖像格式更多了;從VFP8開始,在Windows 2000以後的操作系統中,它也增加了縮略圖顯示方式,因此不再提供預覽窗口。

筆記28:GETWORDCOUNT()、GETWORDNUM()這兩個新增函數大概是專為西文設計的吧?

筆記29:GOMONTH()函數是一個比較令人興奮的小函數了,但史學家只能望而興氣了!

筆記30:HOME()函數擴展了參數值7、8以返回用戶目錄,大概是為了滿足多用戶環境吧。

筆記31:ICASE()函數(VFP9)是又一類似於IIF()的函數,不同的是它主要用來取代DO CASE語句。
註:若參數數目為偶數,則應按條件、結果配對出現;若為奇數,最後一個總是OTHERWISE值。

筆記32:ID()函數(VFP9)等價於SYS(0),返回網絡信息(主機名和登錄用戶名)。

補充20:IMESTATUS()函數設置/返回輸入法狀態,但直接用IMEMode屬性就能滿足大多數要求了。

補充21:INDEXSEEK()函數較之SEEK()函數,主要是lMovePointer參數的應用,方便了編程。類似地,LOOKUP()函數也是為簡化編程工作量而設計的。

題外話:如同INLIST()一樣,VFP中有一些小的但卻非常好用的函數。通讀一下幫助文檔吧!

筆記33:INPUTBOX()是個頗受爭議的新函數,因為它的功能太弱了,但我個人覺得還是挺有用的,比如用它來強迫用戶輸入某個字符串以確認進行某項危險操作,難道不比單純的確認按鈕更有價值嗎?

補充22:INT()函數太簡單的,功能相似的還有CEILING()、FLOOR()和ROUND(),但有些看似不必的地方卻必須用一下,典型的如雙字節字符串函數,又如:PADL(INT(VAL("01")+1),2,"0")。

補充23:ISALPHA()、ISLOWER()、ISUPPER()、ISDIGIT()都是非常簡單的函數,但我們還應該記住有一個ISLEADBYTE()函數。眾所所知,常用漢字都是ISUPPER()的,這是歷史遺留問題,但這僅僅局限於常用漢字,因此,為保險起見,進行中英文混合測試時,應該先用ISLEADBYTE()進行雙字節測試。

補充24:ISEXCLUSIVE()函數判斷當前表/數據庫是否是以獨佔方式打開的。獨佔是執行某些命令(如REINDEX)的必要條件,但有時(如PACK)還必須進行多工作區打開測試,否則可能引發1708錯誤。
問題7:有測試工作表是否在多個工作區中打開的函數嗎?
題外話:PACK真是一個惱人的命令!

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
goto-dream



註冊時間: 2004-05-11
文章: 909


第 4 樓

發表發表於: 星期五 六月 11, 2004 1:42 pm    文章主題: 引言回覆

讀了[夜來香]之《今天,您 VFP 9.0 了嗎? 》,對函數作了一些補充學習:

筆記34:ADOCKSTATE()函數用來獲取所有可停*集成開發環境 (IDE) 、工具欄(或設置了Dockable屬性的表單,僅VFP9)停*狀態。如果用_SCREEN作為軟件的主界面,啟動時可以用它來隱藏所有的的系統工具欄,示例代碼:


LOCAL lnCount, laDock(1)
FOR lnCount = 1 TO ADOCKSTATE(laDock,2)
HIDE WINDOW (laDock(lnCount,1))
ENDFOR



筆記35:AGETCLASS()函數增加了運行時支持(VFP9)。

筆記36:ALLTRIM()、LTRIM()、RTRIM()/TRIM()函數增加了二進制數據類型支持(VFP9)。

筆記37:ASQLHANDLES()函數(VFP9)返回所有的SQL活動連接句柄。

筆記37:AUSED()函數新增參數cTableName以返回指定表的打開情況(VFP9)。

筆記38:CAST()函數(VFP9)是從SQL中借來的通用數據類型轉換函數,主要用於SQL命令。
題外話:為了兼容SQL,CAST()函數開了VFP函數的又一語法先河!

筆記39:CURSORGETPROP()、CURSORSETPROP()、SQLGETPROP()、SQLSETPROP()、DBGETPROP()、DBSETPROP()函數根據新的需要,增加了幾個新的屬性(VFP9)。唉,太多了,以後再學。

筆記40:GETAUTOINCvalue()函數(VFP9)返回自動增量字段的最大值。雖然自動增量字段好處不言而喻,但由於它是只讀的,導致許多狐友對其棄而不用,真是可惜!新增記錄示例代碼:


SCATTER NAME loRecord BLANK
REMOVEPROPERTY(loRecord, "自動增量字段") &&關鍵!
INSERT INTO 表 FROM NAME loRecord

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
goto-dream



註冊時間: 2004-05-11
文章: 909


第 5 樓

發表發表於: 星期五 六月 11, 2004 1:42 pm    文章主題: 引言回覆

筆記41:ISPEN()函數(VFP9)檢測最後的鼠標事件是否是由手寫筆觸發的。

補充25:正如LEN()/LENC(),很多字符串函數都有相應的雙字節函數,通常是在原函數名後多一個字符C,但AT()對應的是AT_C,與它們對應的ATC()和ATCC()函數不區分字母大小寫;雙字節函數都要求其數值參數為整型,否則應該用INT()取整。

補充26:LOADPICTURE()函數主要是為 ActiveX 設計的,因此常常被忽視:


(1)可以用它取得圖片尺寸:
loPicture = LOADPICTURE("圖片文件")
?loPicture.Width / 26.46875
?loPicture.Height / 26.46875
(2)用作某些API調用的圖像參數:
LOCAL lnHWnd, lcName, lcCopy, loPict
DECLARE INTEGER ShellAbout IN Shell32 INTEGER, STRING, STRING, INTEGER
* Shellabout: HWnd, szApp, szOtherStuff, hIcon
lnHWnd = _SCREEN.HWnd
lcName = "我的應用程序"
lcCopy = "Xiolig 版權所有"
loPict = LOADPICTURE("graphics\Logo.BMP")
= ShellAbout(lnHwnd,lcName,lcCopy,loPict.Handle)
CLEAR DLLS ShellAbout



筆記42:MESSAGEBOX()函數也是頗受爭議的,主要是它的定制能力太有限了,小的改進:
(1)首參數改為eMessageText,可以是任何VFP數據類型,VFP會自動調用TRANSFORM()函數將其轉換成字符型,與此類似的還有WAIT語句。
(2)新增參數nTimeout(單位毫秒),超時自動關閉並返回值-1。

筆記43:NEWOBJECT()函數參數cInApplication被重載以接受數值0為參數(VFP9),目的是實例化對像時不觸發其初始化代碼(如Init, Load, Activate, BeforeOpenTables等),同樣,釋放時也不執行其析構代碼(如Destory, Unload等)。
注意:所有的事件和方法也會被抑制,因此不應將其應用於一般的應用程序中。

補充27:OBJTOCLIENT()函數返回對像相對於所在表單的位置和尺寸,當需要用MOUSE命令模擬用戶操作時,可能需要用它來獲取所需的坐標值。

筆記44:OS()函數參數值作了很大擴充,可以返回更詳細的操作系統信息(略)。

補充28:PADL()、PADR()、PADC()函數很簡單,如若不知卻是非常地可惜!

補充29:PARAMETERS()、PCOUNT()函數非常相似,但畢竟不同,一般用後者。

筆記45:PEMSTATUS()函數新增參數值cObject,以獲取子對象的狀態信息。

筆記46:PRINTSTATUS()、SYS(13)函數對Windows控制面版中的打印機已經失效了!

筆記47:QUARTER()函數返回季度值1—4,可以選擇起始月。


筆記48:RAISEEVENTS()函數是用代碼觸發事件的函數,類似的命令有Keyboard和Mouse。

補充30:RAND()函數是用來產生偽隨機數的,通常第一次調用時以-1為參數,以後則省略參數;其返回值為0—1之間的純小數,得到n—m之間隨機數的常用方法:n + RAND() * (m - n)。

補充31:RECCOUNT()函數通常是最快的獲取記錄總數的方法,因為它只記取表頭而不是掃瞄整數數據表;它的缺點是沒有任何統計、過濾能力。另一個快速獲取記錄總數的方法是使用系統變量_TALLY,只是它的應用範圍比較窄,通常只在用SELECT-SQL命令產生臨時表後立即使用。

補充32:RECNO()函數是FOX系列數據庫獨有的函數,高手建議盡可能不用(再進一步的話,數據表的物理順序也是不重要的,沒有關鍵字的數據表不是好的數據表,因為幾乎所有大型數據庫都沒有記錄號的概念)。

補充33:RECSIZE()函數曾經在軟盤時代被廣泛使用,其值是所有字段寬度加一(刪除標記);現在已經沒多大價值了。

筆記49:ADDPROPERTY()、REMOVEPROPERTY()函數彌補了不具有同名方法的類(如EMPTY類)的不足:
(1) 如果類本身已有隱藏或保護屬性的AddProperty方法,則不能對其執行AddProperty()函數。
(2) 只能添加公共屬性的非只讀類,如果屬性已經存在且添加時未指定初始值,則屬性值保持不變。

補充34:RGB()函數主要是用來增強程序的可讀性,等價於 nRed + nGreen * 256 + nBlue * 65536。

補充35:SAVEPICTURE()函數把圖片對像(通常是用LOADPICTURE()函數創建的,也可能是某些OLE對象的成員)中的圖片保存為BMP圖像;覆蓋已有的文件時無提示,即使SET SAFE ON。

筆記50:SEEK()函數是最常用的索引查找函數,類似的有INDEXSEEK()、LOOKUP()函數和SEEK命令;同所有的索引查找一樣:
(1) 不能使用二進制索引(VFP9)(二進制索引主要用於SELECT-SQL優化);
(2) 受EXACT設置影響,但即使SET EXACT ON,也不必用空格補齊查找字符表達式;
(4) 結果與FOUND()相同,但與EOF()不一定相反(主要是受SET NEAR的影響)。

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作