官术网_书友最值得收藏!

3.3 表的基本操作

按前面所述方法分別創建工資表“Gzb.dbf”和增加工資表“ZZ.dbf”,這樣就創建了RSGZK數據庫。其中包含4個表,即RSB(人事表)、Gzb(工資表)、BMDM(部門代碼表)和ZZ(增加工資)表,創建表之后會經常根據需要更改其中的數據。

3.3.1 打開與關閉表

1.打開

操作表前必須打開表,打開有菜單和命令方式兩種。

(1)菜單方式。

例3-8:從“文件”菜單中打開RSB表。

操作步驟如下。

● 選擇“文件”|“打開”選項,或者單擊工具欄中的“打開”按鈕或者按下Ctrl+O組合鍵,彈出“打開”對話框,如圖3-21所示。

圖3-21 “打開”對話框

● 在“查找范圍”下拉列表框中選擇表所在的目錄,在“文件類型”下拉列表框中選擇“表”選項。找到要打開的文件,選中“獨占打開”復選框。

● 雙擊要打開的文件或選中要打開的文件后單擊“確定”按鈕。

表打開后在狀態欄中會顯示表的有關信息,這時可以操作表。

例3-9:在RSGZK數據庫中打開BMDM表。

操作步驟如下。

● 打開數據庫RSGZK,彈出“數據庫設計器”窗口。

● 雙擊BMDM表。

(2)命令方式。

      格式:USE  [<數據庫名!>]|<表文件名>

功能:打開表。

說明:若要打開數據庫表,可以用USE [<數據庫名!>]|<表文件名>命令或者OPEN DATABASE<數據庫名>命令打開數據庫,然后用USE <表文件名>打開表;若打開自由表,則可直接使用USE <表文件名>命令。

例3-10:打開數據庫RSGZK中的RSB表。

      USE  RSGZK! RSB.DBF      &&直接打開數據庫表

或:

      OPEN  DATABASE RSGZK    &&打開數據庫”RSGZK.dbc”
      USE  RSB.DBF             &&打開數據庫中的數據表”RSB.dbf”

例3-11:打開自由表“ZZ.DBF”。

      USE  ZZ.DBF              &&假定ZZ.dbf為一自由表

2.關閉表

完成表的操作后要及時關閉才能及時保存修改,關閉表的方法如下。

(1)菜單方式。

● 選擇“窗口”|“數據工作期”選項,彈出“數據工作期”對話框,如圖3-22所示。

圖3-22 “數據工作期”對話框

● 在“別名”下拉列表框中選擇要關閉的表,然后單擊“關閉”按鈕。

(2)命令方式。

      格式:USE

功能:關閉當前工作區中的表。

3.3.2 顯示表

1.顯示表結構

顯示表結構即列出數據表各字段的名字、類型和寬度等信息。

(1)菜單方式。

打開需要操作的表,然后選擇“顯示”|“表設計器”選項,彈出“表設計器”窗口,其中顯示表的結構。

(2)命令方式。

      格式:LIST|DISPLAY STRUCTURE  [TO PRINTER [PROMPT]|TO FILE <文件名>]

該命令在屏幕上列出指定表的結構,包括記錄個數、記錄長度,以及各字段的名稱、寬度和類型等。LIST為連續顯示,DISPLAY為分屏顯示。

例3-12:在VFP 9.0主窗口顯示“RSB.dbf”表的結構。

在命令窗口中輸入如下命令:

      USE RSB
      LIST STRUCTURE

運行結果如圖3-23所示。

圖3-23 運行結果

2.顯示表記錄

通過USE <表文件名>命令打開表后可以通過字段名來引用字段,VFP 9.0用記錄指針的方式來指定表中記錄。輸入記錄時系統會自動產生一個“記錄號”,即記錄在表文件中的序號。使用USE打開一個表文件時,記錄的指針指向并停留在第1條記錄。當前指針所指向的記錄稱為“當前記錄”,當前記錄號隨記錄指針的改變而改變。

顯示表記錄的兩種方式如下。

(1)菜單方式。

打開表文件后,選擇“顯示”|“瀏覽”選項,顯示表中所有記錄。如果要查看特定記錄,則可以通過數據過濾器篩選。

例3-13:顯示RSB.dbf中出生日期在1973年以后的職工記錄。

操作步驟如下。

● 打開表RSB.DBF,選擇“顯示”|“瀏覽”選項,在彈出的“瀏覽”窗口中顯示表RSB。

● 選擇“表”|“屬性”選項,彈出如圖3-24所示的“工作區屬性”對話框。

圖3-24 “工作區屬性”對話框

● 在“數據過濾器”文本框中輸入篩選表達式“Rsb.出生日期>{^1973-12-31}”,或者單擊“數據過濾器”文本框后的按鈕,在“表達式生成器”對話框中輸入表達式“Rsb.出生日期>{^1973/12/31}”,如圖3-25所示。

圖3-25 輸入表達式

● 單擊“確定”按鈕,回到瀏覽窗口,顯示出生日期在1973年以后的職工信息,如圖3-26所示。

圖3-26 出生日期在1973年以后的職工記錄

例3-14:顯示RSB.dbf表中的姓名、性別和職稱數據。

操作步驟如下。

● 在瀏覽窗口中打開RSB.dbf。

● 選擇“表”|“屬性”選項,彈出“工作區屬性”對話框。

● 選中“允許訪問”選項組中的“字段篩選指點定的字段”單選按鈕。

● 單擊“字段篩選”按鈕,彈出“字段選擇器”對話框,如圖3-27所示。

圖3-27 “字段選擇器”對話框

● 在“所有字段”下拉列表框中選擇所有要顯示的字段,將“姓名”“性別”和“職稱”分別添加到“選定字段”下拉列表框中。

● 單擊“確定”按鈕,關閉“字段選擇器”對話框。

● 在“工作區屬性”對話框中選擇“允許訪問”選項組中的“字段篩選指定的字段”單選按鈕。

● 單擊“確定”按鈕,關閉“工作區屬性”對話框。

● 打開瀏覽窗口,其中顯示“姓名”“性別”和“職稱”3個字段,如圖3-28所示。

圖3-28 定制顯示字段后的顯示結果

(2)命令方式。

      格式 1:LIST  [<范圍>]  [[FIELDS] <表達式表>]  [FOR<條件>]  [WHILE <條件>] [TO
  PRINTER [PROMPT]| TO FILE <文件名>]  [OFF]
      格式2:DISPLAY  [<范圍>]  [[FIELDS] <表達式表>] [FOR<條件>] [WHILE <條件>] [TO
  PRINTER [PROMPT]|TO FILE <文件名>]  [OFF]
      格式3: BROWSE [LAST] [FIELDS <字段表>]  [FOR <條件>] [FREEZE <字段>] [LOCK<
  數值表達式>]

這3個命令均顯示表中的記錄,LIST和DISPLAY命令的區別是如果省略FOR子句或WHILE子句,以及范圍,則LIST默認為所有記錄,即取ALL; DISPLAY默認為當前記錄,即顯示一條記錄。當顯示多條記錄時,DISPLAY分頁顯示,而LIST不分頁,即連續地滾動顯示;BROWSE命令是所有記錄的總瀏覽命令,執行時打開瀏覽窗口。該命令可以添加、刪除和修改記錄,也可以用鼠標或光標鍵移動。其中各選項的含義如下。

● FIELDS:字段名表,指定要顯示的字段,各字段間用英文逗號分開,默認為全部字段。

● FOR和WHILE條件:顯示滿足條件的結果。若選中FOR子句,則顯示滿足所給條件的所有記錄;若選中WHILE子句,則顯示直到條件不成立時為止,這時后面即使還有滿足條件的記錄也不再顯示。

● 范圍:可以是ALL、REST、RECORD N和NEXT N。

● OFF:表示只顯示記錄內容而不顯示記錄號,若省略該項,則同時顯示記錄號和記錄內容。

● TO P RINTER:將顯示結果輸送到打印機打印。

● TO FILE <文件名>:將顯示結果輸送到指定的文件中保存。

例3-15:根據人事表(RSB.DBF)寫出如下操作命令并觀察結果。

● 顯示所有記錄:

      USE  RSB
      LIST                 &&也可以用DISPLAY  ALL命令
      USE

● 顯示前5條記錄:

      USE  RSB
      LIST  NEXT  5         &&也可以用DISPLAY  NEXT  5命令
      USE

● 顯示已婚的男職工的記錄:

      USE  RSB
      LIST  FOR婚否=.T.  and性別="男"
      USE

執行結果如圖3-29所示。

圖3-29 滿足條件的記錄

● 顯示職稱是“教授”人員的姓名、性別及工作日期:

      USE  RSB
      LIST  FIELDS  姓名, 性別,工作日期;
      FOR職稱="教授"
      USE

執行結果如圖3-30所示。

圖3-30 滿足條件的記錄

3.3.3 修改表

1.修改結構

在“表設計器”窗口中可以定義、插入、刪除、修改字段并調整字段的順序等。

(1)插入字段:單擊需要插入字段的位置,單擊“插入”按鈕,在該字段之前插入一個新的字段。輸入相關字段信息后,原字段后面的字段位置按順序后移。

(2)刪除字段:選擇要刪除的字段,單擊“刪除”按鈕。

(3)更改字段內容:單擊要修改處,然后輸入需要修改的內容。

(3)調整字段的順序:在字段名的左邊有一排縱向排列的方形按鈕,需要調整哪個字段的位置則單擊該按鈕,顯示一個上下箭頭的符號。拖動該按鈕,該按鈕所在行的字段放到新的位置。

例3-16:打開“表設計器”窗口修改表RSB的結構,要求在“姓名”和“性別”之間增加“籍貫”字段。其類型為字符型,寬度為10,刪除“出生日期”字段并修改“職稱”字段的寬度為8。

操作步驟如下。

(1)打開RSB.dbf。

(2)選擇“顯示”|“表設計器”選項,彈出“表設計器-rsb.dbf”對話框。

(3)選中“性別”字段,單擊“插入”按鈕,在“姓名”與“性別”之間增加了一行。

(4)在新字段中輸入字段名“籍貫”,在“類型”列中選擇數據類型為“字符型”,在“寬度”列中選擇亮度為“10”,如圖3-31所示。

圖3-31 插入新字段

(5)選中“出生日期”字段,單擊“刪除”按鈕。

(6)選中“職稱”字段,改變寬度為10。

(7)單擊“確定”按鈕,在彈出的提示對話框中單擊“是”按鈕。

2.修改記錄

(1)使用瀏覽窗口。

瀏覽窗口實際上是一個全屏幕編輯窗口,在其中可以查看和修改表記錄。把光標定位在要修改記錄的相應字段上直接修改即可,如圖3-32所示。

圖3-32 在瀏覽窗口中修改記錄

若要編輯備注型和通用型字段,則雙擊對應的字段,打開編輯窗口后修改。

(2)使用EDIT或CHANGE命令。

EDIT和CHANGE命令均可修改當前記錄,按PageDown或PageUp鍵可跳到下一條或上一條記錄,也可用光標定位。

(3)使用成批替換命令。

REPLACE命令可成批有規律地修改字段內容。

      格式:REPLACE [范圍] <字段1> WITH <表達式1>[, <字段2> WITH <表達式2>…] [FOR<
  條件>][WHILE <條件>]

功能:對指定范圍內滿足條件的各記錄,以<表達式1>的值替換<字段名1>的內容,以<表達式2>的值替換<字段名2>的內容,依此類推(備注型和通用型字段除外)。

注意:REPLACE命令的范圍默認為當前記錄。

例3-17:計算Gzb表中所有職工的應發工資(基本工資+崗位津貼+獎金)和實發工資(應發工資-水電-保險)。

命令如下:

      USE RSB
      BROWSE
      REPLACE ALL應發工資WITH基本工資+崗位津貼+獎金  &&替換所有的記錄
      REPLACE ALL實發工資WITH應發工資-水電-保險

說明:如果REPLACE后面沒有范圍子句和FOR條件表達式,則只作用于當前記錄。

例3-18:將Gzb表中應發工資大于3000的職工的保險增加10%。

命令如下:

      USE Gzb
      BROWSE
      REPLACE ALL保險WITH保險*(1+0.10)FOR應發工資>3000

3.3.4 定位表記錄指針

打開表后系統會自動產生唯一一個記錄指針指向當前記錄,定位記錄指針就是根據需要移動記錄指針并使其指向特定的記錄。

1.在瀏覽窗口中移動記錄指針

(1)選擇“文件”|“打開”選項,打開一個表。

(2)選擇“顯示”|“瀏覽”選項,顯示表的記錄。

(3)選擇“表”|“轉至記錄”選項。

定位記錄指針的選項有“第一個”“最后一個”“上一個”“下一個”“記錄號”和“定位”,如圖3-33所示。

圖3-33 定位記錄指針的選項

(4)選擇所需選項。

2.命令方式

(1)指針絕對定位,即將記錄指針定位到指定記錄。

      格式:[GO[TO]] <記錄號>|TOP|BOTTOM|<數值表達式>|<整數>

功能:將一個已打開的表文件記錄指針移到指定的記錄處。

選用TOP,指針定位到首記錄;選用BOTTOM,指針定位到末記錄。<記錄號>定位到指定的記錄,<數值表達式>定位到表達式值指定的記錄,<整數>定位到整數值指定的記錄。

例3-19:打開RSB表,在命令窗口中執行以下命令并觀察結果。

      GO TOP          &&將記錄指針移到第1條記錄
      ?RECNO()        &&此時顯示當前記錄號為1
      GO BOTTOM       &&將記錄指針移到最后1條記錄
      GO  5            &&將記錄指針移到第5條記錄
      ?RECNO()        &&此時顯示當前記錄號為5

(2)指針相對定位,即以當前記錄位置為基準向前或向后移動記錄指針。

      格式:SKIP ±<數值表達式>

功能:以當前記錄為基準將記錄指針向前或向后移動,移動記錄個數由<數值表達式>的值確定,為正時向后移動;為負時向前移動。若省略<數值表達式>,則系統默認表達式值為1。

例3-20:打開RSB表,在命令窗口中執行以下命令并觀察結果。

      GO    3          &&將記錄指針移到第3個記錄
      SKIP  2          &&將記錄指針向后移動兩條記錄,即現在指向第5條記錄
      ?RECNO()        &&此時記錄號為5
      SKIP  -1         &&將記錄指針向前移動1條記錄,即現在指向第4條記錄
      SKIP             &&將記錄指針向后移動1條記錄,即現在指向第5條記錄

(3)查詢定位。

      格式:LOCATE  [<范圍>]  FOR <條件>|WHILE <條件>

功能:搜索滿足條件的第1條記錄。若找到,記錄指針指向該記錄;若找不到,搜索后主窗口的狀態欄中顯示“已定位范圍末尾”,此時記錄指針指向文件結束處。如果沒有指定范圍,則默認為ALL。若找到記錄后要繼續查找滿足<條件>的記錄,則必須用CONTINUE命令。此時若找到,函數FOUND()返回.T.;否則返回.F.。

例3-21:在RSB表中查詢男講師的姓名、工作日期和部門代碼。

命令序列如下:

      USE   RSB
      LOCATE   FOR   職稱= "講師"  AND  性別="男"  &&查找男講師的記錄
      ?FOUND( )                        &&查看是否找到
      DISPLAY姓名,工作日期, 部門代碼  &&顯示查找到的記錄且只顯示指定字段
      CONTINUE                         &&繼續查找
      DISPLAY姓名,工作日期, 部門代碼  &&顯示找到結果,若未找到,則不顯示數據

3.3.5 插入與刪除表記錄

1.插入記錄

      格式:INSERT  [BLANK] [BEFORE]

功能:在當前表的指定位置上插入一條新記錄。

說明:若給出BLANK選項,則插入一條空記錄;否則進入數據記錄輸入窗口;若給出BEFORE選項,則在當前記錄前面插入一條新記錄。即插入的新記錄成為當前記錄,原來的當前記錄及其后面記錄的記錄號均加1,否則在當前記錄的后面插入一個新記錄。

2.追加記錄

(1)命令方式。

      格式:APPEND  [BLANK]

功能:在當前表的末尾追加一條新記錄。

說明:若選用BLANK選項,則追加一條空記錄到表尾。該命令在當前表尾增加新記錄。而INSERT命令可以在指定位置增加新記錄,兩個命令的屏幕操作方式相同。

(2)菜單方式。

例3-22:在RSB表中追加4條記錄。

操作步驟如下。

● 打開RSB表,選擇“顯示”|“瀏覽”選項,打開瀏覽窗口。

● 選擇“顯示”|“追加方式”選項,如圖3-34所示,在RSB表的末尾添加一條空記錄并顯示輸入框。

圖3-34 “追加方式”選項

● 輸入數據,輸入一條記錄后系統自動追加下一條記錄,直到輸入4條記錄后保存。

3.刪除記錄

為要刪除的記錄添加刪除標志(*),即邏輯刪除。并沒有真正被刪除,需要時仍可以恢復。將有刪除標志的記錄從表文件中徹底刪除,即物理刪除。記錄一旦被物理刪除,則無法恢復,因此在物理刪除時一定要慎重。

(1)在瀏覽或編輯窗口中實現。

例3-23:在Rsb表中邏輯刪除第1、3、4、9條記錄,然后恢復第1、3、4條記錄并徹底刪除第9條記錄。

操作步驟如下。

● 依次單擊第1、3、4、9條記錄左邊的小方框,為這些記錄添加刪除標記,結果如圖3-35所示。

圖3-35 添加刪除標記

● 單擊第1、3、4條記錄左邊的小方框,恢復這3條記錄,如圖3-36所示。

圖3-36 邏輯恢復結果

● 選擇“表”|“徹底刪除”選項,彈出如圖3-37所示的確認刪除提示對話框。單擊“是”按鈕,徹底刪除第9條記錄。

圖3-37 確認刪除提示對話框

例3-24:在Rsb表中邏輯刪除男職工的記錄。

操作步驟如下。

● 選擇“表”|“刪除記錄”選項,彈出“刪除”對話框,如圖3-38所示。

圖3-38 “刪除”對話框

● 輸入刪除條件、選擇刪除記錄范圍,這里將范圍選擇為“ALL”。

● 單擊For后面的按鈕,彈出“表達式生成器”對話框,如圖3-39所示。

圖3-39 “表達式生成器”對話框

● 通過輸入或選擇的方式構造表達式Rsb,性別="男",單擊“確定”按鈕。回到瀏覽窗口,可以看到滿足條件的記錄均添加了刪除標記。

(2)命令方式。

● 為記錄加刪除標志。

      格式:DELETE  [<范圍>]  [FOR<條件>]  [WHILE <條件>]

功能:為指定的記錄添加刪除標志,若不選擇可選項,則僅為當前記錄添加刪除標志。

● 取消刪除標記(恢復)。

      格式:RECALL  [<范圍>]  [FOR<條件>]  [WHILE<條件>]

該命令取消指定記錄上的刪除標志,若不選擇可選項,則僅取消當前記錄的刪除標志。

● 物理刪除記錄。

      格式:PACK

功能:該命令清除所有帶刪除標志的記錄。

● 刪除全部記錄。

      格式:ZAP

功能:該命令刪除當前表的全部記錄,只留下表結構。

例3-25:執行以下命令并觀察結果。

      USE  Rsb
      BROWSE
      DELETE   ALL             &&邏輯刪除所有記錄
      RECALL FOR性別="女"    &&把已邏輯刪除、性別為女的記錄恢復,結果如3-40所示
      PACK                     &&將具有刪除標記的記錄永久刪除,結果如圖3-41所示

圖3-40 顯示結果(1)

3.3.6 復制表

復制表文件即得到一個已有表文件的一個副本,這是保護數據常用的安全措施之一。通過復制還能在已建表文件的基礎上,靈活方便地產生新的表文件或新的表文件結構。

1.復制表的結構

      格式:COPY STRUCTURE TO <文件名> [FIELDS <字段名表>]

功能:僅復制當前表文件的結構,不復制其中的記錄。若有可選項FIELDS<字段名表>,則復制的新表文件結構只包含其中指定的字段。

2.復制表

      格式:COPY TO <文件名> [<范圍>] [FIELDS<字段名表>] [FOR<條件>] [WHILE <條件>]
  [[TYPE]SDF|DELIMITED|XLS] [WITH  定界符|BLANK]

功能:將當前表的記錄數據和結構復制到一個指定表中或生成其他格式的文件。

說明:如果命令中各可選項省略,則復制所得的新表文件為當前表文件的一個副本,若選擇SDF或DELIMITED,則復制為文本文件;若選擇XLS,則復制為Excel文件。

例3-26:將Rsb表中的女職工復制到新表FEMALE.dbf中,并將表中講師的記錄生成一個文本文件NEW.txt。

      USE  Rsb
      COPY  TO  FEMALE  FOR性別="女"
      &&將性別為“女”的記錄復制到表FEMALE.DBF中
      COPY  TO  NEW  FOR  職稱="講師"  SDF
      &&將職稱為“講師”的記錄復制到文本文件NEW.TXT中
      USE                                  &&關閉Rsb表
      USE   FEMALE                         &&打開新表FEMALE
      LIST                                 &&查看表FEMALE中的記錄
      TYPE  NEW.TXT                        &&查看文本文件NEW中的內容

復制結果如圖3-42所示。

圖3-42 復制表的結果

主站蜘蛛池模板: 新昌县| 乡城县| 岗巴县| 客服| 兰州市| 宿松县| 启东市| 屏山县| 龙岩市| 博客| 姚安县| 博罗县| 济南市| 湘西| 汝南县| 宝鸡市| 平泉县| 富锦市| 郎溪县| 那坡县| 华宁县| 河北省| 海城市| 武平县| 南靖县| 张家港市| 遂昌县| 清河县| 皋兰县| 郎溪县| 长兴县| 邵阳市| 山东省| 乐东| 湘乡市| 旌德县| 渭源县| 浦城县| 陇川县| 衡水市| 永善县|