




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章VisualFoxPro6.0基礎知識PAGEPAGE37VisualFoxPro6.0基礎知識本章介紹VisualFoxPro的發展、特點、窗口、啟動與退出,VisualFoxPro中的表達式及一些常用函數的應用?!?.1VisualFoxPro6.0操作環境VisualFoxPro6.0是Microsoft公司1998年發布的可視化編程語言集成包VisualStudio6.0中的一員,它是在VisualFoxPro2.5的基礎上發展成熟的。2.1.1VisualFoxPro6.0簡介XBASE(dBASE,FoxBASE,FoxPro,VisualFoxPro)數據庫管理系統在我國具有廣泛的應用基礎,隨著版本不斷更新,增加了許多新功能。其中VisualFoxPro6.0是Microsoft公司1998年發布的新數據庫管理系統,該軟件使用方便,操作靈活,功能完備,是深受用戶歡迎的一個數據處理軟件。1992年,dBASE和FoxPro的一場官司,導致這兩家公司都被其他公司收購。微軟收購了FoxSoftware公司,把FoxPro納入自己的產品線。它利用自身的技術優勢和巨大的資源,1993年,Microsoft公司推出了FoxPro2.5,該產品是一個跨平臺產品,能夠在MS-DOS和Windows等多種操作系統下運行。不久又推出了FoxPro2.6,此時的FoxPro是領先于任何其他微機數據庫管理軟件的優秀產品。
1995年6月,微軟推出了可視化產品VisualFoxPro3.0版。接著又很快推出VisualFoxPro5.0及其中文版,又于1998年發布了可視化編程語言集成包VisualStudio6.0,本課程介紹的VisualFoxPro6.0(中文版)就是其中的一員。它是運行于Windows95/98/Me,WinNT4.0/2000/XP平臺的32位數據庫開發系統。它能充分發揮32位微處理器的強大功能,是直觀易學的編程工具。FoxPro產品一直作為我國普及教育數據庫的軟件,具有廣泛的用戶群。
VisualFoxPro6.0是為數據庫結構和應用程序開發而設計的功能強大的面向對象的編程環境。無論是組織信息、運行查詢、創建集成的關系型數據庫系統,還是為最終用戶編寫功能全面的數據管理應用程序,VisualFoxPro6.0都可以提供管理數據所需的工具,還可以在應用程序或數據庫開發的任何一個領域中提供幫助。VisualFoxPro6.0所具有的速度、功能和靈活性,是普通數據庫管理系統無法比擬的,它把我們帶入了一個XBASE的新時代。1、VisualFoxPro6.0的特點(1)簡單、易學、實用、方便,便于掌握和再開發=1\*GB3①標準的Windows程序界面VisualFoxPro是一個標準的Windows程序,如圖2-1所示。VisualFoxPro改進了用戶界面,其主窗口與其他Microsoft產品十分類似。建立字段、填入數據、修改數據、查詢數據庫、程序設計都在不同的窗口中完成。不像以前DOS版本只有一個枯燥無味的文字窗口。另外,用戶可以對VisualFoxPro系統自身定制工具欄,也能夠為編寫的應用程序定義工具欄。=2\*GB3②大量使用可視化的界面操作工具VisualFoxPro可提供向導(wizard)、生成器(builder)和設計器(designer)等三種界面操作工具,達40種之多。它們普遍采用圖形交互界面方式,能幫助用戶以簡單的操作快速完成各種查詢和設計任務。VisualFoxPro的設計器普遍配有工具欄和彈出式的快捷菜單。每個工具按鈕對應一項功能,用戶可通過它們方便地完成操作或設計控件,不必編程或很少編程即可實現美觀使用的應用程序界面。=3\*GB3③強大的項目管理器和資源統一控制在使用項目管理器時,我們可以對項目及數據進行更強的控制。我們可以使用源代碼管理產品,同時可以在“項目管理器”中看到組件的狀態??梢越柚绊椖抗芾砥鳌眲摻ê图泄芾響贸绦蛑械娜魏卧?;也可以訪問所有向導、生成器、工具欄和其他易于使用的工具。因此,可以說它提供了一個進行集中管理的環境。(2)功能更強大=1\*GB3①大型數據庫的框架結構無可置疑,VisualFoxPro的數據庫功能得到了很大的擴展。在VisualFoxPro中,原來的DBF文件變成了數據庫中的一個表,不屬于任何數據庫的表稱為自由表。數據庫是由若干個表、表之間的關系和觸發程序的集合,合理地體現了關系型數據庫的思想,與關系數據庫理論統一起來了。新的數據庫把有關系的表都放在一起,關系清晰、合理且處理方便。②支持面向對象編程的能力早期的Xbase數據庫語言只支持面向過程的程序設計(結構化程序設計)。VisualFoxPro除繼續支持標準的面向過程的程序設計方式,但更重要的是它現在提供真正的面向對象程序設計的能力。借助VisualFoxPro的對象模型,用戶可以利用面向對象程序設計的編程特性:繼承性、封裝性、多態性和子類。而且VisualFoxPro6.0提供了兩種類型近30個類,包括表單、工具欄、頁格式等等,用戶也可以自定義類,這樣就可以減少編程的工作量,同時便于維護。③可利用數量眾多的ActiveX控件ActiveX控件是可編程元素的新名稱,以前稱為OLE控件、OCX或OLE自定義控件。ActiveX控件與固有控件相同,可以把它放在表單上,使用戶能夠加強同一個應用程序的交互能力。ActiveX控件具有事件,并且可以集成到其他控件中。這些ActiveX控件具有OCX的擴展名,而且,互聯網上的ActiveX控件數不勝數。在VisualFoxPro6.0中可以充分利用現成的控件資源節省投入成本,加快開發進度,提升軟件功能。④VisualFoxPro的獨特技術RushmoreVisualFoxPro使用了Rushmore技術。Rushmore是一種從表中快速地選取記錄集的技術,它可將查詢響應時間從數小時或數分鐘降低到數秒,顯著地提高了查詢的速度。數據庫中的數據已不僅限定于文字或數字,還可加入影像、聲音,或是直接從別的應用程序中嵌入OLE數據,這樣數據的內容就沒有限制了,用戶也可以建立出美觀的多媒體數據庫。VisualFoxPro的數據存取與集成能力是非常強大的。通過內建的32位ODBC驅動程序,VisualFoxPro幾乎能存取市場上所有的商用主流數據庫服務器。此特性使其容易與Office及VisualStudio的其他產品集成,構成企業最佳的整體解決方案。(3)支持網絡應用VisualFoxPro6.0既使用于單機環境,也適用于網絡環境。其網絡功能主要包括:支持客戶/服務器結構,既可訪問本地計算機,也支持對服務器的瀏覽。對于來自本地、遠程或多個數據庫表的異種數據,VisualFoxPro6.0可支持用戶通過本地或遠程視圖訪問與使用,并在需要時更新表中的數據。在多用戶環境中,VisualFoxPro6.0還允許建立事務處理程序來控制對數據的共享,包括支持用戶共享數據,或限制部分用戶訪問某些數據等。在新版本的VisualFoxPro中internet的應用得到了很大的加強。MicrosoftVisualFoxPro6.0現在支持OLE拖放,用戶可以在VisualFoxPro和其他應用程序之間、以及在VisualFoxPro應用程序內部移動數據。因此,使用VisualFoxPro6.0可以很容易地創建與Internet一起使用的應用程序,也使得創建與其他基于Windows應用程序(如MSExcel和MicrosoftVisualBasic)一起使用的應用程序變得很容易。使用VisualFoxPro6.0甚至可以創建由ActiveDocument宿主程序(如Internet瀏覽器)所包容的ActiveDocument。(4)同其他軟件的高度兼容性如果有VisualFoxPro先前版本的文件,只要打開他們,就會出現VisualFoxPro轉換對話框。同時,可把其他數據源移到VisualFoxPro表中,如果有電子表格或文本文件中的數據(比如MicrosoftExcel及Word),使用VisualFoxPro,可以方便地實現數據共享,利用DBASEⅢ、DBASEⅣ、FoxBase、早期版本的FoxPro所建立的數據庫及開發的應用程序,可完全不經修改而直接在VisualFoxPro中執行。VisualFoxPro可以同其他Microsoft軟件共享數據,例如用戶可用自動OLE來嵌入其他軟件中的對象并在VisualFoxPro中使用這些軟件。=1\*GB3①同其他軟件共享數據在VisualFoxPro中同其他軟件共享數據較為簡單。用戶可以用“主元表向導”使Excel共享VisualFoxPro數據,還可以用“郵件合并向導”使Word可共享VisualFoxPro數據。=2\*GB3②導入和導出數據用戶能夠在VisualFoxPro和其他軟件之間輸入和輸出數據,即導入和導出。導入數據是指VisualFoxPro利用其他軟件生成的數據。導出數據是指VisualFoxPro生成一定格式的數據以供其他軟件使用。這種導入、導出是通過不同的文件格式的轉換來實現的,不同的文件格式包括文本、電子表格和表。在VisualFoxPro中,用戶可用“導入向導”來幫助決定使用哪一種文件格式。=3\*GB3③使用自動OLE控制其他軟件VisualFoxPro提供的自動OLE能夠加強用戶應用程序的功能。用戶可以通過編程來運行其他的軟件。例如用戶可以調用Excel來完成某些計算。如果VisualFoxPro的功能不能滿足用戶的某些特定的要求,則可以啟動其他標準的Windows程序來增強程序的功能。2.1.2VisualFoxPro啟動VisualFoxPro和啟動任何一個Windows標準程序是完全一樣的,既可以雙擊用戶在桌面自定義的VisualFoxPro快捷方式圖標,也可從開始菜單逐層進入至VisualFoxPro菜單,單擊后即可啟動。圖2-1VisualFoxPro主窗口啟動VisualFoxPro之后,首先會看到VisualFoxPro的版權信息窗口。經過幾秒鐘的時間,VisualFoxPro的集成開發環境就會出現在屏幕中。如圖2-1所示。圖2-1VisualFoxPro主窗口2.1.3VisualFoxPro的窗口VisualFoxPro6.0主窗口界面由窗口、圖標、菜單與對話框組成,如圖2-1所示,現分述如下。VisualFoxPro6.0啟動后,屏幕上就會出現一個程序窗口,程序窗口通常由以下幾個部分組成:1、系統菜單圖標單擊左上方的狐貍圖標,就會出現窗口的系統控制菜單。它用以控制整個窗口的大小與位置等,雙擊該圖標也可將整個窗口關閉。2、標題欄所有的窗口都有一標題欄,顯示此應用程序的名稱。如上圖2-1所示,應用程序名稱為MicrosoftVisualFoxPro6.0。3、窗口狀態調整按鈕窗口狀態按鈕包括:最小化按鈕、還原/最大化按鈕、關閉按鈕,4、菜單欄VisualFoxPro6.0的主菜單,包含所有的VisualFoxPro6.0命令。用鼠標點擊時,會出現下拉式菜單,供用戶執行需要的功能。其選項會依據當前的操作不同而改變。5、工具欄菜單欄下方是工具欄,從圖案上可以看出有何種功能。對于經常使用的指令,直接利用工具條來執行,將會非常方便快捷。它不需記憶功能鍵,也不需在菜單上多層次選取,而且提供了更快速的命令選取接口。其上的圖案也會依據目前的操作不同而改變。使用時,只需在工具上用鼠標左鍵單擊,即可執行此工具代表的指令。每種設計器都有一個或多個工具欄,可以很方便地使用大多數常用的功能或工具操作。例如,表單設計器就有分別用于控件、控件布局以及調色板的工具欄。工作時,用戶可以根據需要在屏幕上放置多個工具欄。通過把工具欄停放在屏幕的上部、底部或兩邊,定制工作環境。VisualFoxPro6.0能夠記住工具欄的位置,再次進入VisualFoxPro6.0時,它將位于關閉時所在的位置。若要顯示工具欄,可從【顯示】菜單中選擇【工具欄】,在“工具欄”對話框中,選擇要使用的工具欄,再選擇【確定】即可。如圖2-2所示。圖圖2-2工具欄對話框如要停放工具欄,將工具欄拖到屏幕的頂部、底部或兩邊即可。位于窗口最下面的一行是狀態條,用來顯示目前VisualFoxPro6.0的信息。窗口工作區,也叫做主窗口,可以顯示程序執行的結果和各種工具欄、面板、表單。6、命令窗口在該窗口中可以輸入VisualFoxPro的各類命令并執行。命令窗口可以顯示和隱藏,具體操作是:執行【窗口】菜單中的【隱藏】可以關閉該窗口,此時再執行【窗口】菜單中的【命令窗口】可以打開該窗口。2.1.3VisualFoxPro的退出有四種方法可以退出VisualFoxPro,用戶可以根據自己的習慣,任選其中一種方法:①用鼠標左鍵單擊VisualFoxPro標題欄最右面的關閉窗口按鈕。②從【文件】下拉菜單中選擇【退出】選項。③單擊主窗口左上方的狐貍頭圖標,從窗口下拉菜單中選擇【關閉】,或者按Alt+F4鍵。在命令窗口中鍵入QUIT命令,單擊Enter鍵?!?.2常量和變量
常量在程序執行的過程中是固定不變的數據,而變量在程序執行過程中卻允許隨時改變其值。VisualFoxPro6.0定義了常量、用戶內存變量、系統內存變量和字段變量等。2.2.1常量常量是一個命名的數據項,在整個操作過程中是固定不變的數據。它具有數值型、字符型、日期型及日期時間型、邏輯型和貨幣型等多種類型。
1、數值型常量
數值型常量也就是常數,用來表示一個數量的大小,整數、小數或用科學計數法表達的數都是數值型常量,例如10,-100,2.451,0.223E1。2、字符型常量字符型常量是用單引號、雙引號或方括號等定界符括起來的字符串,例如“甘肅林業職業技術學院”,[數據庫],“123.4”。VisualFoxPro6.0字符串的最大長度為254個字符。當某一種定界符本身是字符型常量的組成部分時,則必須選用另一種定界符,例如["I’mastudent."]。3、日期型及日期時間型常量日期型常量必須用花括號括起來,括號內包括年、月、日三部分,每部分之間用分隔符分開。常用的分隔符有斜杠(/)、連字號(-)、句點(.)和空格,具體使用何種分隔符,需通過SETMARKto[/|-|.|]命令來設置。日期時間型常量的寫法為{12/30/9918:50},空白的日期時間可表示為{/:}。注意:日期和時間數據間必須有空格。
還有一種“嚴格的日期格式”為:{^yyyy-mm-dd[,][hh[:mm[:ss]][a|p]]}格式中的符號^表明該日期格式是嚴格的,并按照YMD的格式來解釋日期和日期時間。4、邏輯型常量
邏輯型常量只有邏輯真和邏輯假兩種值,.T.,.t.,.Y.,和.y.都表示真;.F.,.f.,.N.和.n.都表示假。5、貨幣型常量
貨幣型常量以$符號開頭,并四舍五入到小數4位。例如貨幣型常量$123.45678,計算結果為$123.4568。2.2.2變量
變量是程序基本單元,在命令操作和程序運行過程中其值允許變化的量稱為變量,變量包括內存變量、字段變量和系統內存變量3種。
1、內存變量
內存變量可用來存儲數據,定義內存變量時需為它命名并賦初值,內存變量建立后存儲于內存中。內存變量有簡單內存變量和數組兩類,簡單變量可以直接使用,而數組必須先定義后使用。(1)簡單內存變量
在VisualFoxPro6.0中除了字段和文件外,所有的用戶命名,如內存變量、函數的命名,都必須遵守這樣的規則:以字母(也可以是漢字)或下劃線開頭,由字母、數字、下劃線組成,長度不能超過128個字符,不能與系統保留字同名。(2)數組
數組是按一定順序排列的一組內存變量,數組中的各個變量稱為數組元素,數組必須先定義后使用。數組的引入,不僅可以大大提高運算速度,而且使許多復雜的編程問題變得非常簡單。VisualFoxPro6.0中的數組用起來比較方便靈活。主要有以下特點:
在一般高級語言中,同一數組各元素的類型必須相同。而VisualFoxPro6.0不僅允許同一數組的元素取不同類型,而且同一個元素的前、后類型也允許改變。
數組變量可以不帶下標使用,這時它在賦值語句的左邊和右邊的定義不同,如果它在賦值語句的右邊,則表示該數組第一個元素;如果它在賦值語句的左邊,則表示該數組所有元素。VisualFoxPro6.0數組功能的這一特性,對整個數組賦值或初始化操作十分方便。
數組和數據表之間可相互轉換,即數據表中數據可以轉換為數組數據。反過來,數組數據也可以轉換為數據表中的數據。
使用數組之前要定義。為了避免混淆,內存變量的數組名應與一般內存變量名區別開。數組名的取法和一般的變量名取法相同。命令格式:DIMENSION|DECLARE<數組名>(<下標1>[,<下標2>])[,<數組名>(<下標1>[,<下標2>])……]功能:定義一維或二維數組,及其下標的上界。說明:◆系統規定各下標的下界為1。
如命令“DIMENSIONx(3),y(2,3)”分別定義了數組名為x的一維數組與數組名為y的二維數組。數組x下標的上界為3,由于下界規定為1,因此該數組有3個數組元素,表示為x(1),x(2)與x(3)。對于二維數組,常將第1個下標稱為行標,第2個下標稱為列標,所以二維數組y具有2行3列6個元素,分別表示為y(1,1),y(1,2),y(1,3),y(2,1),y(2,2),y(2,3)?!衾碚撋蟅isualFoxPro6.0中最多可定義65000個數組,且每個數組最多可包含65000個元素,實際上最大數將受可用內存的制約?!魯到M占用的空間是這樣計算的,每個數組元素占18個字節,外加存儲數組描述符的空間。例如y(2,3)的數組至少需要占108(2*3*18=108)個字節。(3)內存變量賦值無論是簡單內存變量還是數組,其賦值方式相同,可通過下列命令實現。命令格式1:STORE<表達式>TO<內存變量列表>命令格式2:<內存變量>=<表達式>功能:計算<表達式>的值,然后將計算結果賦給內存變量,內存變量在賦值時定義了它的值及類型,其類型與所賦的值的類型相同。注:=1\*GB3①
STORE命令的內存變量列表可包括多個內存變量,各變量之間必須用逗號來分隔。該命令可將同一值賦給多個內存變量,而“=”命令僅可為一個內存變量賦值。=2\*GB3②在定義數組時,系統將各數組元素的初值設置為.F.,在使用時用賦值命令可為數組元素逐個地賦初值,也可為整個數組的各個元素賦以相同的初值。如賦值命令“y=2”可為上面定義的二維數組y的6個元素都賦以相同的初值2。=3\*GB3③二維數組中的各元素在內存中按行的順序存儲,而且也可按一維數組來表示其數組元素。如二維數組元素y(1,2)排列在第1行第2列,由于每行有3個元素,所以該元素也可表示為y(2)。【例2.1】簡單變量使用store1.2toa,b
&&定義內存變量atb,數值型,其值分別為1.2store“甘肅林業職業技術學院”tob,c&&定義內存變量b和c,字符型,其值分別為甘肅林業職業技術學院store.t.toc
&&定義內存變量c,邏輯型,其值為真store{^1999-12-30}tod
&&定義內存變量d,日期型,其值為99年12月30日【例2.2】數組變量使用dimensione(2,3)&&定義二維數組變量e,該數組有二行三列,共6個元素:e(1,1)、e(1,2)、e(1,3)、e(2,1)、e(2,2)、e(2,3)。這些元素被定義作邏輯型并賦以初值“.F.”。二維數組元素還可以用單下標表示為:e(1)、e(2)、e(3)、e(4)、e(5)、e(6)。e(1)=1.2&&數組元素e(1),即e(1,1),賦值1.2,其類型已轉換為數值型。e(2)=“甘肅林業職業技術學院”
&&數組元素e(2),即e(1,2),賦值甘肅林業職業技術學院,其類型已轉換為字符型。e(3)=.t.
&&數組元素e(3),即e(1,3),賦“真”值,其類型不變,仍為邏輯型。e(4)={^1995-05-30}
&&數組元素e(4),即e(2,1),賦值日期值,其類型已轉換為日期型。注:
命令后的符號&&,表示該符號后跟隨的是本命令的注釋,只對命令起解釋作用,與命令執行無關??梢杂肦ELEASE和CLEARMEMORY命令同內存變量一起保存到磁盤內存文件(.MEM)中,需要時用RESTORE命令同內存變量一起從磁盤文件中恢復。(4)內存變量的顯示格式1:LISTMEMORY[Like<通配符>][TOPRINTER|TOFILE<文件名>]格式2:DISPLAYMEMORY[Like<通配符>][TOPRINTER|TOFILE<文件名>]功能:顯示內存變量的當前信息,包括變量名、作用域、類型、取值。選用LIKE短語只顯示與通配符相匹配的內存變量。通配符包括*和?,*表示任意多個字符,?表示任意一個字符??蛇x子句TOPRINTER或TOFILE<文件名>用于在顯示的同時送往打印機,或者存入指定文件名的文本文件中,文件的擴展名為.txt。LISTMEMORY一次顯示與通配符匹配的所有內存變量,如果內存變量多,一屏顯示不下,則自動向上滾動。DISPLAYMEMORY分屏顯示與通配符匹配的所有內存變量,如果內存變量多,顯示一屏后暫停,按任意鍵之后再繼續顯示下一屏。【例2.3】將上面兩例中定義的內存變量顯示出來。listmemorylike?
&&內存變量顯示命令?!發ike?”屏幕顯示執行結果為:APubN1.2(1.20000000)BPubC“甘肅林業職業技術學院”CPubL.T.DPubD95.05.30EPubA(1,1)N1.2(1.20000000)(1,2)C“甘肅林業職業技術學院”(1,3)L.T.(2,1)D95.05.30(2,2)L.F.(2,3)L.F.(5)內存變量的清除格式1:CLEARMEMORY格式2:RELEASE<內存變量名表>格式3:RELEASEALL[EXTENDED]格式4:RELEASEALL[Like<通配符>|EXCEPT<通配符>]功能:格式1清除所有內存變量;格式2清除指定的內存變量;格式3清除所有內存變量;在人機會話狀態其作用與格式1相同,如果出現在程序中,則應該加上短語EXTENDED,否則不能刪除公共內存變量;格式4選用Like短語清除與通配符相匹配的內存變量,選用EXCEPT短語清除與通配符不相匹配的內存變量。2、字段變量
字段變量是與表相連的,指表中已定義的任一個列的數據項。例如教師檔案表中的姓名、職稱、畢業學校等,它們屬于字段變量,每一個字段都有可取值。表中有一個記錄指針,它指向的記錄定義為當前記錄,字段變量的值,就是當前記錄指針所指記錄對應字段的值。記錄指針是可以移動的,因此,字段的取值隨著指針的移動而改變,所以它是變量。
3、系統內存變量
系統內存變量是VisualFoxPro6.0自動生成和維護的變量,它們都以下劃線開頭,分別用于控制外部設備(如打印機、鼠標器)等,屏幕輸出格式,或處理有關計算器、日歷、剪貼板等方面的信息。例如:_PEJECT:用于設置打印輸出時的走紙方式。系統默認值是“BEFORE”,即打印前走紙換頁。用戶可將其設置為“NON”,即打印前后都不換頁。§2.3表達式和函數所謂表達式是指用字段變量、內存變量、數據元素、常量、函數或者運算符組合得到的一組有物理意義的式子。表達式分為算術表達式、字符表達式、關系表達式和邏輯表達式等。表達式和常數一樣,是具有數據類型的數據(求值之后),因此表達式各項必須具有相同類型。函數就像命令一樣,是系統內部“編制”好的一段程序。只要調用它,就能得到相應的輸出結果。2.3.1表達式通過運算符將常量、變量、字段、函數連接起來的式子稱為表達式。常量、變量、字段和函數均為最簡單的表達式。1、表達式值的顯示命令格式:?|??<表達式列表>作用:計算表達式的值,并將其顯示在屏幕上。說明:=1\*GB3①“|”表示二者選一,“?”表示換行顯示,“??”表示不換行顯示。=2\*GB3②在<表達式列表>中,各表達式之間用逗號分隔。2、運算符及分類根據運算符的不同功能可劃分為5類:算術運算符、關系運算符、邏輯運算符、字符串運算符和日期型運算符。=1\*GB3①算術運算符算術運算的操作數必須是數值,運算的結果也是數值。算術運算符按照其優先級遞減的次序依次為:()圓括號**或^乘方*,/乘、除%模運算(取余)+,-加、減或單目運算符其中,單目運算符指運算符只在其后面有數據的運算符?!纠?.4】輸入下列表達式?-3**2-5其顯示結果是4.00,?2*7%3^2+3其顯示結果為8?(5+3)/4其顯示結果為2=2\*GB3②字符串運算符+運算符:完全連接運算符,將加號前后的字符串連接起來組成一個新字符串-運算符:不完全連接運算符,將兩個字符串連接成為一個字符串,并將第一個字符串尾部的空格移到新字符串的后面。
$運算符:測試前面的字符串是否包含在后面的字符串中。若是,返回值為真,否則為假。【例2.5】輸入下列命令a=“甘肅林業職業技術學院”b=“信息科學系”c=“甘肅林業職業技術學院信息科學系”?a+b結果為:甘肅林業職業技術學院信息科學系?a-b結果為:甘肅林業職業技術學院信息科學系&&空格移到連接后生成串的尾部?b$c結果為真.T.=3\*GB3③關系運算符關系運算符用于比較運算,即比較同類型表達式的值。如果關系成立,則比較運算的結果取邏輯值“真”,否則取邏輯值“假”。各關系運算符的優先級相同。關系運算符有7種:<小于>大于=相等比較
==字符串全等比較<=小于或等于>=大于或等于<>、#、!=不等于注:1、在比較過程中,>=、<=、<>兩個字符之間不允許有空格。否則將產生語法錯誤。2、關系運算符兩邊的數據類型要一致,只有相同類型的數據才能進行比較。3、字符的比較是根據相應位置ASCII碼值的大小進行的,漢字字符是按機內碼值比較的?!纠?.6】輸入下列命令?”abc”=”ab”&&比較等號右邊字串是否是其左字串的子串.T.&&是其子串,取邏輯值真?”ab=”abc”&&比較等號右邊字串是否是其左字串的子串.F.&&不是其子串,取邏輯值假?”ab”==”abc”&&字串等長并完全相同比較.F.&&不等長取邏輯值假=4\*GB3④邏輯運算符邏輯運算的操作數必須是能得出邏輯值的表達式,運算結果也是邏輯值。若操作數類型不符要求,將會出現“操作符/操作數類型不一致”的出錯提示。按照其優先級遞減的順序依次為:.NOT.、!邏輯非.AND.邏輯與.OR.邏輯或3種邏輯運算的真值表如表2.1所示。
表2.1
邏輯運算真值表A.T..T..F..F.B.T..F..T..F.A.AND.B.T..F..F..F.A.OR.B.T..T..T..F..NOT.A.F..F..T..T.【例2.7】命令窗口輸入下列命令a=1b=2c=.T.?.NOT.a>b.AND.c表達式的結果為:.T.=5\*GB3⑤日期時間運算符日期時間的運算,以運算符+表示數據相加,以運算符-表示數據相減。+運算符:一個日期加上天數-運算符:一個日期減去天數或者兩個日期相減【例2.8】輸入下列命令a=date()?a02/20/06?a+502/25/06?a-302/17/06
3、表達式分類
每個表達式都有確定的值,按照值的數據類型,把表達式分為:數值表達式、字符表達式、日期表達式、邏輯表達式和關系表達式。=1\*GB3①數值表達式數值表達式由數值運算符與數值型常量、數值型變量或數組元素、數值型字段、返回數值型數據的函數組成。數值型數據包括:數值型、浮點型、雙精度型和整型。=2\*GB3②字符表達式字符表達式由字符運算符與字符型常量(字符串)、字符型變量或數組元素、字符型字段、返回字符型數據的函數構成。在字符串中嵌入引號,只需將字符串用另一種定界符括起來即可?!纠?.9】?“姓名=王明”+”.AND.”+”出生日期={^1999.12.30}”運算結果為:姓名=王明.AND.出生日期={^1999.12.30}=3\*GB3③關系表達式關系表達式只有兩個值:真(.T.)和假(.F.)。關系表達式由關系運算符與數值型常量、字符型常量(字符串)、日期或日期時間型常量、數值型變量或數組元素、字符型變量或數組元素、日期或日期時間型變量或數組元素、數值型字段、字符型字段、日期或日期時間型字段、返回數值型數據的函數、返回字符型數據的函數、返回日期或日期時間型數據的函數構成。在一個關系表達式中,關系運算符左右兩端的操作數必須具有相同的數據類型,否則將產生語法錯誤。【例2.10】?9*2+(18-7)/3>17運算結果為:.T.=4\*GB3④邏輯表達式邏輯表達式也只有兩個值:真(.T.)和假(.F.)。
邏輯表達式由邏輯運算符與邏輯型常量:真(.T.)或假(.F.)、邏輯型變量或數組元素、邏輯型字段、返回邏輯型數據的函數、關系表達式構成。例如:.NOT.EOF()其中EOF()為文件記錄指針測試函數,當指針指向文件尾時返回真值,否則返回假值。所以表達式.NOT.EOF()當指針停在非文件尾時取真值,常用作控制循環結束條件。=5\*GB3⑤日期表達式日期表達式由日期運算符與日期或日期時間型常量、日期或日期時間型變量或數組元素、日期或日期時間型字段、返回日期或日期時間型數據的函數構成。VisualFoxPro6.0將無效日期處理成空日期?!纠?.11】輸入下列命令?{^2006/02/18}+2003/10/06?{^2006/02/20}-2001/31/06?{^2006/02/20}-{^2006/01/15}&&結果為兩個日期的間隔天數362.3.2VisualFoxPro6.0中的函數有標準函數和自定義函數兩類,此處只介紹標準函數,自定義函數在第七章介紹。標準函數是由函數名、參數和函數值三個要素組成。函數名起標識作用;參數是自變量,一般是表達式,寫在括號內;函數運算后會返回一個值,稱為函數值。函數值會因參數值而異。注:1、函數的返回值有確定的類型,因而在組成表達式時要特別注意類型匹配問題。2、函數對其參數的類型也有確定的要求,否則將產生類型不匹配的語法錯誤。標準函數按返回值類型可分為:數值型、字符型、日期型和邏輯型四類函數。下面我們介紹一些最常用的函數。1、數值型函數①求絕對值函數格式:ABS(<數值表達式>) 功能:求<數值表達式>的絕對值?!纠?.14】?ABS(-9.8)結果:9.8②求平方根函數格式:SQRT(<數值表達式>)功能:求<數值表達式>的平方根?!纠?.15】:?SQRT(4)結果:2.00③自然指數函數格式:EXP(<數值表達式>)功能:求以e為底的<數值表達式>次方的值。【例2.16】?EXP(5)結果:148.41④自然對數函數格式:LOG(<數值表達式>)功能:求e為底的的<數值表達式>對數的值。【例2.17】?LOG(6)結果:79⑤求最大值、最小值函數格式:MAX(<數值表達式1>,<數值表達式2>)功能:求兩個數值表達式中較大者。格式:MIN(<數值表達式1>,<數值表達式2>)功能:求兩個數值表達式中較小者?!纠?.18】?MAX(4,8),MIN(4,8)結果:84⑥取整數函數格式:INT(<數值表達式>)功能:返回<數值表達式>的整數部分?!纠?.19】?INT(10.15),INT(10.86)結果:1010⑦隨機數函數格式:RAND(<數值表達式>)功能:返回偽隨機數(0到1之間的數)。【例2.20】?RAND()結果:(隨機數)⑧四舍五入函數格式:ROUND(<數值表達式1>,<數值表達式2>)功能:將<數值表達式1>的值四舍五入,<數值表達式2>指明四舍五入位數?!纠?.21】?ROUND(23.5765,3)結果:23.577⑨取余數函數格式:MOD(<數值表達式1>,<數值表達式2>) 功能:返回<數值表達式1>除以<數值表達式2>所得的余數,余數的符號與除數相同,同時如果被除數與除數同號,則函數值為兩數相除的余數;如果被除數與除數異號,則函數值為兩數相除的余數再加上除數的值?!纠?.22】?mod(13,-4),mod(-13,-4)結果:-3-12、字符串函數①求字符串長度函數格式:LEN(<字符表達式>)功能:返回字符表達式值的長度。【例2.23】?LEN(“ABCD”)結果:5②求字符函數格式:CHR(<數值表達式>) 功能:以<數值表達式>的值作為ASCII碼值,返回其代表的字符?!纠?.24】?CHR(85)結果:U③求ASCII碼值的函數格式:ASC(<字符表達式>)功能:返回字符串中第一個字符的ASCII碼值?!纠?.25】?ASC("ACFR"),ASC("A")結果:6565④求子串位置函數格式:AT(<字符表達式1>,<字符表達式2>[,<數值表達式>]功能:如果<字符表達式1>是<字符表達式2>的子串,則返回字符串<字符表達式1>在<字符表達式2>中第<數值表達式>次出現的位置,若不是子串,則返回0?!纠?.26】?AT(“BC”,”ABCD”,1)結果:2⑤取子串函數格式:LEFT(<字符表達式>,<數值表達式>)功能:返回<字符表達式>中左起<數值表達式>值所表示的字符的子串。格式:RIGHT(<字符表達式>,<數值表達式>)功能:返回<字符表達式>中右起<數值表達式>值所表示的字符的子串。格式:SUBSTR(<字符表達式>,<起始位置>[,<長度>])功能:從<字符表達式>中起始位置開始取指定長度的子串?!纠?.27】?left("ABCDEF",4),RIGHT("ABCD",2)結果:“ABCD”“CD”【例2.28】?SUBSTR(“ABCD”,2,3)結果:“BCD”=6\*GB3⑥產生空格函數格式:SPACE(<數值表達式>)功能:返回<數值表達式>的值所表示的空格?!纠?.29】?SPACE(5)結果:“”=7\*GB3⑦刪除空格函數格式:ALLTRIM(<字符表達式>) 功能:去掉字符表達式兩邊的空格。格式:TRIM(<字符表達式>)功能:去掉字符表達式右邊的空格。格式:LTRIM(<字符表達式>)功能:去掉字符表達式左邊的空格?!纠?.30】輸入下列命令Stor“甘肅天水”tox?x結果:“甘肅天水”?ALLTRIM(“甘肅天水”)結果:“甘肅天水”?TRIM(“甘肅天水”)結果:“甘肅天水”?LTRIM(“甘肅天水”)結果:“甘肅天水”=8\*GB3⑧大小寫轉換函數格式:UPPER(<字符表達式>)功能:將小寫字母轉換為大寫。格式:LOWER(<字符表達式>)功能:將大寫字母轉換為小寫?!纠?.31】輸入下列命令?UPPER(“Abc”)結果:“ABC”?LOWER(“Abc”)結果:“abc”3、日期函數①系統日期和時間函數格式:DATE()TIME()DATETIME()功能:DATE()返回系統的當前日期,函數值為日期型。TIME()以24小時制、hh:mm:ss格式返回當前系統時間,函數值為字符型。DATETIME()返回當前系統日期時間,函數值為日期時間型?!纠?.32】?date(),time(),datetime()結果:02/21/0611:18:3302/21/0611:18:33AM②取日函數格式:DAY(<日期表達式>)功能:從<日期表達式>中返回一個用數字表示的本月的第幾天?!纠?.33】輸入下列命令a=date()?day(a)結果:21③取月份函數格式:MONTH(<日期表達式>)功能:從<日期表達式>中返回一個用數字表示的月份。【例2.34】輸入下列命令a=date()?month(a)結果:2④取年份函數格式:YEAR(<日期表達式>)功能:從<日期表達式>中返回年份,返回的結果為四位數值?!纠?.35】?year(date())結果:20064、轉換函數①將字符串轉換為日期函數格式:CTOD(<字符表達式>)功能:將<字符表達式>轉換為日期?!纠?.36】?CTOD(“12結果:1②將日期轉換為字符串函數格式:DTOC(<日期表達式>)功能:將<日期表達式>轉換為字符串?!纠?.37】?DTOC({^1999-12結果:“1③將日期轉換為YYYYMMDD格式字符串格式:DTOS(<日期表達式>)功能:將<日期表達式>轉換為YYYYMMDD格式字符串?!纠?.38】?DTOS({^2006-結果:“200602④數值轉換成字符串函數格式:STR(<數值表達式>[,<長度>[,<小數位>]])功能:將數值<數值表達式>轉換成字符,如果長度大于等于<數值表達式>值的整數部分,則優先滿足整數部分而自動調整小數位;如果長度值小于<數值表達式>值的整數部分位數,則返回一串*號?!纠?.39】?STR(123.4567,7,2),STR(123.4567,2,2)結果:123.46**⑤字符串轉換成數值函數格式:VAL(<字符表達式>)功能:將字符串轉換為數值,遇到非數字字符停止轉換,若字符串的第一個字符是非數字字符,則返回值為0?!纠?.40】?VAL("12.456"),VAL("a12.456")結果:12.460.00⑥宏替換函數格式:&<字符型變量>[.]功能:替換出字符型變量的內容,即&的值是變量中的字符串。如果該函數與其后的字符無明確分界,則要用“.”作函數結束標識。宏替換可以嵌套使用?!纠?.41】輸入下列命令STORE“學籍表”TODBUSE&DB&&相當于USE學籍表XM=”姓名”?&XM-“你好!”&&相當于?姓名-“你好!”韓雪你好!&&字段變量姓名的值是韓雪?XM,&XM&&相當于?XM,姓名姓名韓雪5、測試函數①表文件尾測試函數格式:EOF([<工作區>])功能:記錄指針指向末記錄之后時返回.T.,否則為.F.。②表文件首測試函數格式:BOF([<工作區>])功能:記錄指針指向首記錄之前時返回.T.,否則為.F.。③類型測試函數格式:TYPE(“<字符表達式>”)功能:返回表達式類型,以N,C,D,L等之一表示。=4\*GB3④屏幕行坐標函數格式:ROW()功能:返回光標所在的行坐標,返回值為數值型。=5\*GB3⑤屏幕列坐標函數格式:COL()功能:返回光標所在的列坐標,返回值為數值型。=6\*GB3⑥打印機行坐標函數格式:PROW()功能:返回打印機字頭所在行坐標,返回值為數值型。=7\*GB3⑦打印機列坐標函數格式:PCOL()功能:返回打印機字頭所在列坐標,返回值為數值型。習題二:選擇題1.VisualFoxPro6.0是一個A)8位數據庫開發系統B)16位數據庫開發系統C)32位數據庫開發系統D)64位數據庫開發系統2.退出VisualFoxPro的操作方法是A)從“文件”下拉菜單中選擇“退出”選項B)用鼠標左按鈕單擊關閉窗口按鈕C)在命令窗口
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 腰輪流量計企業ESG實踐與創新戰略研究報告
- 窯外分解窯企業ESG實踐與創新戰略研究報告
- 地平經緯儀企業縣域市場拓展與下沉戰略研究報告
- 自動焊機企業數字化轉型與智慧升級戰略研究報告
- 電動掃地機企業ESG實踐與創新戰略研究報告
- 磷青銅彈簧企業縣域市場拓展與下沉戰略研究報告
- 冰淇淋搖桶及分配器企業縣域市場拓展與下沉戰略研究報告
- 獸醫用器械制造企業ESG實踐與創新戰略研究報告
- 智能家具企業ESG實踐與創新戰略研究報告
- 真空應用設備企業數字化轉型與智慧升級戰略研究報告
- 一年級信息技術下冊 在網上交流信息教學設計 清華版
- 廣東省2024-2025學年佛山市普通高中教學質量檢測政治試卷及答案(二)高三試卷(佛山二模)
- 11.1 杠桿 課件 2024-2025學年教科版物理八年級下學期
- 搶救工作制度課件
- LOGO更換普通夾板作業課件
- 2025年415全民國家安全教育日主題班會課件
- 山東省東營市東營區勝利第一初級中學2024-2025學年九年級下學期一模英語試卷(含答案無聽力原文及音頻)
- 臨床決策支持系統在路徑優化中的實踐案例
- 漢服實體店創業計劃書
- 2025-2030中國滑雪板行業深度調研及投資前景預測研究報告
- 2025年高考數學模擬卷2(新高考Ⅱ卷專用)(解析版)
評論
0/150
提交評論