日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

VB基礎(chǔ)教程 - 2

 nxhujiee 2010-09-08

夢(mèng)清雲(yún)淡社區(qū) - http:/// » 編程專(zhuān)區(qū) » VB基礎(chǔ)教程

頁(yè): 1 [2] 3

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

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

 

3.Function過(guò)程的調(diào)用
調(diào)用Function過(guò)程與調(diào)用VB內(nèi)部函數(shù)的方法一樣,即在表達(dá)式中寫(xiě)出它的名稱(chēng)和相應(yīng)的實(shí)在參數(shù)。
語(yǔ)法:    過(guò)程名[實(shí)參列表]

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

Call  Form1.Examsub([實(shí)參表])
 (2)調(diào)用標(biāo)準(zhǔn)模塊中的過(guò)程

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

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


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

 

 

 

 
6.4  變量、過(guò)程的作用域
1. VB應(yīng)用程序的組成:
2. 過(guò)程的作用域
作用范圍
模塊級(jí)
全局級(jí)
窗體
標(biāo)準(zhǔn)模塊
窗體
標(biāo)準(zhǔn)模塊
定義方式
過(guò)程名前加Private
例:Private Sub my1(形參表)
過(guò)程名前加Pubilc 或默認(rèn)
例:[ Pubilc ] Sub my2(形參表)
能否被本模塊其他過(guò)程調(diào)用




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


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

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

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

第七章 VB中的文件操作
7.1    文件系統(tǒng)控件
1. 文件系統(tǒng)控件種類(lèi)
?。?) 驅(qū)動(dòng)器列表框(DriveListBox):用來(lái)顯示當(dāng)前機(jī)器上的所有盤(pán)符
 
(2
) 目錄列表框(DirListBox):用來(lái)顯示當(dāng)前盤(pán)上的所有文件夾

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

文件:記錄的集合,相當(dāng)于一張表。

文件類(lèi)型:順序文件、隨機(jī)文件、二進(jìn)制文件。

訪(fǎng)問(wèn)模式:計(jì)算機(jī)訪(fǎng)問(wèn)文件的方式,VB中有順序、隨機(jī)、二進(jìn)制三種訪(fǎng)問(wèn)模式。
2. 順序訪(fǎng)問(wèn)模式
    順序訪(fǎng)問(wèn)模式的規(guī)則最簡(jiǎn)單,指讀出或?qū)懭霑r(shí),從第一條記錄“順序”地讀到最后一條記錄,不可以跳躍式訪(fǎng)問(wèn)。該模式專(zhuān)門(mén)用于處理文本文件,每一行文本相當(dāng)于一條記錄,每條記錄可長(zhǎng)可短,記錄與記錄之間用“換行符”來(lái)分隔。
順序文件的寫(xiě)入步驟打開(kāi)、寫(xiě)入、關(guān)閉;  讀出步驟打開(kāi)、讀出、關(guān)閉。
(1)打開(kāi)文件
打開(kāi)文件的命令是Open,格式為:

       Open “文件名” For 模式 As [#] 文件號(hào) [Len=記錄長(zhǎng)度]

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

     OutPut:打開(kāi)一個(gè)文件,將對(duì)該文件進(jìn)行寫(xiě)操作

    Input:打開(kāi)一個(gè)文件,將對(duì)該文件進(jìn)行讀操作

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

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

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

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

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

關(guān)閉Close  #文件號(hào)
       注意:文件以隨機(jī)方式打開(kāi)后,可以同時(shí)進(jìn)行寫(xiě)入和讀出操作,但需要指明記錄的長(zhǎng)度,系統(tǒng)默認(rèn)長(zhǎng)度為128個(gè)字節(jié)。
 (2)讀與寫(xiě)

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

功能:復(fù)制一個(gè)文件

說(shuō)明:不能復(fù)制一個(gè)已打開(kāi)的文件
2.   Kill語(yǔ)句
  格式:Kill  文件名

功能:刪除文件

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

 功能:重新命名一個(gè)文件或目錄

 說(shuō)明:不能使用通配符;具有移動(dòng)文件功能;不能對(duì)已打開(kāi)的文件進(jìn)行重命名操作
4. ChDrive語(yǔ)句
  格式:ChDrive  驅(qū)動(dòng)器

 功能: 改變當(dāng)前驅(qū)動(dòng)器
說(shuō)明:如果驅(qū)動(dòng)器為空,則不變;如果驅(qū)動(dòng)器中有多個(gè)字符,則只會(huì)使用首字母
5.MkDir語(yǔ)句
  格式:MkDir  文件夾名

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

 功能:改變當(dāng)前目錄

 說(shuō)明:改變默認(rèn)目錄,但不改變默認(rèn)驅(qū)動(dòng)器。
7. RmDir語(yǔ)句
  格式:RmDir  文件夾名

功能:刪除一個(gè)存在的目錄

說(shuō)明:不能刪除一個(gè)含有文件的目錄
8. CurDir()函數(shù)
  格式: CurDir[(驅(qū)動(dòng)器)]

功能:可以確定任何一個(gè)驅(qū)動(dòng)器的當(dāng)前目錄。

說(shuō)明:括號(hào)中的驅(qū)動(dòng)器表示需要確定當(dāng)前目錄的驅(qū)動(dòng)器,如果為空,返回當(dāng)前驅(qū)動(dòng)器的當(dāng)前目錄路徑。



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

第八章          VB中ActiveX控件的使用

8.1  概述

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

常用ActiveX控件

ActiveX控件
 ActiveX部件
 文件名
 
TabStrip      頁(yè)框
 Windows通用控件

Microsoft  Windows Common Controls 6.0
  路徑:

Windows\system\

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

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

8.1    多選項(xiàng)卡對(duì)話(huà)框——頁(yè)框(TabStrip)

1.  設(shè)置頁(yè)框的外觀(guān)樣式

(1) 先在窗體上畫(huà)出一個(gè)TabStrip對(duì)象;

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

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

(4) 在TabStrip屬性窗口里選擇選項(xiàng)卡(Tabs)標(biāo)簽,在標(biāo)題(Caption)框里輸入標(biāo)題和關(guān)鍵字;

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

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

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

    在TabStrip屬性窗口里選擇選項(xiàng)卡標(biāo)簽,單擊插入選項(xiàng)卡按鈕增加標(biāo)簽,單擊刪除選項(xiàng)卡按鈕刪除標(biāo)簽。

3.在TabStrip上顯示圖形

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

2) 在此對(duì)象上右擊,選擇屬性,打開(kāi)屬性頁(yè)窗口;

3) 選擇圖象標(biāo)簽, 單擊插入圖片按鈕,在選定圖片對(duì)話(huà)框里選擇想使用的位圖或圖標(biāo),然后單擊打開(kāi)按鈕;為每個(gè)想添加圖形的選項(xiàng)卡重復(fù)此步;

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

5) 選擇TabStrip, 進(jìn)入TabStrip屬性窗口并選擇通用標(biāo)簽,在圖象列表框里選擇ImageList1;

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

4.在TabStrip上放置其它控件

    在窗體上象添加普通控件一樣,把每一頁(yè)需要的控件添上,控件不止一個(gè)時(shí),應(yīng)該用Frame來(lái)分組,注意:除了默認(rèn)的第一頁(yè)上的Frame控件外,其他所有Frame的Visible屬性都應(yīng)該設(shè)為假。

5.設(shè)計(jì)代碼

    在用戶(hù)選擇了標(biāo)簽后,TabStrip要求編寫(xiě)代碼來(lái)顯示或隱藏控件。可用類(lèi)似下面的代碼來(lái)識(shí)別用戶(hù)在哪一個(gè)項(xiàng)目上單擊。

Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.key
Case 1
<選第一項(xiàng)時(shí)需要執(zhí)行的代碼>
Case 2
<選第一項(xiàng)時(shí)需要執(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(窗格) 對(duì)象組成,最多能被分成 16 個(gè) Panel 對(duì)象,每一個(gè) Panel 對(duì)象能包含文本和/或圖片。控制個(gè)別窗格的外觀(guān)屬性包括 Width、Alignment(文本和圖片的)和 Bevel(斜面)。此外,能使用 Style 屬性七個(gè)值中的一個(gè)自動(dòng)地顯示公共數(shù)據(jù),諸如日期、時(shí)間和鍵盤(pán)狀態(tài)等。

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

先在窗體上畫(huà)出一個(gè)StatusBar對(duì)象,再右擊該對(duì)象,從快捷菜單中選擇“屬性”,進(jìn)入屬性頁(yè)設(shè)置窗口,進(jìn)行下面的設(shè)置:

(1) 選擇窗格形狀

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

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

     在屬性窗口里選擇窗格標(biāo)簽,單擊插入窗格按鈕添加一個(gè)窗格,或單擊刪除窗格按鈕刪除一個(gè)窗格。

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

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

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

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

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

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

3). 如果想加入圖形,單擊瀏覽按鈕打開(kāi)一個(gè)圖形選擇對(duì)話(huà)框,選擇想加入的圖形,然后單擊打開(kāi)按鈕。

(5)  編寫(xiě)代碼

如果是一個(gè)單窗格狀態(tài)欄,當(dāng)用戶(hù)單擊狀態(tài)欄時(shí),只需用下面的事件過(guò)程來(lái)響應(yīng):

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

     如果是一個(gè)多窗格狀態(tài)欄,就需要鑒別用戶(hù)單擊的是哪一個(gè)窗格,可用下面的事件過(guò)程來(lái)識(shí)別用戶(hù)所單擊的窗格:

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) 在工具箱里單擊工具欄圖標(biāo),拖到窗體的任何位置,Visual Basic自動(dòng)將ToolBar移到頂部。再右擊該對(duì)象,從快捷菜單中選擇“屬性”,進(jìn)入屬性頁(yè)設(shè)置窗口;

2) 選擇按鈕標(biāo)簽,單擊插入按鈕,Visual Basic就會(huì)在工具欄上顯示一個(gè)空按鈕,重復(fù)此步插入多個(gè)按鈕;

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

(2) 為工具欄增加圖畫(huà)

1). 在Visual Basic工具箱里單擊ImageList圖標(biāo),并將它拖到窗體的任何位置(位置不重要,因?yàn)樗偸遣豢梢?jiàn)的),再右擊該對(duì)象,從快捷菜單中選擇“屬性”,進(jìn)入屬性頁(yè)設(shè)置窗口;

2). 選擇圖象標(biāo)簽,單擊插入圖片,在選定圖形對(duì)話(huà)框里選擇想使用的位圖或圖標(biāo),然后單擊打開(kāi)按鈕。為每個(gè)想添加圖形的工具欄按鈕重復(fù)此步。

3). 單擊確定按鈕。

4). 進(jìn)入ToolBar屬性對(duì)話(huà)框,選擇通用標(biāo)簽,在圖象列表框里選擇剛才添加的ImageList控件。

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

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

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

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

      在ToolBar屬性對(duì)話(huà)框中選擇按鈕標(biāo)簽,在標(biāo)題框里輸入想顯示在按鈕上的文本。

(4)添加ToolTips

       ToolTips是一種當(dāng)點(diǎn)到工具按鈕時(shí)彈出的小標(biāo)簽。ToolTips很方便,可以告訴那些新手每個(gè)按鈕是干什么用的。在ToolBar屬性對(duì)話(huà)框中選擇按鈕標(biāo)簽,在工具提示文本框里輸入想作為T(mén)oolTip的文本。

(5)編寫(xiě)代碼

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

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

8.3    進(jìn)程條(ProgressBar)和滑塊(Slider)

1. 進(jìn)程條

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

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

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

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

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

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

    示例:

Private Sub Command1_Click()
If  ProgressBar1.Value < ProgressBar1.Max Then
ProgressBar1.Value = ProgressBar1.Value + 5
Else
ProgressBar1.Visible = False    ‘當(dāng)進(jìn)程條滿(mǎn)了的時(shí)候讓進(jìn)程條消失
End If
End Sub

2.滑塊

      Slider 控件是包含滑塊和可選擇性刻度標(biāo)記的窗口,在窗體上畫(huà)出滑塊控件,右擊,選擇屬性,然后進(jìn)行下列設(shè)置:

(1)選擇滑塊的外觀(guān)

1)方向?qū)傩詻Q定滑塊的方位,可以是垂直的或水平的滑塊。

2)滑塊樣式屬性決定滑塊標(biāo)記的樣子。

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

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

    1)Min,Max屬性

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

2)LargeChange,SmallChange屬性

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

3)Value屬性

     Value屬性代表當(dāng)前滑塊所處位置的值,這個(gè)值由滑塊的相對(duì)位置決定。

4)Change事件

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

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

1.ListView 控件

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

    可使用 ListView 控件將稱(chēng)作 ListItem 對(duì)象的列表?xiàng)l目組織成下列四種不同的視圖之一:

    大(標(biāo)準(zhǔn))圖標(biāo)   小圖標(biāo)   列表   報(bào)表

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

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

     可以使用 HideColumnHeaders 屬性決定是否在 ListView 控件中顯示列標(biāo)頭。列標(biāo)頭可以在設(shè)計(jì)時(shí)添加,也可以在運(yùn)行時(shí)添加。設(shè)計(jì)時(shí),使用 ListView“控件屬性”對(duì)話(huà)框的“列首”選項(xiàng)卡添加列標(biāo)頭。運(yùn)行時(shí),使用 Add 方法添加 ColumnHeader 對(duì)象到 ColumnHeaders 集合中。

2.TreeView 控件

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

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

     TreeView 控件使用由 ImageList 屬性指定的 ImageList 控件,來(lái)存儲(chǔ)顯示于 Node 對(duì)象的位圖和圖標(biāo)。任何時(shí)刻,TreeView 控件只能使用一個(gè) ImageList。這意味著,當(dāng) TreeView 控件的 Style 屬性被設(shè)置成顯示圖像的樣式時(shí),TreeView 控件中每一項(xiàng)的旁邊都有一個(gè)同樣大小的圖像。

8.5        多媒體控件

1.  多媒體控件

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

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

2.媒體播放器控件

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

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

(2) AutoStart(是否自動(dòng)播放),默認(rèn)是True。

(3) AutoRewind(是否自動(dòng)循環(huán)),默認(rèn)是False。

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

 
 
 
 

 



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

1.圖象列表

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

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

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

當(dāng)與 Windows 通用控件一起使用 ImageList 控件時(shí),在將它綁定到第二個(gè)控件之前,按照希望的順序?qū)⑷啃枰膱D像插入到 ImageList。一旦 ImageList 被綁定到第二個(gè)控件 ,就不能再刪除圖像了,并且也不能將圖像插入到 ListImages 集合中間。但是可以在集合的末尾添加圖像。

2.圖象組合框

      ImageCombo 控件是標(biāo)準(zhǔn) Windows 組合框的允許繪圖版本??丶斜聿糠种械拿恳豁?xiàng)都可以有一幅指定的圖片。它可以顯示一個(gè)包含圖片的項(xiàng)目列表,每一項(xiàng)可以有自己的圖片,也可以對(duì)多個(gè)列表項(xiàng)使用相同的圖片。

     除了支持圖片之外, ImageCombo 還提供了一個(gè)對(duì)象和基于集合的列表控件??丶斜聿糠值拿恳豁?xiàng)是一個(gè)不同的 ComboItem 對(duì)象,而且列表中的所有項(xiàng)組合起來(lái)構(gòu)成 ComboItems 集合。這就使它容易一項(xiàng)一項(xiàng)地指定諸如標(biāo)記文本、ToolTip文本、關(guān)鍵字值以及縮進(jìn)等級(jí)等屬性。

8.7        通用對(duì)話(huà)框控件

     Windows應(yīng)用程序里的Open對(duì)話(huà)框,Save As對(duì)話(huà)框在各個(gè)應(yīng)用程序里看起來(lái)都是一樣的,通用對(duì)話(huà)框控件就可以提供這些對(duì)話(huà)框的標(biāo)準(zhǔn)功能。

1.Open對(duì)話(huà)框及Save As對(duì)話(huà)框

打開(kāi)Open對(duì)話(huà)框使用ShowOpen方法,打開(kāi)Save As對(duì)話(huà)框使用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              ' 顯示打開(kāi)對(duì)話(huà)框
Call OpenFile(CommonDialog1.FileName)
ErrorHandler:
Exit Sub
End Sub

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

2.Color對(duì)話(huà)框

    下面的過(guò)程可用用戶(hù)選擇的顏色作為窗體的底色。

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

3.Fonts對(duì)話(huà)框

   下面的過(guò)程可用字體對(duì)話(huà)框改變文本框的字體:

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)了通用對(duì)話(huà)框的Flags屬性決定了通用對(duì)話(huà)框的一些可選項(xiàng),不過(guò)即使不賦值給Flags,代碼也一樣會(huì)按缺省的情況去執(zhí)行的。

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

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

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

史翔 2005-02-25 10:26:20
re:[b]常見(jiàn)錯(cuò)誤和難點(diǎn)分析[/b][b...

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

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

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

查看完整版本: » VB基礎(chǔ)教程


Powered by 夢(mèng)清雲(yún)淡社區(qū)  © 2005-2008 http:///

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多