免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VB基礎教程 - 2

夢清雲(yún)淡社區(qū) - http://sxhouse.org/ » 編程專區(qū) » VB基礎教程

頁: 1 [2] 3

史翔 2005-02-25 10:23:23
re:[b]2.[/b][b]注意事項[/b]...

2.注意事項
(1)   函數(shù)名的命名規(guī)則與變量命名規(guī)則相同;函數(shù)過程必須由函數(shù)名返回一個值。
(2) 如果函數(shù)體內(nèi)沒有給函數(shù)名賦值,則返回對應類型的缺省值,數(shù)值型返回0,字符型返回空字符串。
(3) 函數(shù)過程內(nèi)部不得再定義Sub過程或Function過程。
例:編寫一個計算N!的函數(shù)過程

 

3.Function過程的調用
調用Function過程與調用VB內(nèi)部函數(shù)的方法一樣,即在表達式中寫出它的名稱和相應的實在參數(shù)。
語法:    過程名[實參列表]

注意:(1)必須給參數(shù)加上括號,即使沒有參數(shù)也不可省略括號;
(2)VB中也允許象調用Sub過程一樣來調用Function,但這樣就沒有返回值。
4.調用其他模塊中的過程
 (1)調用窗體中的過程
從窗體模塊的外部調用窗體中的公有過程,必須用窗體的名字作為調用前綴。如:

Call  Form1.Examsub([實參表])
?。?)調用標準模塊中的過程

如果在應用程序中,過程名是唯一的,則調用時不必加模塊名。如果有同名的,則在同一模塊內(nèi)調用時可以不加模塊名,而在其他模塊中調用時必須加模塊名。
 (3)類模塊中的過程
調用類模塊的公有過程時,要求用指向該類某一實例的變量修飾過程,即首先要聲明類的實例為對象變量,并以此變量作為過程名前綴修飾詞,不可直接用類名作為前綴修飾詞。
如:在類模塊Class1中含有過程clssub,變量Democlass是類Class1的一個實例,則調用clssub的方法是:
Dim  Democlass AS New Class1
Call  Democlass.clasub

例:函數(shù)過程與子過程的異同,計算級數(shù)的部分和
  1 + x + x2/2! +……+ xn/n! +……, |xn/n!|


6.3 參數(shù)的傳遞
1.形參與實參的概念
  形參:指出現(xiàn)在Sub 和Function過程形參表中的變量名、數(shù)組名,過程被調用前,沒有分配內(nèi)存,其作用是說明自變量的類型和形態(tài)以及在過程中的角色。形參可以是:
1)除定長字符串變量之外的合法變量名;
2)后面跟()括號的數(shù)組名。
  實參:是在調用Sub 和Function過程時,傳送給相應過程的變量名、數(shù)組名、常數(shù)或表達式。在過程調用傳遞參數(shù)時,形參與實參是按位置結合的,形參表和實參表中對應的變量名可以不必相同,但位置必須對應起來。
    形參與實參的關系:形參如同公式中的符號,實參就是符號具體的值;調用過程:即實現(xiàn)形參與實參的結合,也就是把值代入公式進行計算。
2. 按值傳遞參數(shù)(定義時加ByVal
按值傳遞參數(shù)(Passed By Value)時,是將實參變量的值復制一個到臨時存儲單元中,如果在調用過程中改變了形參的值,不會影響實參變量本身,即實參變量保持調用前的值不變。
3.按地址傳遞參數(shù)(定義時沒有修飾詞或帶關鍵字ByRef
按地址傳遞參數(shù)時,把實參變量的地址傳送給被調用過程,形參和實參共用內(nèi)存的同一地址。在被調用過程中,形參的值一旦改變,相應實參的值也跟著改變。如果實參是一個常數(shù)或表達式,VB會按“傳值”方式來處理。
4.數(shù)組參數(shù)
   VB允許把數(shù)組作為形參出現(xiàn)在形參表中,語法: [b]形參數(shù)組名() [As [/b]數(shù)據(jù)類型]
    形參數(shù)組只能按地址傳遞參數(shù),對應的實參也必須是數(shù)組,且數(shù)據(jù)類型相同。調用過程時,把要傳遞的數(shù)組名放在實參表中,數(shù)組名后面不跟圓括號。在過程中不可 以用Dim語句對形參數(shù)組進行聲明,否則會產(chǎn)生“重復聲明”的錯誤。但在使用動態(tài)數(shù)組時,可以用ReDim語句改變形參數(shù)組的維界,重新定義數(shù)組的大小。
5. 對象參數(shù)
VB中可以向過程傳遞對象,在形參表中,把形參變量的類型聲明為“Control”,可以向過程傳遞控件;若聲明為“Form”,則可向過程傳遞窗體。對象的傳遞只能按地址傳遞。

 

 

 

 
6.4  變量、過程的作用域
1. VB應用程序的組成:
2. 過程的作用域
作用范圍
模塊級
全局級
窗體
標準模塊
窗體
標準模塊
定義方式
過程名前加Private
例:Private Sub my1(形參表)
過程名前加Pubilc 或默認
例:[ Pubilc ] Sub my2(形參表)
能否被本模塊其他過程調用




能否被本應用程序其他模塊調用
不能
不能
能,但必須在過程名前加窗體名。例:
Call 窗體名. My1(實參表)
能,但過程名必須唯一,否則需要加標準模塊名。例:
Call 標準模塊名.My2(實參表)
3. 變量的作用域
作用范圍
局部變量
窗體/模塊級變量
全局變量
 
 
 
窗體
標準模塊
聲明方式
Dim、Static
Dim、Private
Public
聲明位置
在過程中
窗體/模塊的“通用聲明”段
窗體/模塊的“通用聲明”段
能否被本模塊其他過程存取
不能


能否被其他模塊存取
不能
不能
能,但在變量名前加窗體名

4.靜態(tài)變量
用Static聲明的靜態(tài)變量,在每次調用過程時保持原來的值,不重新初始化。而用Dim聲明的變量,每次調用過程時,重新初始化
例:顯示1到5個數(shù)。
5.同名變量
對不同范圍內(nèi)出現(xiàn)的同名變量,可以用模塊名加以區(qū)別。一般情況下,當變量名相同而作用域不同時,優(yōu)先訪問局限性大的變量。
6.5   遞歸過程
1.遞歸的概念
通俗的講,用自身的結構來描述自身就稱為“遞歸”。如對階乘運算的定義就是遞歸的:
n!=n(n-1)!     (n-1)!=(n-1)(n-2)!
2.遞歸子過程和遞歸函數(shù)
    VB 允許一個自定義子過程或函數(shù)過程在過程體的內(nèi)部調用自己,這樣的子過程或函數(shù)就叫遞歸子過程和遞歸函數(shù)。遞歸過程包含了遞推和回歸兩個過程。構成遞歸的條件是:
(1)遞歸結束條件和結束時的值
(2)能用遞歸形式表示,并且遞歸向結束條件發(fā)展。
例:編制程序求fac(n)=n!的函數(shù)
3.注意事項
(1)遞歸算法設計簡單,但消耗的上機時間和占據(jù)的內(nèi)存空間比非遞歸大
(2) 設計一個正確的遞歸過程或函數(shù)過程必須具備兩點:1)具備遞歸條件;2)具備遞歸結束條件
(3) 一般而言,遞歸函數(shù)過程對于計算階乘、級數(shù)、指數(shù)運算有特殊效果。

史翔 2005-02-25 10:23:54
re:[b]第七章[/b][b] VB[/b]...

第七章 VB中的文件操作
7.1    文件系統(tǒng)控件
1. 文件系統(tǒng)控件種類
?。?) 驅動器列表框(DriveListBox):用來顯示當前機器上的所有盤符
 
(2
) 目錄列表框(DirListBox):用來顯示當前盤上的所有文件夾

(3) 文件列表框(FileListBox):用來顯示當前文件夾下的所有文件名
2. 重要屬性
屬性
適用的控件
作用
示例
Drive
驅動器列表框
包含當前選定的驅動器名
Driver1. Drive="C"
Path
目錄和文件列表框
包含當前路徑
Dir1.Path="C:\WINDOWS"
FileName
文件列表框
包含選定的文件名
MsgBox File1.FileName
Pattern
文件列表框
決定顯示的文件類型
File1.Pattern="*.BMP"
3. 重要事件
事件
適用的控件
事件發(fā)生的時機
Change
目錄和驅動器列表框
驅動器列表框的Change事件是在選擇一個新的驅動器或通過代碼改變Drive屬性的設置時發(fā)生
目錄列表框的Change事件是在雙擊一個新的目錄或通過代碼改變Path屬性的設置時發(fā)生
PathChange
文件列表框
當文件列表框的Path屬性改變時發(fā)生
PattenChange
文件列表框
當文件列表框的Pattern屬性改變時發(fā)生
Click
目錄和文件列表框
用鼠標單擊時發(fā)生
DblClick
文件列表框
用鼠標雙擊時發(fā)生
7.2     文件的讀寫
1.  文件的有關概念
 記錄:計算機處理數(shù)據(jù)的基本單位,由若干個相互關聯(lián)的數(shù)據(jù)項組成。相當于表格中的一行。

文件:記錄的集合,相當于一張表。

文件類型:順序文件、隨機文件、二進制文件。

訪問模式:計算機訪問文件的方式,VB中有順序、隨機、二進制三種訪問模式。
2. 順序訪問模式
    順序訪問模式的規(guī)則最簡單,指讀出或寫入時,從第一條記錄“順序”地讀到最后一條記錄,不可以跳躍式訪問。該模式專門用于處理文本文件,每一行文本相當于一條記錄,每條記錄可長可短,記錄與記錄之間用“換行符”來分隔。
順序文件的寫入步驟打開、寫入、關閉;  讀出步驟打開、讀出、關閉。
(1)打開文件
打開文件的命令是Open,格式為:

       Open “文件名” For 模式 As [#] 文件號 [Len=記錄長度]

說明
1)文件名可以是字符串常量也可以是字符串變量
2)模式可以是下面之一:

     OutPut:打開一個文件,將對該文件進行寫操作

    Input:打開一個文件,將對該文件進行讀操作

    Append:打開一個文件,將在該文件末尾追加記錄
3) 文件號是一個介于1-511之間的整數(shù),打開一個文件時需要指定一個文件號,這個文件號就代表該文件,直到文件關閉后這個號才可以被其他文件所使用??梢岳肍reeFile()函數(shù)獲得下一個可以利用的文件號。
       例: Open  "D:\sj\aaa"  For  Output  As  #1    
意思是:打開D:\SJ下aaa文件供寫入數(shù)據(jù),文件號為#1

史翔 2005-02-25 10:24:08
re:[b](2)[/b][b]寫操作[/b]...

(2)寫操作
將數(shù)據(jù)寫入磁盤文件所用的命令是:Write# 或Print#。語法格式:
[b]  1) Print #文件號,[輸出列表][/b]

例: Open “D:\SJ\TEST.DAT” For  Output  As  #1
 Print  #1,Text1.Text        '把文本框的內(nèi)容一次性寫入文件
Close  #1
  2[b]Write #文件號,[輸出列表][/b]
        其中的輸出列表一般指用逗號,分隔的數(shù)值或字符串表達式。Write #與Print #的功能基本相同,區(qū)別是Write #是以緊湊格式存放,在數(shù)據(jù)間插入逗號,并給字符串加上雙引號。
(3)  關閉文件
結束各種讀寫操作后,必須將文件關閉,否則會造成數(shù)據(jù)丟失。關閉文件的命令是Close。

Close [#]文件號[,[#]文件號]……
例: Close  #1,#2,#3
(4) 讀操作
  1) Input #文件號,變量列表
    作用:將從文件中讀出的數(shù)據(jù)分別賦給指定的變量。
注意:與Write #配套才可以準確地讀出。
  2)Line  Input #文件號,字符串變量
用于從文件中讀出一行數(shù)據(jù),并將讀出的數(shù)據(jù)賦給指定的字符串變量,讀出的數(shù)據(jù)中不包含回車符和換行符,可與Print #配套用。
  3)Input$(讀取的字符數(shù),#文件號)
該函數(shù)可以讀取指定數(shù)目的字符。
與讀文件有關的兩個函數(shù):
LOF():返回某文件的字節(jié)數(shù)
EOF():檢查指針是否到達文件尾。
例:將一個文本文件讀入文本框的三種方法。
3.隨機訪問模式
     該模式要求文件中的每條記錄的長度都是相同的,記錄與記錄之間不需要特殊的分隔符號。只要給出記錄號,可以直接訪問某一特定記錄,其優(yōu)點是存取速度快,更新容易。
?。?)  打開與關閉
打開Open “文件名” For Random As [#] 文件號 [Len=記錄長度]

關閉Close  #文件號
       注意:文件以隨機方式打開后,可以同時進行寫入和讀出操作,但需要指明記錄的長度,系統(tǒng)默認長度為128個字節(jié)。
?。?)讀與寫

讀操作Get  [#]文件號,[記錄號],變量名
說明:Get命令是從磁盤文件中將一條由記錄號指定的記錄內(nèi)容讀入記錄變量中;記錄號是大于1的整數(shù),表示對第幾條記錄進行操作,如果忽略不寫,則表示當前記錄的下一條記錄。
       寫操作Put  [#]文件號,[記錄號],變量名
     說明:Put命令是將一個記錄變量的內(nèi)容,寫入所打開的磁盤文件指定的記錄位置;記錄號是大于1的整數(shù),表示寫入的是第幾條記錄,如果忽略不寫,則表示在當前記錄后插入一條記錄。
4.  二進制訪問模式
  打開Open “文件名” For Binary As [#] 文件號 [Len=記錄長度]
    關閉Close  #文件號
     該模式是最原始的文件類型,直接把二進制碼存放在文件中,沒有什么格式,以字節(jié)數(shù)來定位數(shù)據(jù),允許程序按所需的任何方式組織和訪問數(shù)據(jù),也允許對文件中各字節(jié)數(shù)據(jù)進行存取和訪問。
    該模式與隨機模式類似,其讀寫語句也是Get 和Put,區(qū)別是二進制模式的訪問單位是字節(jié),隨機模式的訪問單位是記錄。在此模式中,可以把文件指針移到文件的任何地方,剛開始打開時,文件指針指向第 一個字節(jié),以后隨文件處理命令的執(zhí)行而一旦。文件一旦打開,就可以同時進行讀寫。
7.3     常用的文件操作語句和函數(shù)
1.   FileCopy語句
  格式:FileCopy   源文件名  目標文件名

功能:復制一個文件

說明:不能復制一個已打開的文件
2.   Kill語句
  格式:Kill  文件名

功能:刪除文件

說明:文件名中可以使用通配符 *,?
3.  Name語句
  格式:Name  舊文件名  新文件名

 功能:重新命名一個文件或目錄

 說明:不能使用通配符;具有移動文件功能;不能對已打開的文件進行重命名操作
4. ChDrive語句
  格式:ChDrive  驅動器

 功能: 改變當前驅動器
說明:如果驅動器為空,則不變;如果驅動器中有多個字符,則只會使用首字母
5.MkDir語句
  格式:MkDir  文件夾名

 功能:創(chuàng)建一個新的目錄
6.ChDir語句
  格式:ChDir  文件夾名

 功能:改變當前目錄

 說明:改變默認目錄,但不改變默認驅動器。
7. RmDir語句
  格式:RmDir  文件夾名

功能:刪除一個存在的目錄

說明:不能刪除一個含有文件的目錄
8. CurDir()函數(shù)
  格式: CurDir[(驅動器)]

功能:可以確定任何一個驅動器的當前目錄。

說明:括號中的驅動器表示需要確定當前目錄的驅動器,如果為空,返回當前驅動器的當前目錄路徑。



史翔 2005-02-25 10:24:36
re:第八章 VB中Acti...

第八章          VB中ActiveX控件的使用

8.1  概述

     這里的ActiveX控件是指VB標準工具箱里沒有的控件,用時需從“工程”菜單里選擇“部件…”(或右鍵單擊工具箱,從快捷菜單中選擇“部件…”),從部件窗口里勾上需要的控件。

常用ActiveX控件

ActiveX控件
 ActiveX部件
 文件名
 
TabStrip      頁框
 Windows通用控件

Microsoft  Windows Common Controls 6.0
  路徑:

Windows\system\

Mscomctl.ocx
 
Toolbar       工具欄
 
StatusBar     狀態(tài)欄
 
ProgressBar   進程條
 
TreeView    分層顯示
 
ListView     排列顯示
 
ImageList    圖象列表
 
Slider        滑塊
 
ImageCombo  圖象組合框
 
CommonDialog 通用對話框
 Microsoft  Common  Dialog Control 6.0  
 Comdlg32.ocx
 

MMControl1  多媒體
 Microsoft  Multimedia Control 6.0
 Mci32.ocx
 
MediaPlayer  媒體播放器
 Microsoft  Media Player
 Msdxm.ocx
 

8.1    多選項卡對話框——頁框(TabStrip)

1.  設置頁框的外觀樣式

(1) 先在窗體上畫出一個TabStrip對象;

(2) 右擊該對象,從快捷菜單中選擇“屬性”;

(3) 在TabStrip屬性窗口里選擇通用(General)標簽,在樣式(Style)列表框里選擇樣式;

(4) 在TabStrip屬性窗口里選擇選項卡(Tabs)標簽,在標題(Caption)框里輸入標題和關鍵字;

(5) 如果需要的話,在工具提示文本(ToolTipText)框里輸入提示信息;

(6) 在TabStrip屬性窗口里選擇字體(Font)標簽,設置標題的字體(可以直接采用默認值)。

2.增減標簽總數(shù)

    在TabStrip屬性窗口里選擇選項卡標簽,單擊插入選項卡按鈕增加標簽,單擊刪除選項卡按鈕刪除標簽。

3.在TabStrip上顯示圖形

1) 在窗體里拖入一個圖象列表(ImageList)控件;

2) 在此對象上右擊,選擇屬性,打開屬性頁窗口;

3) 選擇圖象標簽, 單擊插入圖片按鈕,在選定圖片對話框里選擇想使用的位圖或圖標,然后單擊打開按鈕;為每個想添加圖形的選項卡重復此步;

4) 單擊確定按鈕, ImageList里就存儲了需要的圖片。

5) 選擇TabStrip, 進入TabStrip屬性窗口并選擇通用標簽,在圖象列表框里選擇ImageList1;

6) 選擇選項卡標簽,單擊緊挨索引框的向左或向右箭頭以選擇一個Tab序號。在圖象框里輸入一個數(shù),輸入為1,則顯示剛才ImageList控件里的第一個圖形,輸入為2,則顯示剛才ImageList控件里的第二個圖形,單擊確定按鈕完成。

4.在TabStrip上放置其它控件

    在窗體上象添加普通控件一樣,把每一頁需要的控件添上,控件不止一個時,應該用Frame來分組,注意:除了默認的第一頁上的Frame控件外,其他所有Frame的Visible屬性都應該設為假。

5.設計代碼

    在用戶選擇了標簽后,TabStrip要求編寫代碼來顯示或隱藏控件。可用類似下面的代碼來識別用戶在哪一個項目上單擊。

Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.key
Case 1
<選第一項時需要執(zhí)行的代碼>
Case 2
<選第一項時需要執(zhí)行的代碼>
……
End Select
End Sub

例: Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.Key
Case "statubar"
Frame2.Visible = False
Frame1.Visible = True
Case "toolbar"
Frame1.Visible = False
Frame2.Visible = True
End Select
End Sub

8.2    狀態(tài)欄(StatusBar)和工具欄(ToolBar)

1. 狀態(tài)欄的作用與組成

StatusBar 控件由 Panel(窗格) 對象組成,最多能被分成 16 個 Panel 對象,每一個 Panel 對象能包含文本和/或圖片??刂苽€別窗格的外觀屬性包括 Width、Alignment(文本和圖片的)和 Bevel(斜面)。此外,能使用 Style 屬性七個值中的一個自動地顯示公共數(shù)據(jù),諸如日期、時間和鍵盤狀態(tài)等。

2. 創(chuàng)建狀態(tài)欄

先在窗體上畫出一個StatusBar對象,再右擊該對象,從快捷菜單中選擇“屬性”,進入屬性頁設置窗口,進行下面的設置:

(1) 選擇窗格形狀

    在屬性窗口里選擇通用標簽,在樣式列表框里選擇多窗格(缺省形式)或單窗格簡單文本形式。

(2) 添加或刪除狀態(tài)欄窗格

     在屬性窗口里選擇窗格標簽,單擊插入窗格按鈕添加一個窗格,或單擊刪除窗格按鈕刪除一個窗格。

(3) 在單窗格里顯示文本

      在屬性窗口里選擇通用標簽,在簡單文本框里輸入想顯示在狀態(tài)欄窗格里的文本。用代碼顯示的方式是:

    StatusBar1.SimpleText = "要顯示的內(nèi)容"

(4) 在多窗格里顯示文本或圖形

1). 在屬性窗口里選擇窗格標簽,用索引旁的按鈕選擇窗格序號。

2). 在文本框里輸入想顯示在狀態(tài)欄窗格里的文本。用代碼顯示的方式是:StatusBar1.Panels(x).Text = "要顯示的內(nèi)容"

3). 如果想加入圖形,單擊瀏覽按鈕打開一個圖形選擇對話框,選擇想加入的圖形,然后單擊打開按鈕。

(5)  編寫代碼

如果是一個單窗格狀態(tài)欄,當用戶單擊狀態(tài)欄時,只需用下面的事件過程來響應:

Private Sub StatusBar1_Click()
<要執(zhí)行的代碼>
End Sub

     如果是一個多窗格狀態(tài)欄,就需要鑒別用戶單擊的是哪一個窗格,可用下面的事件過程來識別用戶所單擊的窗格:

Private Sub StatusBar1_PanelClick(ByVal Panel As Panel)
Select Case Panel.Index
Case 1
<要執(zhí)行的代碼>
Case 2
<要執(zhí)行的代碼>
……
End Select
End Sub

3.創(chuàng)建工具欄

(1).建立工具欄

1) 在工具箱里單擊工具欄圖標,拖到窗體的任何位置,Visual Basic自動將ToolBar移到頂部。再右擊該對象,從快捷菜單中選擇“屬性”,進入屬性頁設置窗口;

2) 選擇按鈕標簽,單擊插入按鈕,Visual Basic就會在工具欄上顯示一個空按鈕,重復此步插入多個按鈕;

3) 單擊確定按鈕。如果想把按鈕分組,首先插入一個分隔的按鈕,再在對話框里將這個按鈕的樣式屬性改為3-Separator。

(2) 為工具欄增加圖畫

1). 在Visual Basic工具箱里單擊ImageList圖標,并將它拖到窗體的任何位置(位置不重要,因為它總是不可見的),再右擊該對象,從快捷菜單中選擇“屬性”,進入屬性頁設置窗口;

2). 選擇圖象標簽,單擊插入圖片,在選定圖形對話框里選擇想使用的位圖或圖標,然后單擊打開按鈕。為每個想添加圖形的工具欄按鈕重復此步。

3). 單擊確定按鈕。

4). 進入ToolBar屬性對話框,選擇通用標簽,在圖象列表框里選擇剛才添加的ImageList控件。

5). 選擇按鈕標簽,單擊緊挨Index框的向左或向右箭頭以選擇一個按鈕序號。出現(xiàn)在工具欄最左邊的按鈕序號為1。

6). 在Image框里輸入一個數(shù),輸入為1,則顯示剛才ImageList控件里的第一個圖形,輸入為2,則顯示剛才ImageList控件里的第二個圖形。

7). 為每個按鈕重復第6步, 單擊確定按鈕,現(xiàn)在Visual Basic就會在工具欄上顯示精美的圖形了。

(3)為工具欄添加文本信息

      在ToolBar屬性對話框中選擇按鈕標簽,在標題框里輸入想顯示在按鈕上的文本。

(4)添加ToolTips

       ToolTips是一種當點到工具按鈕時彈出的小標簽。ToolTips很方便,可以告訴那些新手每個按鈕是干什么用的。在ToolBar屬性對話框中選擇按鈕標簽,在工具提示文本框里輸入想作為ToolTip的文本。

(5)編寫代碼

        雙擊工具欄,以下面的格式輸入代碼就可以了:

           Private Sub Toolbar1_ButtonClick(ByVal Button As Button)
Select Case Button.Index
Case 1
<要執(zhí)行的代碼>
Case 2
<要執(zhí)行的代碼>
……
End Select
End Sub

8.3    進程條(ProgressBar)和滑塊(Slider)

1. 進程條

   作用:進程條控件用于監(jiān)視操作完成的進度。

   創(chuàng)建:在窗體上畫出進程條控件,右擊,選擇屬性,然后進行所需的外觀設置。

   主要屬性:ProgressBar 控件有一個行程和一個當前位置。行程代表該操作的整個持續(xù)時間。當前位置則代表應用程序在完成該操作過程時的進度。Max 和 Min 屬性設置了行程的界限。Value 屬性則指明了在行程范圍內(nèi)的當前位置。  

(1)  Min屬性代表進程條全空時的值,缺省時為0。

(2)  Max屬性代表進程條全空時的值,缺省時為100。

(3)  Value屬性代表進程條當前的值(但不出現(xiàn)在屬性窗口中),它大于Min屬性,小于Max屬性。改變Value屬性的值將改變進程條的進度顯示。

    示例:

Private Sub Command1_Click()
If  ProgressBar1.Value < ProgressBar1.Max Then
ProgressBar1.Value = ProgressBar1.Value + 5
Else
ProgressBar1.Visible = False    ‘當進程條滿了的時候讓進程條消失
End If
End Sub

2.滑塊

      Slider 控件是包含滑塊和可選擇性刻度標記的窗口,在窗體上畫出滑塊控件,右擊,選擇屬性,然后進行下列設置:

(1)選擇滑塊的外觀

1)方向屬性決定滑塊的方位,可以是垂直的或水平的滑塊。

2)滑塊樣式屬性決定滑塊標記的樣子。

3)滑塊頻率屬性規(guī)定了沿著滑塊的標記的間隔大小,缺省的狀態(tài)是1,表明每個可能值都出現(xiàn)標記,如果把值設置為3,則每三個可能值出現(xiàn)一個標記。

(2)滑塊的主要屬性及事件

    1)Min,Max屬性

      Min屬性決定滑塊最左端或最頂端所代表的值。Max屬性決定滑塊最右端或最下端所代表的值。

2)LargeChange,SmallChange屬性

     SmallChange決定在滑塊兩端的箭頭鈕上單擊時改變的值。LargeChange決定在滑塊上方或下方區(qū)域單擊時改變的值。

3)Value屬性

     Value屬性代表當前滑塊所處位置的值,這個值由滑塊的相對位置決定。

4)Change事件

      當滑塊位置發(fā)生變化時就引發(fā)了Change事件。

8.4        排列顯示(ListView)控件和分層顯示(TreeView) 控件

1.ListView 控件

象“資源管理器”的右側一樣,可使用四種不同視圖顯示項目。通過此控件,可將項目組成帶有或不帶有列標頭的列,并顯示伴隨的圖標和文本。

    可使用 ListView 控件將稱作 ListItem 對象的列表條目組織成下列四種不同的視圖之一:

    大(標準)圖標   小圖標   列表   報表

     View 屬性決定在列表中控件使用何種視圖顯示項目。還可用 LabelWrap 屬性控制列表中與項目關聯(lián)的標簽是否可換行顯示。另外,還可管理列表中項目的排序方法和選定項目的外觀。

ListView 控件包括 ListItem 和 ColumnHeader 對象。ListItem 對象定義 ListView 控件中項目的各種特性,如: 項目的簡要描述、由 ImageList 控件提供的與項目一起出現(xiàn)的圖標、附加的文本片段,稱作子項目,它們與顯示在報表視圖中的 ListItem 對象關聯(lián)。

     可以使用 HideColumnHeaders 屬性決定是否在 ListView 控件中顯示列標頭。列標頭可以在設計時添加,也可以在運行時添加。設計時,使用 ListView“控件屬性”對話框的“列首”選項卡添加列標頭。運行時,使用 Add 方法添加 ColumnHeader 對象到 ColumnHeaders 集合中。

2.TreeView 控件

     該控件象“資源管理器”的左側一樣,用于顯示結點( Node) 對象的分層列表,每個 Node 對象均由一個標簽和一個可選的位圖組成。TreeView 一般用于顯示文檔標題、索引入口、磁盤上的文件和目錄、或能被有效地分層顯示的其它種類信息。

     創(chuàng)建了 TreeView 控件之后,可以通過設置屬性與調用方法對各 Node 對象進行操作,這些操作包括添加、刪除、對齊和其它操作??梢跃幊陶归_與折回 Node 對象來顯示或隱藏所有子節(jié)點。

     TreeView 控件使用由 ImageList 屬性指定的 ImageList 控件,來存儲顯示于 Node 對象的位圖和圖標。任何時刻,TreeView 控件只能使用一個 ImageList。這意味著,當 TreeView 控件的 Style 屬性被設置成顯示圖像的樣式時,TreeView 控件中每一項的旁邊都有一個同樣大小的圖像。

8.5        多媒體控件

1.  多媒體控件

     Multimedia MCI 控件管理媒體控制接口 (MCI) 設備上的多媒體文件的記錄與回放。從概念上說,這種控件就是一組按鈕,它被用來向諸如聲卡、MIDI 序列發(fā)生器、CD-ROM 驅動器、視頻 CD 播放器和視頻磁帶記錄器及播放器等設備發(fā)出 MCI 命令。MCI 控件還支持 Windows (*.avi) 視頻文件的回放。

       在允許用戶從 Multimedia MCI 控件選取按鈕之前,應用程序必須先將 MCI 設備打開,并在 Multimedia MCI 控件上啟用適當?shù)陌粹o。在 Visual Basic 中,應將 MCI Open 命令放到 Form_Load 事件中。

2.媒體播放器控件

可以播放各種多媒體文件,主要屬性有:

(1) filename(待播放的文件名),可以在屬性窗口中設置,也可以用代碼實現(xiàn)。

(2) AutoStart(是否自動播放),默認是True。

(3) AutoRewind(是否自動循環(huán)),默認是False。

(4) PlayCount(文件播放遍數(shù)),默認是1。

 
 
 
 

 



8.6        圖象列表(ImageList)和 圖象組合框(ImageCombo)

1.圖象列表

    ImageList 控件是包含 ListImage 對象的集合,該集合中的每個對象都可以通過其索引或關鍵字被引用。ImageList 控件不能獨立使用,只是作為一個便于向其它控件提供圖象的資料中心。

ImageList 控件的作用象圖像的儲藏室,同時,它需要第二個控件顯示所儲存的圖像。第二個控件可以是任何能顯示圖像 Picture 對象的控件,也可以是特別設計的、用于綁定 ImageList 控件的 Windows 通用控件之一。這些控件包括ListView、ToolBar、TabStrip、Header、ImageCombo、和 TreeView 控件。為了與這些控件一同使用 ImageList,必須通過一個適當?shù)膶傩詫⑻囟ǖ?ImageList控件綁定到第二個控件。對于 ListView 控件,必須設置其 Icons 和 SmallIcons 屬性為 ImageList 控件。對于 TreeView、TabStrip、ImageCombo、和 Toolbar 控件,必須設置 ImageList 屬性為 ImageList 控件。

一旦 ImageList 與某個 Windows 通用控件相關聯(lián),就可以在過程中用 Index 屬性或 Key 屬性的值來引用 ListImage 對象。

當與 Windows 通用控件一起使用 ImageList 控件時,在將它綁定到第二個控件之前,按照希望的順序將全部需要的圖像插入到 ImageList。一旦 ImageList 被綁定到第二個控件 ,就不能再刪除圖像了,并且也不能將圖像插入到 ListImages 集合中間。但是可以在集合的末尾添加圖像。

2.圖象組合框

      ImageCombo 控件是標準 Windows 組合框的允許繪圖版本??丶斜聿糠种械拿恳豁椂伎梢杂幸环付ǖ膱D片。它可以顯示一個包含圖片的項目列表,每一項可以有自己的圖片,也可以對多個列表項使用相同的圖片。

     除了支持圖片之外, ImageCombo 還提供了一個對象和基于集合的列表控件??丶斜聿糠值拿恳豁検且粋€不同的 ComboItem 對象,而且列表中的所有項組合起來構成 ComboItems 集合。這就使它容易一項一項地指定諸如標記文本、ToolTip文本、關鍵字值以及縮進等級等屬性。

8.7        通用對話框控件

     Windows應用程序里的Open對話框,Save As對話框在各個應用程序里看起來都是一樣的,通用對話框控件就可以提供這些對話框的標準功能。

1.Open對話框及Save As對話框

打開Open對話框使用ShowOpen方法,打開Save As對話框使用ShowSave方法。

Private Sub mnuOpen_Click ()
On Error GoTo ErrorHandler
CommonDialog1.CancelError = True
CommonDialog1.Filter = "Text Files (*.txt)|*.txt|Batch Files (*.bat)|*.bat|All Files (*.*)|*.*"
CommonDialog1.ShowOpen              ' 顯示打開對話框
Call OpenFile(CommonDialog1.FileName)
ErrorHandler:
Exit Sub
End Sub

      其中第三行決定了在文件格式類型欄里出現(xiàn)的文件類型。第五行需要一個自己的打開文件的過程,這個過程需要的參數(shù)就是通用對話框返回的文件名。通用對話框的 CancelError屬性設為True的話,用戶單擊Cancel按鈕將產(chǎn)生一個錯誤信息程序,憑借這個信息程序可以檢測到用戶的放棄操作。

2.Color對話框

    下面的過程可用用戶選擇的顏色作為窗體的底色。

Private Sub mnuColor_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color
CancelButton:
Exit Sub
End Sub

3.Fonts對話框

   下面的過程可用字體對話框改變文本框的字體:

Private Sub mnuFonts_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.Flags = cdlCFBoth ' Flags property must be set to cdlCFBoth
CommonDialog1.ShowFont ' Display Font common dialog box.
Text1.FontName = CommonDialog1.FontName
Text1.FontSize = CommonDialog1.FontSize
Text1.FontBold = CommonDialog1.FontBold
Text1.FontItalic = CommonDialog1.FontItalic
Text1.FontUnderline = CommonDialog1.FontUnderline
Text1.FontStrikethru = CommonDialog1.FontStrikethru
Text1.ForeColor = CommonDialog1.Color
CancelButton:
Exit Sub
End Sub

    代碼的第三行出現(xiàn)了通用對話框的Flags屬性決定了通用對話框的一些可選項,不過即使不賦值給Flags,代碼也一樣會按缺省的情況去執(zhí)行的。

史翔 2005-02-25 10:25:31
re:[b]第九章[/b][b] VB[/b]...

第九章 VB的數(shù)據(jù)庫操作
9.1    數(shù)據(jù)庫的基礎知識
1.計算機數(shù)據(jù)管理技術的發(fā)展
第一階段:人工管理階段,特點是數(shù)據(jù)不長期保存,沒有軟件系統(tǒng)對數(shù)據(jù)進行管理,沒有文件的概念,一組數(shù)據(jù)對應一個程序。
第二階段:采用文件管理方式,特點是數(shù)據(jù)不再是程序的組成部分,而是有組織、有結構地構成文件形式,形成數(shù)據(jù)文件;文件管理系統(tǒng)是應用程序與數(shù)據(jù)文件的接口。
第三階段:數(shù)據(jù)庫管理方式,特點是對所有數(shù)據(jù)實行統(tǒng)一、集中、獨立的管理,數(shù)據(jù)獨立于程序存在,并可以提供給各類不同用戶使用。
2.數(shù)據(jù)庫的基本概念
(1)   數(shù)據(jù)庫(DataBase  DB)
       定義:是以一定的組織形式存放在計算機存儲介質上的相互關聯(lián)的數(shù)據(jù)的集合。
         特點:        
  b
具有最小的冗余度
 
                具有數(shù)據(jù)獨立性
                實現(xiàn)數(shù)據(jù)共享
                安全可靠,保密性能好
(2)  數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System  DBMS)
定義:是操縱和管理數(shù)據(jù)庫的系統(tǒng)軟件。
功能:維護數(shù)據(jù)庫、接收和完成用戶程序或命令提出的訪問數(shù)據(jù)庫的各種請求。
數(shù)據(jù)語言:
z
v
數(shù)據(jù)定義語言(DDL): 用來建立所需的數(shù)據(jù)庫(即設計庫結構)
數(shù)據(jù)操作語言(DML): 用來對數(shù)據(jù)庫進行查詢和維護操作。
t
數(shù)據(jù)控制語言(DCL): 用來控制數(shù)據(jù)的訪問權限及事務管理。
關系型數(shù)據(jù)庫使用的標準語言是結構化查詢語言(Structured Query Language, SQL)。
(3)  數(shù)據(jù)庫系統(tǒng)(DataBase System  DBS)
定義; 以數(shù)據(jù)庫應用為基礎的計算機系統(tǒng)。
組成:一個完整的數(shù)據(jù)庫系統(tǒng)由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫管理員和應用程序組成。
數(shù)據(jù)庫也可以這樣劃分其組成:
硬件:計算機硬件設備
軟件:數(shù)據(jù)庫管理系統(tǒng) 、操作系統(tǒng)、開發(fā)工具、應用程序
用戶:應用程序設計員、終端用戶、數(shù)據(jù)庫管理員
 
分類
層次型數(shù)據(jù)庫
網(wǎng)狀型數(shù)據(jù)庫
網(wǎng)狀型數(shù)據(jù)庫
 
分代
第一代  非關系型數(shù)據(jù)庫系統(tǒng),60年代末問世,包括層次型和網(wǎng)狀型
第二代  關系型數(shù)據(jù)庫系統(tǒng)(RDBS),70年代中期問世
第三代  對象-關系數(shù)據(jù)庫系統(tǒng)(ORDBS 、OOBDS),80年代中期至今
  上述三個概念之間的聯(lián)系:在數(shù)據(jù)庫系統(tǒng)中通過數(shù)據(jù)庫管理系統(tǒng)來建立和使用數(shù)據(jù)庫。
3數(shù)據(jù)模型                    
     數(shù)據(jù)模型:即描述實體模型的數(shù)據(jù)。
        
數(shù)據(jù)模型的分類:
層次模型(采用樹型結構)
網(wǎng)絡模型(采用無向圖型結構)
關系模型(采用二維表結構)
 
關系模型的性質:  
二維表的記錄數(shù)隨數(shù)據(jù)的增加而改變,但其字段數(shù)是相對固定的
二維表中的每一列均有唯一的字段名
二維表中不允許出現(xiàn)完全相同的兩行
二維表中行的順序、列的順序均可以任意交換
4. 關系型數(shù)據(jù)庫的基本結構
關系型數(shù)據(jù)庫的基本結構是一張二維表,包括以下概念:
(1) 記錄(Record:數(shù)據(jù)表中的每一行數(shù)據(jù)
(2) 字段(Field:數(shù)據(jù)表中的每一列,表頭(第一行)的內(nèi)容為字段名
(3) 數(shù)據(jù)表(Table:相關數(shù)據(jù)組成的二維表格
(4) 數(shù)據(jù)庫(Database:相關數(shù)據(jù)表的集合
(5) 關系(Relation:相關表之間通過相關聯(lián)的字段建立的聯(lián)系。
?。?) 索引(Index):指按表文件中某個關鍵字段或表達式建立記錄的邏輯順序。它是由一系列記錄號組成的一個列表,目的是提供對數(shù)據(jù)的快速訪問。索引不改變表中記錄的物理順序
  索引關鍵字(索引表達式):用來建立索引的一個字段或字段表達式。
ngf
數(shù)據(jù)庫和數(shù)據(jù)表可以通過數(shù)據(jù)庫管理系統(tǒng)軟件來建立,如:Access,Visual FoxPro,SQL Server 、Sybase、 Oracle。在VB環(huán)境下可以直接建立Access數(shù)據(jù)庫。
  關系型數(shù)據(jù)表的特點

:(1)每一個字段不可再分解,也不能有名字相同的字段
;
                          
hgfhgfyh
(2)每一列中的數(shù)據(jù)都有相同的數(shù)據(jù)類型;
                     
hfyftytfyyy
(3)表中沒有內(nèi)容完全相同的行(記錄)。
5.查詢的概念
  查詢(query):從相關數(shù)據(jù)表中選取符合特定要求的數(shù)據(jù)。
  創(chuàng)建方法:可以通過查詢生成器創(chuàng)建一個查詢,也可以在SQL窗口直接用SELECT—SQL命令寫出查詢。
9.2    數(shù)據(jù)庫管理器
1.  數(shù)據(jù)庫管理器介紹
在VB中可以通過“外接程序”菜單中的“可視化數(shù)據(jù)管理器”調出“VisData”數(shù)據(jù)庫管理器窗口。
菜單選項
功能描述
文件
打開數(shù)據(jù)庫
打開指定的數(shù)據(jù)庫
新建
根據(jù)所選類型建立新數(shù)據(jù)庫
導入/導出
從其他數(shù)據(jù)庫導入數(shù)據(jù)表,或導出數(shù)據(jù)表及SQL查詢結果
工作空間
顯示注冊對話框注冊新工作空間,用新輸入的用戶名和密碼從新的工作空間重新打開當前數(shù)據(jù)庫。
壓縮MDB
壓縮指定的Access數(shù)據(jù)庫,創(chuàng)建一個加密或解密文件。
修復MDB
修復指定的Access數(shù)據(jù)庫
實用程序
查詢生成器
建立、查看、執(zhí)行和存儲SQL查詢
數(shù)據(jù)窗口設計器
創(chuàng)建數(shù)據(jù)窗體并將其添加到VB工程中
全局替換
創(chuàng)建SQL表達式并更新所選數(shù)據(jù)表中滿足條件的記錄
附加
顯示當前Access數(shù)據(jù)庫中所有附加數(shù)據(jù)表及連接條件
用戶組/用戶
查看和修改用戶組、用戶、權限等設置
System.mda
創(chuàng)建System.mda文件,以便為每個文件設置安全機制
性能選項
設置超時值
2. 建立數(shù)據(jù)庫
數(shù)據(jù)庫的基本操作:
創(chuàng)建數(shù)據(jù)表:
設計表名和表結構
輸入記錄
建立索引
數(shù)據(jù)維護:
增加記錄
修改記錄
刪除記錄
    創(chuàng)建數(shù)據(jù)表的主要步驟: 設計表結構 → 輸入記錄 → 建立索引 → 數(shù)據(jù)維護
 ?。?)設計表結構
啟動可視化數(shù)據(jù)管理器 → 在database窗口中右擊,從菜單中選擇“新表” → 在表結構窗口中輸入表名→ 添加字段 → 確定字段名稱和屬性、有效性規(guī)則 → 建立索引 →生成表結構。
   “添加字段”對話框各選項說明
選項名
描述
名稱
即每個字段的名字(對所用字符沒有什么限制)
類型
指該字段的數(shù)據(jù)特征,包括:Boolean、Byte、Integer、Long、Currency、Single、Double、Date/Time、Text、Binary(二進制型,存放圖片)、Memo(備注型,存放長文本)
大小
字段寬度,指該字段所能容納數(shù)據(jù)的的最大字節(jié)數(shù)
固定字段
字段寬度固定不變
可變字段
字段寬度可變
允許零長度
表示空字符串可作為有效的字段值
必要的
表示該字段值不可缺少
順序位置
字段在表中的順序位置
驗證文本
當向表中輸入無效值時系統(tǒng)顯示的提示信息
驗證規(guī)則
驗證輸入字段值的簡單規(guī)則,目的是使所輸數(shù)據(jù)符合設定的條件
默認值
在輸入時設置的字段初始值,以減少輸入重復性數(shù)據(jù)時的工作量
 ?。?)輸入記錄
        在database窗口中選中表名并右擊,從菜單中選擇“打開” →在數(shù)據(jù)表窗口輸入記錄(注意窗口樣式)→ 單擊“新增”→ 在窗口中輸入記錄并“更新” →重復……
  (3)  維護記錄
在database窗口中選中表名并右擊,從菜單中選擇“打開” →單擊“編輯”/“刪除”/“新增”,即可完成對記錄的修改、刪除、添加操作。
3.  建立查詢
建立查詢就是在數(shù)據(jù)表中找到符合特定條件的記錄并組成一張新表。
在database窗口中選中表名并右擊,從菜單中選擇“新查詢” →在查詢生成器中構造查詢條件→單擊“運行” →單擊“保存”,給出查詢結果文件名→“關閉”。
 查詢生成器說明
各選項
描述
查詢表達式
設置查詢應該滿足的基本條件,可以用and /or來設置應滿足的多個條件
表/字段名
設置查詢結果中將顯示的字段名,單擊一個加亮便選中了
前百分之幾條
只顯示查詢結果中的前若干條記錄
前N條記錄
只顯示查詢結果中的前N條記錄
“運行”按鈕
執(zhí)行查詢命令,并顯示出查詢結果
“顯示”按鈕
用消息框顯示SQL命令
“復制”按鈕
將SQL命令復制到SQL窗口
“保存”按鈕
將查詢結果取個名并保存到數(shù)據(jù)庫中
“清除”按鈕
清除條件列表框中的查詢條件
分組條件
將查詢結果分組,一般每組只有一個記錄
排序條件
將查詢結果按順序顯示出來,ASC(升序)、DESC(降序)
連接條件
設置相關表之間的連接字段
9.3    數(shù)據(jù)控件
1. 數(shù)據(jù)控件的建立
從VB工具箱中單擊Data控件,在窗體上畫出數(shù)據(jù)控件即可。
2. 數(shù)據(jù)控件的屬性
屬性名稱
作用
Connect
指定數(shù)據(jù)控件所要連接的數(shù)據(jù)庫類型,VB默認的是Access的MDB數(shù)據(jù)庫,也可以連接DBF、XLS、ODBC等數(shù)據(jù)庫
DatabaseName
指定具體使用的數(shù)據(jù)庫文件名,包括路徑名
RecordSource
指定具體可訪問的數(shù)據(jù),這些數(shù)據(jù)構成記錄集對象Recordset對象,可以是數(shù)據(jù)庫中的單個表名、一個存儲查詢,也可以是SQL查詢命令
RecordsetType
確定記錄集類型,有三種: 0——Table(表); 1——Dynaset(動態(tài),默認的) ;2——Snapshot(快照)
BofAction
當記錄指針指向記錄集的開始時,確定數(shù)據(jù)控件該采取的操作:
0——控件重定位到第一個記錄
1——移過記錄集開始位,定位到一個無效記錄,觸發(fā)數(shù)據(jù)控件對第一個記錄的無效事件Validate
EofAction
當記錄指針指向記錄集的結束時,確定數(shù)據(jù)控件該采取的操作:
0——控件重定位到最后一個記錄
1——移過記錄集結束位,定位到一個無效記錄,觸發(fā)數(shù)據(jù)控件對最后一個記錄的無效事件Validate
2——向記錄集加入新的空記錄,可以對新記錄進行編輯,移動記錄指針新記錄寫入數(shù)據(jù)庫
綁定控件、數(shù)據(jù)控件、數(shù)據(jù)庫之間的關系:
  綁定控件的屬性
DataSource——通過一個有效的數(shù)據(jù)控件連接到一個數(shù)據(jù)庫上。
DataField——將數(shù)據(jù)庫中的有效字段連接到綁定控件上。
除了常規(guī)控件外,可以與Data數(shù)據(jù)控件綁定的控件有:
控件名稱
部件名稱
常用屬性
MSFlexGrid
Microsoft  FlexGrid Control 6.0(OLE DB)
DataSourse
DBCombo
Microsoft Data Bound List Controls 6.0
DataField、DataSource、ListField、RowSource、BoundColumn
DBList
DBGrid
Microsoft Data Bound Grid Control 5.0(SP3)
DataSourse

史翔 2005-02-25 10:25:46
re:[b]3. [/b][b]數(shù)據(jù)控件的...

3.   數(shù)據(jù)控件的事件  
事件名稱
觸發(fā)時間
Reposition
發(fā)生在一條記錄成為當前記錄后。只要將記錄指針從一條記錄移動到另一條記錄就會觸發(fā)。
Validate
在一條不同的記錄成為當前記錄之前,Update 方法之前(用 UpdateRecord 方法保存數(shù)據(jù)時除外);以及 Delete、Unload 或 Close 操作之前會發(fā)生該事件。它檢查被數(shù)據(jù)控件綁定的控件內(nèi)的數(shù)據(jù)是否發(fā)生變化。
語法:Private Sub Data_Validate(Action As Integer, Save As Integer) …… End Sub
   Validate事跡的 Action參數(shù)
Action
描述
Action
描述
0
取消對數(shù)據(jù)控件的操作
6
Update 操作
1
MoveFirst 方法
7
Delete 方法
2
MovePrevious 方法
8
Find 方法
3
MoveNext 方法
9
設置Bookmark 屬性
4
MoveLast 方法。
10
Close 的方法
5
AddNew 方法
11
卸載窗體
4.  數(shù)據(jù)控件的常用方法
方法名稱
作用
示例
Refresh
激活數(shù)據(jù)控件,使各用戶對數(shù)據(jù)庫的操作有效。
Data1.Refresh
UpdateControls
將數(shù)據(jù)從數(shù)據(jù)庫中重新讀到數(shù)據(jù)控件綁定的控件內(nèi),通過它可以終止用戶對綁定控件內(nèi)數(shù)據(jù)的修改。
放棄修改按鈕代碼:
Data1. UpdateControls
UpdateRecord
強制數(shù)據(jù)控件將綁定控件內(nèi)的數(shù)據(jù)寫入到數(shù)據(jù)庫中,不再觸發(fā)Validate事件
確認修改按鈕代碼:
Data1. UpdateRecord
5. 記錄集的屬性與方法
名稱
作用
屬性
AbsolutePostion
返回當前指針值,如果是第一條記錄,其值為0;是只讀屬性
Bof / Eof
Bof判斷記錄指針是否在首記錄之前,若是則為True;Eof判斷記錄指針是否在末記錄之后,若是則為True
Bookmark
用于設置或返回當前指針的標簽,可以用在在程序中重定位記錄集的指針,其值采用字符串類型。
NoMatch
在記錄集中進行查找時,如果找到相匹配的記錄,則為Falue,找不到則為True。
RecordCount
對Recordset對象中的記錄記數(shù),為了準確起見,在記數(shù)前用MoveLast方法將記錄指針移到最后一條記錄上;是只讀屬性。
方法
Move
用于移動記錄指針,共有5種方法:
MoveFirst——將指針移到第1條記錄
MoveLast——將指針移到最后一條記錄
MoveNext——將指針移到下一條記錄
MovePrevious——將指針移到上一條記錄
Move  n——將指針向前或向后移動n條記錄
Find
在指定的Dynaset或 Snapshop類型的Recordset對象中查找與指定條件相符的一條記錄,并使之成為當前記錄,共有4種方法:
FindFirst——從記錄集的開始查找滿足條件的第1條記錄
FindLast——從記錄集的尾部向前查找滿足條件的第1條記錄
FindNext——從當前記錄開始查找滿足條件的下一條記錄
FindPrevious——從當前記錄開始查找滿足條件的上一條記錄
語法格式舉例:
Data1.Recordset.FindFirst "課程名='計算機基礎' "
Find方法支持通配符,默認情況下忽略大小寫,可以添加說明改變默認設置: Option Compare Text (與大小寫無關)
       Option Compare Binary (與大小寫有關)
如果找不到相匹配的記錄,當前記錄保持在查找的始發(fā)處;如果找到了,則指針定位到該記錄。
Seek
使用該方法必需打開表的索引,它在Table表中查找與指定索引規(guī)則相符的第一條記錄,并使其成為當前記錄。
語法格式舉例:
Data1.Recordset.Index= "課程名"
Data1.Recordset.Seek "=", "計算機基礎"
6. 利用數(shù)據(jù)控件對數(shù)據(jù)庫進行增、刪、改操作
操作項目
操作方法
注意事項
增加記錄
1) 調用AddNew方法:Data1.Recordset. AddNew
2) 給各字段賦值:Recordset.Fields("字段名")=值或在綁定控件中直接輸入內(nèi)容
3) 調用Update方法,將緩沖區(qū)內(nèi)的數(shù)據(jù)寫入數(shù)據(jù)庫:
       Data1.Recordset. Update
4) 調用MoveLast方法顯示新記錄:
     Data1.Recordset. MoveLast
如果缺少第3)步而將指針移動到其他記錄或關閉了記錄,則所做的輸入全部丟失;若沒有第4)步。雖然加入了新記錄,但記錄指針自動返回到添加新記錄前的位置上,并不顯示新記錄。
刪除記錄
1)    定位被刪除記錄使之成為當前記錄(用Move或Find方法)
2)    調用Delete方法:Data1.Recordset. Delete
3)    調用MoveNext方法移動記錄指針
使用Delete方法時,當前記錄立即刪除,但被數(shù)據(jù)庫約束的綁定控件仍舊顯示該記錄的內(nèi)容,故必須用第3)步刷新綁定控件。
修改記錄
1) 調用Edit方法:Data1.Recordset. Edit
2) 給各字段賦值:在綁定控件中直接修改
3) 調用Update方法,確定所做的修改:
      Data1.Recordset. Update
如果要放棄對數(shù)據(jù)的所有修改,可在第3)步之前用Refresh方法,重讀數(shù)據(jù)庫,刷新記錄。
9.4     ADO數(shù)據(jù)控件
1. 什么是ADO
ADO(ActiveX Data Object)數(shù)據(jù)訪問接口是微軟處理數(shù)據(jù)庫信息的最新技術,它是一種ActiveX對象,采用了OLE DB(動態(tài)連接與嵌入數(shù)據(jù)庫)的數(shù)據(jù)訪問模式,是數(shù)據(jù)訪問對象DAO、遠程數(shù)據(jù)對象RDO和開放式數(shù)據(jù)庫互連ODBC三種方式的擴展。
要使用ADO對象必需先為當前工程引用ADO對象庫,方法是: 執(zhí)行“工程”菜單中的“引用”命令,在對話框中選中“Microsoft ActiveX Data Object 2.0 Library”。
  ADO對象描述
對象名
描述
Connection
連接數(shù)據(jù)來源
Command
從數(shù)據(jù)源獲取所需數(shù)據(jù)的命令信息
Recordset
所獲取的一組記錄組成的記錄集
Error
在訪問數(shù)據(jù)庫時,由數(shù)據(jù)源所返回的錯誤信息
Parameter
與命令對象相關的參數(shù)
Field
包含了記錄集中某個字段的信息
2.使用ADO數(shù)據(jù)控件
 (1)  添加ADO數(shù)據(jù)控件
從“工程”菜單中選擇“部件”命令,在對話框中選中“Microsoft ADO Data ControlS 6.0(OLE DB)”,將其添加到工具箱,并在窗體上拖劃出ADO數(shù)據(jù)控件。
 (2)  ADO數(shù)據(jù)控件的基本屬性
屬性名
作用
ConnectionString
用來與數(shù)據(jù)庫建立連接,它包括4個參數(shù):
Provide——指定數(shù)據(jù)源的名稱
FileName——指定數(shù)據(jù)源所對應的文件名
RemoteProvide——在遠程數(shù)據(jù)服務器打開一個客戶端時所用的數(shù)據(jù)源名稱
RemoteServer——在遠程數(shù)據(jù)服務器打開一個主機端時所用的數(shù)據(jù)源名稱
RecordSource
確定具體可訪問的數(shù)據(jù),可以是數(shù)據(jù)庫中的單個表名、一個存儲查詢或一個SQL查詢字符串
ConnectionTimeout
設置數(shù)據(jù)連接的超時時間,若在指定時間內(nèi)連接不成功則顯示超時信息
MaxRecords
確定從一個查詢中最多能返回的記錄數(shù)
?。?)  ADO數(shù)據(jù)控件的屬性設置
1)先在窗體上放置一個ADO數(shù)據(jù)控件
2)在ADO屬性窗口中單擊ConnectionString屬性右邊的…按鈕,從對話框中選擇連接數(shù)據(jù)源的方式:
       使用連接字符串——單擊“生成”按鈕,通過選項設置系統(tǒng)自動產(chǎn)生連接字符串
        使用Data Link文件——通過一個連接文件來完成
        使用ODBC數(shù)據(jù)資源名稱——在下拉列表中選擇某個創(chuàng)建好的數(shù)據(jù)源名稱作為數(shù)據(jù)來源對遠程數(shù)據(jù)庫進行控制。
3)在ADO屬性窗口中單擊RecordSource屬性右邊的…按鈕,在“命令類型”中選擇2——adCmdTable,在“表或存儲過程名稱”中選擇所需要的表。
以上2)、3)可以合并成一步:在ADO控件上單擊右鍵,從快捷菜單中選擇ADODC屬性,直接在屬性頁對話框中進行所有設置。
?。?) ADO數(shù)據(jù)控件的方法和事件
      與Data數(shù)據(jù)控件完全相同。
 (5) 在ADO上新增綁定控件
可以從“工程”的“部件”中添加如下綁定控件:
控件名稱
部件名稱
常用屬性
DataGrid
Microsoft DataGrid Control 6.0(OLE DB)
DataSource
DataCombo
Microsoft DataList Controls 6.0(OLE DB)
DataField、DataSource、ListField、RowSource、BoundColumn
DataList
MSChart
Microsoft Chart Control 6.0(OLE DB)
DataSource
3.  使用數(shù)據(jù)窗體向導
    從“外接程序”菜單中選擇“外接程序管理器”,在對話框中選中VB6數(shù)據(jù)窗體向導,“加載”并“確定”,再從“外接程序”菜單中選擇“數(shù)據(jù)窗體向導”,然后根據(jù)系統(tǒng)提示逐步操作即可創(chuàng)建所需要的數(shù)據(jù)窗體,系統(tǒng)自動把所創(chuàng)建的窗體加到工程中。
9.5     結構化查詢語言
1.SQL的基本組成
SQL語言由命令、子句、運算、函數(shù)等組成:
?。?) SQL命令
命令
功能
CREATE
用于建立新的數(shù)據(jù)表結構
DROP
用于刪除數(shù)據(jù)庫中的數(shù)據(jù)表及其索引
ALTER
用于修改數(shù)據(jù)表結構
SELECT
用于查找符合特定條件的某些記錄
INSERT
用于向數(shù)據(jù)表中加入數(shù)據(jù)
UPDATE
用于更新特定記錄或字段的數(shù)據(jù)
DELETE
用于刪除記錄
?。?) SQL子句
子句
功能
FROM
用于指定數(shù)據(jù)所在的數(shù)據(jù)表
WHERE
用于指定數(shù)據(jù)需要滿足的條件
GROUP BY
將選定的記錄分組
HAVING
用于說明每個群組需要滿足的條件
ORDER BY
用于確定排序依據(jù)
INTO
查詢結果去向
 (3)  SQL運算符
邏輯運算符
And (與)、 Or(或)、 Not(非)
比較運算符
   >=    =    
?。?)   SQL函數(shù)
AVG
COUNT
SUM
MAX
MIN
求平均值
計數(shù)
求和
求最大值
求最小值
2. SQL語句的應用
語句功能
語法格式
建立數(shù)據(jù)表
CREATE  TABLE 數(shù)據(jù)表名 (字段名1  數(shù)據(jù)類型(長度),  字段名2  數(shù)據(jù)類型(長度),……)
舉例:create  table  student(xh  text(9),  xm  text(8) , cj  single(4), nl integer(2))  
 建立含有xh、xm、cj、nl  4個字段的student表
添加字段
ALTER  TABLE  數(shù)據(jù)表名 ADD  COLUMN  字段名  數(shù)據(jù)類型(長度)
舉例:alter  table  student  add column  xb  text(2)  '在學生表中添加性別字段
刪除字段
ALTER  TABLE  數(shù)據(jù)表名 DROP  COLUMN  字段名
舉例: alter  table  student  drop  column  nl  '將學生表中的年齡字段刪除
數(shù)據(jù)查詢
SELECT 字段名表 FROM 子句  WHERE 子句 GROUP BY  子句HAVING  子句 ORDER BY 子句 INTO 子句
舉例:select  xh, xm  from  student  where  xb="男"  order  by  xh
從學生表中查詢性別為男的學生,顯示其學號和姓名并使結果按學號升序排列。
添加記錄
INSERT INTO 數(shù)據(jù)表名字段名1,字段名2…… VALUES數(shù)據(jù)1,數(shù)據(jù)2……
舉例:insert  into  student (xh, xm, xb)  values("015200101", "王小二", "男")
刪除記錄
DELETE  FROM 數(shù)據(jù)表名 WHERE 條件表達式
舉例:delete  from  student  where  xb="男"
更新記錄
UPDATE  數(shù)據(jù)表名  SET  新數(shù)據(jù)值  WHERE  條件表達式
舉例:update  student  set  cj=cj+5  where  xb="女"
9.6    報表制作
1.  報表的概念
利用報表可以把數(shù)據(jù)表中的數(shù)據(jù)按一定的格式輸出到屏幕上或打印到紙上。
2.  制作報表的方法
在VB6.0中可以利用報表設計器來制作報表,從“工程”中選擇“添加data report”,將報表設計器加入到當前工程中,報表由5部分組成:
  報表標頭——每份報表只有一個,可以用標簽建立報表名。
  頁標頭——每頁有一個,即每頁的表頭,如字段名。
  細節(jié)——需要輸出的具體數(shù)據(jù),一行一條記錄。
  頁腳注——每頁有一個,如頁碼。
  報表腳注——每份報表只有一個,可以用標簽建立對本報表的注釋、說明。
      使用報表設計器處理的數(shù)據(jù)需要利用數(shù)據(jù)環(huán)境設計器創(chuàng)建與數(shù)據(jù)庫的連接, 從“工程”菜單中選擇 “添加Data Enviroment”,在連接中選擇指定的數(shù)據(jù)庫文件,完成與數(shù)據(jù)庫的連接,然后產(chǎn)生Command對象連接數(shù)據(jù)庫內(nèi)的表。
  制作報表的步驟:
(1) 新建工程,在窗體上放置兩個命令按鈕;
(2) 從“工程”菜單中“添加Data Enviroment”,右擊Connection1,在屬性中選擇“Microsoft Jet 4 OLE DB Provider”,在“連接”中指定數(shù)據(jù)庫;
(3) 再次右擊Connection1,選則“添加命令”,創(chuàng)建Command1對象,右擊Command1,在屬性中設置該對象連接的數(shù)據(jù)源為需要打印的數(shù)據(jù)表;
(4) 在從“工程”菜單中“添加Data Report”,在屬性窗口中設置DataSource為數(shù)據(jù)環(huán)境DataEnviroment1對象,DataMember為Command1對象,即指定數(shù)據(jù)報表設計器DataReport1的數(shù)據(jù)來源;
(5) 將數(shù)據(jù)環(huán)境設計器中Command1對象內(nèi)的字段拖到數(shù)據(jù)報表設計器的細節(jié)區(qū);
(6) 利用標簽控件在報表標頭區(qū)插入報表名,在頁標頭區(qū)設置報表每一頁頂部的標題;
(7) 利用線條控件在報表內(nèi)加入直線,利用圖形控件和形狀控件加入圖案或圖形;
(8) 利用DataReport1對象的Show方法顯示報表,在窗體Click事件加代碼:DataReport1.Show;
(9) 利用預覽窗口按打印按鈕可以打印報表;
(10)       利用預覽窗口工具欄上的導出按鈕可以將報表內(nèi)容輸出成文本文件或Html文件;也可以利用DataReport1對象的ExportReport方法將報表內(nèi)容輸出成文本文件或Html文件。
制作報表的簡單方法是從“外接程序”中選擇報表向導來設計報表。
9.7    MIS系統(tǒng)設計示例
學生成績管理系統(tǒng)的設計
1.    建立工程文件
2.    設計系統(tǒng)主界面,驗證用戶身份
3.    建立Access數(shù)據(jù)庫,輸入若干記錄
4.    設計帶菜單的主窗體,把其他窗體組織起來
5.    根據(jù)需要完成系統(tǒng)功能,設計帶數(shù)據(jù)控件的各種窗體
6.    調試、修改
7.    生成EXE文件

史翔 2005-02-25 10:26:20
re:[b]常見錯誤和難點分析[/b][b...

常見錯誤和難點分析
1.在選擇結構中缺少配對的結束語句
對多行式的If塊語句中,應有配對的End If語句結束。否則,在運行時系統(tǒng)會顯示"塊 If沒有End If"的編譯錯誤。同樣對Select Case語句也應有與其相對應的End Select語句。
2.多邊選擇ElseIf關鍵字的書寫和條件表達式的表示
多邊選擇ElseIf子句的關鍵字ElseIf之間不能寫有空格,即不能寫成Else If。
在多個條件表達式的表示時,應從最小或最大的條件依次表示,以避免條件的過濾。例如,已知輸入某課程的百分制成績mark,要求顯示對應五級制的訐定,評定條件如下:
 有以下幾種表示方式,語法上都沒有錯,但執(zhí)行后結果有所不同,請分析哪些正確? 哪些錯誤?
下面給出的答案中,方法一、二、五正確,其余錯誤,請分析各自的原因。
方法一:
方法二:
方法三:
方法四:
         方法五:
If mark>=90Then
         Print"優(yōu)"
ElseIf mark>=80Then
         Print"良"  
ElseIf mark>=70Then
         Print"中"  
ElseIfmark>-60Then
         Print"及格"
Else
         Print"及格"
End If
If mark
Print"不及格"
ElseIf mark
         Print"及格"
ElseIf mark
         Print"中"  
ElseIf mark
         Print"良"  
Else
         Print"優(yōu)"
End If
If mark>=60Then
         Print"及格"
ElseIf mark>=70Then
         Print"中"
Elselfmark>=80Then
         Print"良"
Elselfmark>=90Then
         Print"優(yōu)"
Else
         Print"不及格"
End If
If mark>=90Then
         Print"優(yōu)"  
ElseIf  80
         Print"良"
ElseIf  70
         Print"中"
ElseIf  60
         Print"及格"
Else
         Print"不及格"    
End If        
If mark>=90Then
         Print"優(yōu)"
ElseIf 80
         Print"良"
ElseIf 70
         Print"中"
ElseIf 60
         Print"及格"
Else
         Print"不及格"
End If
3.Select Case語句的使用
(1)    "表達式列表i" 中不能使用"變量或表達式"中出現(xiàn)的變量。
例如,上述多邊選擇的例子改為Select Case語句實現(xiàn),方法一Case子句中出現(xiàn)變量mark,運行時不管mark的值多少,始終執(zhí)行Case Else子句,運行結果不正確;方法二、方法三正確。
方法一:
方法二:
方法三:
Select Case mark    
       Case mark>=90     
              Print"優(yōu)"
       Case mark>=80
              Print"良"
       Casemark>=70       
              Print"中"
       Case mark>=60
              Print"及格"    
       Case Else
              Print"不及格"
End Select
Select Case mark    
Case Is>=90  
       Print"優(yōu)"
Casels>=80    
       Print"良"       
Case Is>=70  
       Print"中"
Case Is>=60  
       Prim"及格"    
Case Else
       Print"不及格"
End Select
Select Case mark
Case Is>=90
       Print"優(yōu)"
Case 80 To 89
Print"良"
Case 70 To 79
       Print"中"
Case 60 TO 69
       Print"及格"
Case Else
       Print"不及格"
End Select
(2)    在"變量或表達式"中不能出現(xiàn)多個變量。
實驗三第5題對三門課程獎學金的判斷,只能用If語句的多邊選擇,而不能用SelectCase語句實現(xiàn)。例如,有人用如下語句表示:
       Select Case markl,mark2,mark3
              Case (markl+mark2+mark3)/3>=95
                     Print"一等獎"
       End Select
這樣就會在 "Select Case markl,mark2,mark3" 語句行出現(xiàn)編輯錯誤, 同時
Case (markl+mark2 +mark3)/3>=95書寫也錯誤。
第四章  常見錯誤和難點分析
1. 不循環(huán)或死循環(huán)的問題主要是循環(huán)條件、循環(huán)初值、循環(huán)終值、循環(huán)步長的設置有問題。
例如,以下循環(huán)語句不執(zhí)行循環(huán)體:
For i=10 To 20 Step-1  ' 步長為負,初值必須大于等于終值,才能循環(huán)
For i=20 To10  ' 步長為正,初值必須小于等于終值,才能循環(huán)
Do While False  ' 循環(huán)條件永遠不滿足,不循環(huán)
例如,以下循環(huán)語句死循環(huán):
For i=10 To 20 Step 0       ' 步長為零,死循環(huán)
Do While 1  ' 循環(huán)條件永遠滿足,死循環(huán)
2.循環(huán)結構中缺少配對的結束語句
For…Next語句沒有配對的Next語句;Do語句沒有一個終結的Loop語句等。

史翔 2005-02-25 10:26:30
re:[b]3[/b][b].循環(huán)嵌套時,內(nèi)外...

3.循環(huán)嵌套時,內(nèi)外循環(huán)交叉
       For I=1 to 4
              For j=1 to 5
              …
              Next i
       Next j
上述循環(huán)的交叉運行時顯示"無效的Next控制變量引用"。
4.累加、連乘時,存放累加、連乘結果的變量賦初值問題
(1) 一重循環(huán)
在一重循環(huán)中,存放累加、連乘結果的變量初值設置應在循環(huán)語句前。
例如,求1~100的3的倍數(shù)和,結果放入Sum變量中,如下程序段,輸出結果如何?應作如何改進?
       Private SubForm_Click()
              For i=3 To 100 Step 3
                     Sum=0
                     Sum=Sum+i
              Next i
              Print Sum
       End Sub
(2) 多重循環(huán)
在多重循環(huán)中,存放累加、連乘結果的變量初值設置放在外循環(huán)語句前,還是內(nèi)循環(huán)語句前,這要視具體問題分別對待。
例如,期末30位學生參加三門課程的考試,求每個學生的三門課程的平均成績?nèi)缦鲁绦蚰芊駥崿F(xiàn)?
       aver=0
       For i=1 To 30
              For j=1 To 3
                     m=InputBox("輸入第"&j&"門課的成績")
                     aver=aver+m
              Next j
              aver=aver/3
              Print aver
       Next I
第五章  常見錯誤和難點分析
1.Dim數(shù)組聲明
有時用戶為了程序的通用性,聲明數(shù)組的上界用變量來表示,如下程序段:
     n=InputBox("輸入數(shù)組的上界")
     Dim a(1 To n) As Integer
程序運行時將在Dim語句處顯示"要求常數(shù)表達式"的出錯信息。即Dim語句中聲明的數(shù)組上,下界必須是常數(shù),不能是變量。
解決程序通用的問題,一是將數(shù)組聲明的很大,這樣浪費一些存儲空間;二是利用動態(tài)數(shù)組,將上例改變?nèi)缦拢?br>    Dim a() As Integer
     n=InputBox ("輸入數(shù)組的上界")
     ReDim a(1 To n)As Integer
2.數(shù)組下標越界
引用了不存在的數(shù)組元素,即下標比數(shù)組聲明時的下標范圍大或小即為越界。例如,要形成有如下30項的斐波那契數(shù)列:
1,1,2,3,5,8,13,21,34,…,317811,514229,832040
正確的程序段如下:
Dim a(1 To 30) As Long, i%
若將For i=3 To 30改為For i=1 To 30,程序運行時會顯示"下標越界"的出錯信息,因為開始循環(huán)時i=l,執(zhí)行到循環(huán)體語句a(i)=a(i-2)+a(i-1),數(shù)組下標i-2、i-1均小于下界1。
同樣若將上例:a(i)+a(i-2)+a(i-1) 語句改為:a(i+2)=a(i)+a(i+1)
程序運行時也會顯示"下標越界"的出錯信息,這時是數(shù)組下標大于上界30。
3.數(shù)組維數(shù)錯
數(shù)組聲明時的維數(shù)與引用數(shù)組元素時的維數(shù)不一致。例如,下程序段為形成和顯示3×5的矩陣:
      Dim a(3,5) As Long
              For i=1 To 3
                     For j=1 To 5
                            a(i)=i*j
                            Print a(i);"";
                     Next j
              Print
       Next i
程序運行到a(i)=i*j語句時出現(xiàn)"維數(shù)錯誤"的信息,因為在Dim聲明時是二維數(shù)組,引用時的一個下標。
4.Aarry函數(shù)使用問題
Aarry函數(shù)可方便地對數(shù)組整體賦值,但此時只能聲明Variant的變量或僅由括號括起的動態(tài)數(shù)組。賦值后的數(shù)組大小由賦值的個數(shù)決定。
例如,要將1,2,3,4,5,6,7這些值賦值給數(shù)組a,下表列出了三種錯誤及相應正確的賦值方法。
Aarry函數(shù)表示方法
錯誤的Aarry函數(shù)賦值,
改正的Aarry函數(shù)賦值
Dim a(1 To 8)  a=Array(1,2,3,4,5,6,7,8)
Dim a( ) a=Array(1,2,3,4,5,6,7)
Dim a As Integer  a=Array(1,2,3,4,5,6,7)
Dim  aa=Array(1,2,3,4,5,6,7)
Dim aa()=Array(1,2,3,4,5,6,7)     
Dim  aa=Array(1,2,3,4,5,6,7)
5.如何獲得數(shù)組的上界、下界
 Aarry函數(shù)可方便地對數(shù)組整體賦值,但在程序中如何獲得數(shù)組的-上界、下界,以保證訪問的數(shù)組元素在合法的范圍內(nèi),可使用UBound和LBound函數(shù)來決定數(shù)組訪問。
在上例中,若要打印a數(shù)組的各個值,可通過下面程序段實現(xiàn):
For i=Lbound(A) To Ubound(A)
          Print a(i)
Next l
6.給數(shù)組賦值
VB6.0提供了可對數(shù)組整體賦值的新功能,方便了數(shù)組對數(shù)組的賦值操作。但真正使用不那么方便,有不少限制。數(shù)組賦值形式如下:數(shù)組名2=數(shù)組名1
這里的數(shù)組名2,實際上在前面的數(shù)組聲明時,只能聲明為Varian的變量,賦值后的數(shù)組2的大小、維數(shù)、類型同數(shù)組名1;否則,若聲明成動態(tài)或靜態(tài)的數(shù)組,例如:
Dim數(shù)組名2() 或Dim數(shù)組名2 (下標)
程序在運行到上述賦值語句時顯示"不能給數(shù)組賦值"的出錯信息。
第五章  數(shù)    
5.1  知識要點
1.數(shù)組的概念
數(shù)組:存放具有相同性質的一組數(shù)據(jù),也就是數(shù)組中的數(shù)據(jù)必須是同一個類型和性質。
數(shù)組元素:數(shù)組中的某一個數(shù)據(jù)項。數(shù)組元素的使用同簡單變量的使用。
2.靜態(tài)數(shù)組的聲明
靜態(tài)數(shù)組:在聲明時已確定了數(shù)組元素個數(shù)。
聲明形式:Dim數(shù)組名([下界To]上界[,[下界To]上界[,…]])As  類型
此語句聲明了數(shù)組名、數(shù)組維數(shù)、數(shù)組大小、數(shù)組類型。
[注意] 下界、上界必須為常數(shù),不能為表達式或變量:省略下界,默認為0,也可用Option Base語句重新設置下界的值。
3.動態(tài)數(shù)組的聲明
聲明形式: Dim數(shù)組名 ()
            ReDim  [Preserve]數(shù)組名([下界To]上界[,[下界To]上界[,…]])
[注意]
此時的上界、下界可以是賦了值的變量或表達式。若有Preserve關鍵字,表示當改變原有數(shù)組最末尾的大小時,使用此關鍵字可以保持數(shù)組中原來的數(shù)據(jù)。
4.控件數(shù)組
即相同類型的控件組成的數(shù)組。
控件數(shù)組的建立:在設計時的窗體上,通過對某控件的復制和粘貼操作:在程序運行時通過Load方法實現(xiàn)。
控件數(shù)組元素:由控件的Index屬性值表示數(shù)組的F標。
5.數(shù)組的操作
應掌握的基本操作有:數(shù)組初始化、數(shù)組輸入、數(shù)組輸出、求數(shù)組中的最大(最小)元素及下標、求和、平均值、排序和查找等。
5.2  常見錯誤和難點分析
1.Dim數(shù)組聲明
有時用戶為了程序的通用性,聲明數(shù)組的上界用變量來表示,如下程序段:
     n=InputBox("輸入數(shù)組的上界")
     Dim a(1 To n) As Integer
程序運行時將在Dim語句處顯示"要求常數(shù)表達式"的出錯信息。即Dim語句中聲明的數(shù)組上,下界必須是常數(shù),不能是變量。
解決程序通用的問題,一是將數(shù)組聲明的很大,這樣浪費一些存儲空間;二是利用動態(tài)數(shù)組,將上例改變?nèi)缦拢?br>    Dim a() As Integer
     n=InputBox ("輸入數(shù)組的上界")
     ReDim a(1 To n)As Integer
2.數(shù)組下標越界
引用了不存在的數(shù)組元素,即下標比數(shù)組聲明時的下標范圍大或小即為越界。例如,要形成有如下30項的斐波那契數(shù)列:
1,1,2,3,5,8,13,21,34,…,317811,514229,832040
正確的程序段如下:
Dim a(1 To 30) As Long, i%
若將For i=3 To 30改為For i=1 To 30,程序運行時會顯示"下標越界"的出錯信息,因為開始循環(huán)時i=l,執(zhí)行到循環(huán)體語句a(i)=a(i-2)+a(i-1),數(shù)組下標i-2、i-1均小于下界1。
同樣若將上例:a(i)+a(i-2)+a(i-1) 語句改為:a(i+2)=a(i)+a(i+1)
程序運行時也會顯示"下標越界"的出錯信息,這時是數(shù)組下標大于上界30。
3.數(shù)組維數(shù)錯
數(shù)組聲明時的維數(shù)與引用數(shù)組元素時的維數(shù)不一致。例如,下程序段為形成和顯示3×5的矩陣:
      Dim a(3,5) As Long
              For i=1 To 3
                     For j=1 To 5
                            a(i)=i*j
                            Print a(i);"";
                     Next j
              Print
       Next i
程序運行到a(i)=i*j語句時出現(xiàn)"維數(shù)錯誤"的信息,因為在Dim聲明時是二維數(shù)組,引用時的一個下標。
4.Aarry函數(shù)使用問題
Aarry函數(shù)可方便地對數(shù)組整體賦值,但此時只能聲明Variant的變量或僅由括號括起的動態(tài)數(shù)組。賦值后的數(shù)組大小由賦值的個數(shù)決定。
例如,要將1,2,3,4,5,6,7這些值賦值給數(shù)組a,下表列出了三種錯誤及相應正確的賦值方法。
Aarry函數(shù)表示方法
錯誤的Aarry函數(shù)賦值,
改正的Aarry函數(shù)賦值
Dim a(1 To 8)  a=Array(1,2,3,4,5,6,7,8)
Dim a( ) a=Array(1,2,3,4,5,6,7)
Dim a As Integer  a=Array(1,2,3,4,5,6,7)
Dim  aa=Array(1,2,3,4,5,6,7)
Dim aa()=Array(1,2,3,4,5,6,7)     
Dim  aa=Array(1,2,3,4,5,6,7)
5.如何獲得數(shù)組的上界、下界
 Aarry函數(shù)可方便地對數(shù)組整體賦值,但在程序中如何獲得數(shù)組的-上界、下界,以保證訪問的數(shù)組元素在合法的范圍內(nèi),可使用UBound和LBound函數(shù)來決定數(shù)組訪問。
在上例中,若要打印a數(shù)組的各個值,可通過下面程序段實現(xiàn):
For i=Lbound(A) To Ubound(A)
          Print a(i)
Next l
6.給數(shù)組賦值
VB6.0提供了可對數(shù)組整體賦值的新功能,方便了數(shù)組對數(shù)組的賦值操作。但真正使用不那么方便,有不少限制。數(shù)組賦值形式如下:數(shù)組名2=數(shù)組名1
這里的數(shù)組名2,實際上在前面的數(shù)組聲明時,只能聲明為Varian的變量,賦值后的數(shù)組2的大小、維數(shù)、類型同數(shù)組名1;否則,若聲明成動態(tài)或靜態(tài)的數(shù)組,例如:
Dim數(shù)組名2() 或Dim數(shù)組名2 (下標)
程序在運行到上述賦值語句時顯示"不能給數(shù)組賦值"的出錯信息。

查看完整版本: » VB基礎教程


Powered by 夢清雲(yún)淡社區(qū)  © 2005-2008 http://sxhouse.org/

 

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
全國計算機二級VB復習要點
VB基礎教程
VF知識點總結
Asp.net中的ViewState用法
vb6.0總結
【小崔課堂】計算機二級ACCESS 筆記重點
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服