夢清雲淡社區 - http://sxhouse.org/ ? 編程專區 ? VB基礎教程
頁: 1 [2] 3
史翔 2005-02-25 10:23:23
re:[b]2.[/b][b]注意事項[/b]...2.注意事項 (1) 函數名的命名規則與變數命名規則相同;函數過程必須由函數名返回一個值。 (2) 如果函數體內沒有給函數名賦值,則返回對應類型的預設值,數值型返回0,字元型返回空字元串。 (3) 函數過程內部不得再定義Sub過程或Function過程。 例:編寫一個計算N!的函數過程

3.Function過程的調用 調用Function過程與調用VB內部函數的方法一樣,即在表達式中寫出它的名稱和相應的實在參數。 語法: 過程名([實參列表]) 注意:(1)必須給參數加上括弧,即使沒有參數也不可省略括弧; (2)VB中也允許象調用Sub過程一樣來調用Function,但這樣就沒有返回值。 4.調用其他模塊中的過程  (1)調用窗體中的過程 從窗體模塊的外部調用窗體中的公有過程,必須用窗體的名字作為調用前綴。如: Call Form1.Examsub([實參表])  (2)調用標準模塊中的過程 如果在應用程序中,過程名是唯一的,則調用時不必加模塊名。如果有同名的,則在同一模塊內調用時可以不加模塊名,而在其他模塊中調用時必須加模塊名。  (3)類模塊中的過程 調用類模塊的公有過程時,要求用指向該類某一實例的變數修飾過程,即首先要聲明類的實例為對象變數,並以此變數作為過程名前綴修飾詞,不可直接用類名作為前綴修飾詞。 如:在類模塊Class1中含有過程clssub,變數Democlass是類Class1的一個實例,則調用clssub的方法是: Dim Democlass AS New Class1 Call Democlass.clasub 例:函數過程與子過程的異同,計算級數的部分和   1 + x + x2/2! +……+ xn/n! +……, |xn/n!|

6.3 參數的傳遞 1.形參與實參的概念   形參:指出現在Sub 和Function過程形參表中的變數名、數組名,過程被調用前,沒有分配內存,其作用是說明自變數的類型和形態以及在過程中的角色。形參可以是: 1)除定長字元串變數之外的合法變數名; 2)後面跟()括弧的數組名。   實參:是在調用Sub 和Function過程時,傳送給相應過程的變數名、數組名、常數或表達式。在過程調用傳遞參數時,形參與實參是按位置結合的,形參表和實參表中對應的變數名可以不必相同,但位置必須對應起來。 形參與實參的關係:形參如同公式中的符號,實參就是符號具體的值;調用過程:即實現形參與實參的結合,也就是把值代入公式進行計算。 2. 按值傳遞參數(定義時加ByVal) 按值傳遞參數(Passed By Value)時,是將實參變數的值複製一個到臨時存儲單元中,如果在調用過程中改變了形參的值,不會影響實參變數本身,即實參變數保持調用前的值不變。 3.按地址傳遞參數(定義時沒有修飾詞或帶關鍵字ByRef) 按地址傳遞參數時,把實參變數的地址傳送給被調用過程,形參和實參共用內存的同一地址。在被調用過程中,形參的值一旦改變,相應實參的值也跟著改變。如果實參是一個常數或表達式,VB會按「傳值」方式來處理。 4.數組參數 VB允許把數組作為形參出現在形參表中,語法: [b]形參數組名() [As [/b]數據類型] 形參數組只能按地址傳遞參數,對應的實參也必須是數組,且數據類型相同。調用過程時,把要傳遞的數組名放在實參表中,數組名後面不跟圓括弧。在過程中不可 以用Dim語句對形參數組進行聲明,否則會產生「重複聲明」的錯誤。但在使用動態數組時,可以用ReDim語句改變形參數組的維界,重新定義數組的大小。 5. 對象參數 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.靜態變數 用Static聲明的靜態變數,在每次調用過程時保持原來的值,不重新初始化。而用Dim聲明的變數,每次調用過程時,重新初始化 例:顯示1到5個數。 5.同名變數 對不同範圍內出現的同名變數,可以用模塊名加以區別。一般情況下,當變數名相同而作用域不同時,優先訪問局限性大的變數。 6.5 遞歸過程 1.遞歸的概念 通俗的講,用自身的結構來描述自身就稱為「遞歸」。如對階乘運算的定義就是遞歸的: n!=n(n-1)! (n-1)!=(n-1)(n-2)! 2.遞歸子過程和遞歸函數  VB 允許一個自定義子過程或函數過程在過程體的內部調用自己,這樣的子過程或函數就叫遞歸子過程和遞歸函數。遞歸過程包含了遞推和回歸兩個過程。構成遞歸的條件是: (1)遞歸結束條件和結束時的值 (2)能用遞歸形式表示,並且遞歸向結束條件發展。 例:編製程序求fac(n)=n!的函數 3.注意事項 (1)遞歸演算法設計簡單,但消耗的上機時間和佔據的內存空間比非遞歸大 (2) 設計一個正確的遞歸過程或函數過程必須具備兩點:1)具備遞歸條件;2)具備遞歸結束條件 (3) 一般而言,遞歸函數過程對於計算階乘、級數、指數運算有特殊效果。

史翔 2005-02-25 10:23:54
re:[b]第七章[/b][b] VB[/b]...第七章 VB中的文件操作 7.1 文件系統控制項 1. 文件系統控制項種類  (1) 驅動器列表框(DriveListBox):用來顯示當前機器上的所有盤符   (2) 目錄列表框(DirListBox):用來顯示當前盤上的所有文件夾 (3) 文件列表框(FileListBox):用來顯示當前文件夾下的所有文件名 2. 重要屬性 屬性 適用的控制項 作用 示例 Drive 驅動器列表框 包含當前選定的驅動器名 Driver1. Drive="C" Path 目錄和文件列表框 包含當前路徑 Dir1.Path="C:WINDOWS" FileName 文件列表框 包含選定的文件名 MsgBox File1.FileName Pattern 文件列表框 決定顯示的文件類型 File1.Pattern="*.BMP" 3. 重要事件 事件 適用的控制項 事件發生的時機 Change 目錄和驅動器列表框 驅動器列表框的Change事件是在選擇一個新的驅動器或通過代碼改變Drive屬性的設置時發生 目錄列表框的Change事件是在雙擊一個新的目錄或通過代碼改變Path屬性的設置時發生 PathChange 文件列表框 當文件列表框的Path屬性改變時發生 PattenChange 文件列表框 當文件列表框的Pattern屬性改變時發生 Click 目錄和文件列表框 用滑鼠單擊時發生 DblClick 文件列表框 用滑鼠雙擊時發生 7.2 文件的讀寫 1. 文件的有關概念  記錄:計算機處理數據的基本單位,由若干個相互關聯的數據項組成。相當於表格中的一行。 文件:記錄的集合,相當於一張表。 文件類型:順序文件、隨機文件、二進位文件。 訪問模式:計算機訪問文件的方式,VB中有順序、隨機、二進位三種訪問模式。 2. 順序訪問模式  順序訪問模式的規則最簡單,指讀出或寫入時,從第一條記錄「順序」地讀到最後一條記錄,不可以跳躍式訪問。該模式專門用於處理文本文件,每一行文本相當於一條記錄,每條記錄可長可短,記錄與記錄之間用「換行符」來分隔。 順序文件的寫入步驟:打開、寫入、關閉; 讀出步驟:打開、讀出、關閉。 (1)打開文件 打開文件的命令是Open,格式為:        Open 「文件名」 For 模式 As [#] 文件號 [Len=記錄長度] 說明: 1)文件名可以是字元串常量也可以是字元串變數 2)模式可以是下面之一:      OutPut:打開一個文件,將對該文件進行寫操作     Input:打開一個文件,將對該文件進行讀操作     Append:打開一個文件,將在該文件末尾追加記錄 3) 文件號是一個介於1-511之間的整數,打開一個文件時需要指定一個文件號,這個文件號就代表該文件,直到文件關閉後這個號才可以被其他文件所使用。可以利用FreeFile()函數獲得下一個可以利用的文件號。   例: Open "D:sjaaa" For Output As #1 意思是:打開D:SJ下aaa文件供寫入數據,文件號為#1
史翔 2005-02-25 10:24:08
re:[b](2)[/b][b]寫操作[/b]...(2)寫操作 將數據寫入磁碟文件所用的命令是:Write# 或Print#。語法格式: [b]  1) Print #文件號,[輸出列表][/b] 例: Open 「D:SJTEST.DAT」 For Output As #1 Print #1,Text1.Text "把文本框的內容一次性寫入文件 Close #1   2)[b]Write #文件號,[輸出列表][/b]  其中的輸出列表一般指用逗號,分隔的數值或字元串表達式。Write #與Print #的功能基本相同,區別是Write #是以緊湊格式存放,在數據間插入逗號,並給字元串加上雙引號。 (3) 關閉文件 結束各種讀寫操作後,必須將文件關閉,否則會造成數據丟失。關閉文件的命令是Close。 Close [#]文件號[,[#]文件號]…… 例: Close #1,#2,#3 (4) 讀操作   1) Input #文件號,變數列表   作用:將從文件中讀出的數據分別賦給指定的變數。 注意:與Write #配套才可以準確地讀出。   2)Line Input #文件號,字元串變數 用於從文件中讀出一行數據,並將讀出的數據賦給指定的字元串變數,讀出的數據中不包含回車符和換行符,可與Print #配套用。   3)Input$(讀取的字元數,#文件號) 該函數可以讀取指定數目的字元。 與讀文件有關的兩個函數: LOF():返回某文件的位元組數 EOF():檢查指針是否到達文件尾。 例:將一個文本文件讀入文本框的三種方法。 3.隨機訪問模式   該模式要求文件中的每條記錄的長度都是相同的,記錄與記錄之間不需要特殊的分隔符號。只要給出記錄號,可以直接訪問某一特定記錄,其優點是存取速度快,更新容易。  (1) 打開與關閉 打開:Open 「文件名」 For Random As [#] 文件號 [Len=記錄長度] 關閉:Close #文件號   注意:文件以隨機方式打開後,可以同時進行寫入和讀出操作,但需要指明記錄的長度,系統默認長度為128個位元組。  (2)讀與寫 讀操作:Get [#]文件號,[記錄號],變數名 說明:Get命令是從磁碟文件中將一條由記錄號指定的記錄內容讀入記錄變數中;記錄號是大於1的整數,表示對第幾條記錄進行操作,如果忽略不寫,則表示當前記錄的下一條記錄。    寫操作:Put [#]文件號,[記錄號],變數名    說明:Put命令是將一個記錄變數的內容,寫入所打開的磁碟文件指定的記錄位置;記錄號是大於1的整數,表示寫入的是第幾條記錄,如果忽略不寫,則表示在當前記錄後插入一條記錄。 4. 二進位訪問模式   打開:Open 「文件名」 For Binary As [#] 文件號 [Len=記錄長度] 關閉:Close #文件號  該模式是最原始的文件類型,直接把二進位碼存放在文件中,沒有什麼格式,以位元組數來定位數據,允許程序按所需的任何方式組織和訪問數據,也允許對文件中各位元組數據進行存取和訪問。  該模式與隨機模式類似,其讀寫語句也是Get 和Put,區別是二進位模式的訪問單位是位元組,隨機模式的訪問單位是記錄。在此模式中,可以把文件指針移到文件的任何地方,剛開始打開時,文件指針指向第 一個位元組,以後隨文件處理命令的執行而一旦。文件一旦打開,就可以同時進行讀寫。 7.3 常用的文件操作語句和函數 1. FileCopy語句   格式:FileCopy 源文件名 目標文件名 功能:複製一個文件 說明:不能複製一個已打開的文件 2. Kill語句   格式:Kill 文件名 功能:刪除文件 說明:文件名中可以使用通配符 *,? 3. Name語句   格式:Name 舊文件名 新文件名  功能:重新命名一個文件或目錄  說明:不能使用通配符;具有移動文件功能;不能對已打開的文件進行重命名操作 4. ChDrive語句   格式:ChDrive 驅動器  功能: 改變當前驅動器 說明:如果驅動器為空,則不變;如果驅動器中有多個字元,則只會使用首字母 5.MkDir語句   格式:MkDir 文件夾名  功能:創建一個新的目錄 6.ChDir語句   格式:ChDir 文件夾名  功能:改變當前目錄  說明:改變默認目錄,但不改變默認驅動器。 7. RmDir語句   格式:RmDir 文件夾名 功能:刪除一個存在的目錄 說明:不能刪除一個含有文件的目錄 8. CurDir()函數   格式: 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 路徑: Windowssystem Mscomctl.ocx Toolbar 工具欄 StatusBar 狀態欄 ProgressBar 進程條 TreeView 分層顯示 ListView 排列顯示 ImageList 圖象列表 Slider 滑塊 ImageCombo 圖象組合框 CommonDialog 通用對話框Microsoft Common Dialog Control 6.0 Comdlg32.ocx MMControl1 多媒體Microsoft Multimedia Control 6.0Mci32.ocx MediaPlayer 媒體播放器Microsoft Media PlayerMsdxm.ocx 8.1 多選項卡對話框——頁框(TabStrip) 1. 設置頁框的外觀樣式 (1) 先在窗體上畫出一個TabStrip對象; (2) 右擊該對象,從快捷菜單中選擇「屬性」; (3) 在TabStrip屬性窗口裡選擇通用(General)標籤,在樣式(Style)列表框里選擇樣式; (4) 在TabStrip屬性窗口裡選擇選項卡(Tabs)標籤,在標題(Caption)框里輸入標題和關鍵字; (5) 如果需要的話,在工具提示文本(ToolTipText)框里輸入提示信息; (6) 在TabStrip屬性窗口裡選擇字體(Font)標籤,設置標題的字體(可以直接採用默認值)。 2.增減標籤總數  在TabStrip屬性窗口裡選擇選項卡標籤,單擊插入選項卡按鈕增加標籤,單擊刪除選項卡按鈕刪除標籤。 3.在TabStrip上顯示圖形 1) 在窗體里拖入一個圖象列表(ImageList)控制項; 2) 在此對象上右擊,選擇屬性,打開屬性頁窗口; 3) 選擇圖象標籤, 單擊插入圖片按鈕,在選定圖片對話框里選擇想使用的點陣圖或圖標,然後單擊打開按鈕;為每個想添加圖形的選項卡重複此步; 4) 單擊確定按鈕, ImageList里就存儲了需要的圖片。 5) 選擇TabStrip, 進入TabStrip屬性窗口並選擇通用標籤,在圖象列表框里選擇ImageList1; 6) 選擇選項卡標籤,單擊緊挨索引框的向左或向右箭頭以選擇一個Tab序號。在圖象框里輸入一個數,輸入為1,則顯示剛才ImageList控制項里的第一個圖形,輸入為2,則顯示剛才ImageList控制項里的第二個圖形,單擊確定按鈕完成。 4.在TabStrip上放置其它控制項  在窗體上象添加普通控制項一樣,把每一頁需要的控制項添上,控制項不止一個時,應該用Frame來分組,注意:除了默認的第一頁上的Frame控制項外,其他所有Frame的Visible屬性都應該設為假。 5.設計代碼 在用戶選擇了標籤後,TabStrip要求編寫代碼來顯示或隱藏控制項。可用類似下面的代碼來識別用戶在哪一個項目上單擊。 Private Sub TabStrip1_Click() Select Case TabStrip1.SelectedItem.key Case 1 <選第一項時需要執行的代碼> Case 2 <選第一項時需要執行的代碼> …… 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 狀態欄(StatusBar)和工具欄(ToolBar) 1. 狀態欄的作用與組成 StatusBar 控制項由 Panel(窗格) 對象組成,最多能被分成 16 個 Panel 對象,每一個 Panel 對象能包含文本和/或圖片。控制個別窗格的外觀屬性包括 Width、Alignment(文本和圖片的)和 Bevel(斜面)。此外,能使用 Style 屬性七個值中的一個自動地顯示公共數據,諸如日期、時間和鍵盤狀態等。 2. 創建狀態欄 先在窗體上畫出一個StatusBar對象,再右擊該對象,從快捷菜單中選擇「屬性」,進入屬性頁設置窗口,進行下面的設置: (1) 選擇窗格形狀   在屬性窗口裡選擇通用標籤,在樣式列表框里選擇多窗格(預設形式)或單窗格簡單文本形式。 (2) 添加或刪除狀態欄窗格   在屬性窗口裡選擇窗格標籤,單擊插入窗格按鈕添加一個窗格,或單擊刪除窗格按鈕刪除一個窗格。 (3) 在單窗格里顯示文本    在屬性窗口裡選擇通用標籤,在簡單文本框里輸入想顯示在狀態欄窗格里的文本。用代碼顯示的方式是:   StatusBar1.SimpleText = "要顯示的內容" (4) 在多窗格里顯示文本或圖形 1). 在屬性窗口裡選擇窗格標籤,用索引旁的按鈕選擇窗格序號。 2). 在文本框里輸入想顯示在狀態欄窗格里的文本。用代碼顯示的方式是:StatusBar1.Panels(x).Text = "要顯示的內容" 3). 如果想加入圖形,單擊瀏覽按鈕打開一個圖形選擇對話框,選擇想加入的圖形,然後單擊打開按鈕。 (5) 編寫代碼 如果是一個單窗格狀態欄,當用戶單擊狀態欄時,只需用下面的事件過程來響應: Private Sub StatusBar1_Click() <要執行的代碼> End Sub   如果是一個多窗格狀態欄,就需要鑒別用戶單擊的是哪一個窗格,可用下面的事件過程來識別用戶所單擊的窗格: Private Sub StatusBar1_PanelClick(ByVal Panel As Panel) Select Case Panel.Index Case 1 <要執行的代碼> Case 2 <要執行的代碼> …… End Select End Sub 3.創建工具欄 (1).建立工具欄 1) 在工具箱里單擊工具欄圖標,拖到窗體的任何位置,Visual Basic自動將ToolBar移到頂部。再右擊該對象,從快捷菜單中選擇「屬性」,進入屬性頁設置窗口; 2) 選擇按鈕標籤,單擊插入按鈕,Visual Basic就會在工具欄上顯示一個空按鈕,重複此步插入多個按鈕; 3) 單擊確定按鈕。如果想把按鈕分組,首先插入一個分隔的按鈕,再在對話框里將這個按鈕的樣式屬性改為3-Separator。 (2) 為工具欄增加圖畫 1). 在Visual Basic工具箱里單擊ImageList圖標,並將它拖到窗體的任何位置(位置不重要,因為它總是不可見的),再右擊該對象,從快捷菜單中選擇「屬性」,進入屬性頁設置窗口; 2). 選擇圖象標籤,單擊插入圖片,在選定圖形對話框里選擇想使用的點陣圖或圖標,然後單擊打開按鈕。為每個想添加圖形的工具欄按鈕重複此步。 3). 單擊確定按鈕。 4). 進入ToolBar屬性對話框,選擇通用標籤,在圖象列表框里選擇剛才添加的ImageList控制項。 5). 選擇按鈕標籤,單擊緊挨Index框的向左或向右箭頭以選擇一個按鈕序號。出現在工具欄最左邊的按鈕序號為1。 6). 在Image框里輸入一個數,輸入為1,則顯示剛才ImageList控制項里的第一個圖形,輸入為2,則顯示剛才ImageList控制項里的第二個圖形。 7). 為每個按鈕重複第6步, 單擊確定按鈕,現在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 <要執行的代碼> Case 2 <要執行的代碼> …… End Select End Sub 8.3 進程條(ProgressBar)和滑塊(Slider) 1. 進程條 作用:進程條控制項用於監視操作完成的進度。 創建:在窗體上畫出進程條控制項,右擊,選擇屬性,然後進行所需的外觀設置。 主要屬性:ProgressBar 控制項有一個行程和一個當前位置。行程代表該操作的整個持續時間。當前位置則代表應用程序在完成該操作過程時的進度。Max 和 Min 屬性設置了行程的界限。Value 屬性則指明了在行程範圍內的當前位置。 (1) Min屬性代表進程條全空時的值,預設時為0。 (2) Max屬性代表進程條全空時的值,預設時為100。 (3) Value屬性代表進程條當前的值(但不出現在屬性窗口中),它大於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)滑塊頻率屬性規定了沿著滑塊的標記的間隔大小,預設的狀態是1,表明每個可能值都出現標記,如果把值設置為3,則每三個可能值出現一個標記。 (2)滑塊的主要屬性及事件  1)Min,Max屬性   Min屬性決定滑塊最左端或最頂端所代表的值。Max屬性決定滑塊最右端或最下端所代表的值。 2)LargeChange,SmallChange屬性   SmallChange決定在滑塊兩端的箭頭鈕上單擊時改變的值。LargeChange決定在滑塊上方或下方區域單擊時改變的值。 3)Value屬性    Value屬性代表當前滑塊所處位置的值,這個值由滑塊的相對位置決定。 4)Change事件    當滑塊位置發生變化時就引發了Change事件。 8.4 排列顯示(ListView)控制項和分層顯示(TreeView) 控制項 1.ListView 控制項 象「資源管理器」的右側一樣,可使用四種不同視圖顯示項目。通過此控制項,可將項目組成帶有或不帶有列標頭的列,並顯示伴隨的圖標和文本。  可使用 ListView 控制項將稱作 ListItem 對象的列表條目組織成下列四種不同的視圖之一:  大(標準)圖標 小圖標 列表 報表  View 屬性決定在列表中控制項使用何種視圖顯示項目。還可用 LabelWrap 屬性控制列表中與項目關聯的標籤是否可換行顯示。另外,還可管理列表中項目的排序方法和選定項目的外觀。 ListView 控制項包括 ListItem 和 ColumnHeader 對象。ListItem 對象定義 ListView 控制項中項目的各種特性,如: 項目的簡要描述、由 ImageList 控制項提供的與項目一起出現的圖標、附加的文本片段,稱作子項目,它們與顯示在報表視圖中的 ListItem 對象關聯。  可以使用 HideColumnHeaders 屬性決定是否在 ListView 控制項中顯示列標頭。列標頭可以在設計時添加,也可以在運行時添加。設計時,使用 ListView「控制項屬性」對話框的「列首」選項卡添加列標頭。運行時,使用 Add 方法添加 ColumnHeader 對象到 ColumnHeaders 集合中。 2.TreeView 控制項  該控制項象「資源管理器」的左側一樣,用於顯示結點( Node) 對象的分層列表,每個 Node 對象均由一個標籤和一個可選的點陣圖組成。TreeView 一般用於顯示文檔標題、索引入口、磁碟上的文件和目錄、或能被有效地分層顯示的其它種類信息。  創建了 TreeView 控制項之後,可以通過設置屬性與調用方法對各 Node 對象進行操作,這些操作包括添加、刪除、對齊和其它操作。可以編程展開與折回 Node 對象來顯示或隱藏所有子節點。  TreeView 控制項使用由 ImageList 屬性指定的 ImageList 控制項,來存儲顯示於 Node 對象的點陣圖和圖標。任何時刻,TreeView 控制項只能使用一個 ImageList。這意味著,當 TreeView 控制項的 Style 屬性被設置成顯示圖像的樣式時,TreeView 控制項中每一項的旁邊都有一個同樣大小的圖像。 8.5 多媒體控制項 1. 多媒體控制項 Multimedia MCI 控制項管理媒體控制介面 (MCI) 設備上的多媒體文件的記錄與回放。從概念上說,這種控制項就是一組按鈕,它被用來向諸如音效卡、MIDI 序列發生器、CD-ROM 驅動器、視頻 CD 播放器和視頻磁帶記錄器及播放器等設備發出 MCI 命令。MCI 控制項還支持 Windows (*.avi) 視頻文件的回放。 在允許用戶從 Multimedia MCI 控制項選取按鈕之前,應用程序必須先將 MCI 設備打開,並在 Multimedia MCI 控制項上啟用適當的按鈕。在 Visual Basic 中,應將 MCI Open 命令放到 Form_Load 事件中。 2.媒體播放器控制項 可以播放各種多媒體文件,主要屬性有: (1) filename(待播放的文件名),可以在屬性窗口中設置,也可以用代碼實現。 (2) AutoStart(是否自動播放),默認是True。 (3) AutoRewind(是否自動循環),默認是False。 (4) PlayCount(文件播放遍數),默認是1。 8.6 圖象列表(ImageList)和 圖象組合框(ImageCombo) 1.圖象列表 ImageList 控制項是包含 ListImage 對象的集合,該集合中的每個對象都可以通過其索引或關鍵字被引用。ImageList 控制項不能獨立使用,只是作為一個便於向其它控制項提供圖象的資料中心。 ImageList 控制項的作用象圖像的儲藏室,同時,它需要第二個控制項顯示所儲存的圖像。第二個控制項可以是任何能顯示圖像 Picture 對象的控制項,也可以是特別設計的、用於綁定 ImageList 控制項的 Windows 通用控制項之一。這些控制項包括ListView、ToolBar、TabStrip、Header、ImageCombo、和 TreeView 控制項。為了與這些控制項一同使用 ImageList,必須通過一個適當的屬性將特定的 ImageList控制項綁定到第二個控制項。對於 ListView 控制項,必須設置其 Icons 和 SmallIcons 屬性為 ImageList 控制項。對於 TreeView、TabStrip、ImageCombo、和 Toolbar 控制項,必須設置 ImageList 屬性為 ImageList 控制項。 一旦 ImageList 與某個 Windows 通用控制項相關聯,就可以在過程中用 Index 屬性或 Key 屬性的值來引用 ListImage 對象。 當與 Windows 通用控制項一起使用 ImageList 控制項時,在將它綁定到第二個控制項之前,按照希望的順序將全部需要的圖像插入到 ImageList。一旦 ImageList 被綁定到第二個控制項 ,就不能再刪除圖像了,並且也不能將圖像插入到 ListImages 集合中間。但是可以在集合的末尾添加圖像。 2.圖象組合框 ImageCombo 控制項是標準 Windows 組合框的允許繪圖版本。控制項列表部分中的每一項都可以有一幅指定的圖片。它可以顯示一個包含圖片的項目列表,每一項可以有自己的圖片,也可以對多個列表項使用相同的圖片。  除了支持圖片之外, 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 其中第三行決定了在文件格式類型欄里出現的文件類型。第五行需要一個自己的打開文件的過程,這個過程需要的參數就是通用對話框返回的文件名。通用對話框的 CancelError屬性設為True的話,用戶單擊Cancel按鈕將產生一個錯誤信息程序,憑藉這個信息程序可以檢測到用戶的放棄操作。 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  代碼的第三行出現了通用對話框的Flags屬性決定了通用對話框的一些可選項,不過即使不賦值給Flags,代碼也一樣會按預設的情況去執行的。
史翔 2005-02-25 10:25:31
re:[b]第九章[/b][b] VB[/b]...第九章 VB的資料庫操作 9.1 資料庫的基礎知識 1.計算機數據管理技術的發展 第一階段:人工管理階段,特點是數據不長期保存,沒有軟體系統對數據進行管理,沒有文件的概念,一組數據對應一個程序。 第二階段:採用文件管理方式,特點是數據不再是程序的組成部分,而是有組織、有結構地構成文件形式,形成數據文件;文件管理系統是應用程序與數據文件的介面。 第三階段:資料庫管理方式,特點是對所有數據實行統一、集中、獨立的管理,數據獨立於程序存在,並可以提供給各類不同用戶使用。 2.資料庫的基本概念 (1) 資料庫(DataBase DB)   定義:是以一定的組織形式存放在計算機存儲介質上的相互關聯的數據的集合。  特點: b 具有最小的冗餘度 具有數據獨立性 實現數據共享 安全可靠,保密性能好 (2) 資料庫管理系統(DataBase Management System DBMS) 定義:是操縱和管理資料庫的系統軟體。 功能:維護資料庫、接收和完成用戶程序或命令提出的訪問資料庫的各種請求。 數據語言: z v 數據定義語言(DDL): 用來建立所需的資料庫(即設計庫結構) 數據操作語言(DML): 用來對資料庫進行查詢和維護操作。 t 數據控制語言(DCL): 用來控制數據的訪問許可權及事務管理。 關係型資料庫使用的標準語言是結構化查詢語言(Structured Query Language, SQL)。 (3) 資料庫系統(DataBase System DBS) 定義; 以資料庫應用為基礎的計算機系統。 組成:一個完整的資料庫系統由資料庫、資料庫管理系統、資料庫管理員和應用程序組成。 資料庫也可以這樣劃分其組成: 硬體:計算機硬體設備 軟體:資料庫管理系統 、操作系統、開發工具、應用程序 用戶:應用程序設計員、終端用戶、資料庫管理員 分類 層次型資料庫 網狀型資料庫 網狀型資料庫 分代 第一代 非關係型資料庫系統,60年代末問世,包括層次型和網狀型 第二代 關係型資料庫系統(RDBS),70年代中期問世 第三代 對象-關係資料庫系統(ORDBS 、OOBDS),80年代中期至今 上述三個概念之間的聯繫:在資料庫系統中通過資料庫管理系統來建立和使用資料庫。 3.數據模型  數據模型:即描述實體模型的數據。 數據模型的分類: 層次模型(採用樹型結構) 網路模型(採用無向圖型結構) 關係模型(採用二維表結構) 關係模型的性質: 二維表的記錄數隨數據的增加而改變,但其欄位數是相對固定的 二維表中的每一列均有唯一的欄位名 二維表中不允許出現完全相同的兩行 二維表中行的順序、列的順序均可以任意交換 4. 關係型資料庫的基本結構 關係型資料庫的基本結構是一張二維表,包括以下概念: (1) 記錄(Record):數據表中的每一行數據 (2) 欄位(Field):數據表中的每一列,表頭(第一行)的內容為欄位名 (3) 數據表(Table):相關數據組成的二維表格 (4) 資料庫(Database):相關數據表的集合 (5) 關係(Relation):相關表之間通過相關聯的欄位建立的聯繫。  (6) 索引(Index):指按表文件中某個關鍵欄位或表達式建立記錄的邏輯順序。它是由一系列記錄號組成的一個列表,目的是提供對數據的快速訪問。索引不改變表中記錄的物理順序。   索引關鍵字(索引表達式):用來建立索引的一個欄位或欄位表達式。 ngf 資料庫和數據表可以通過資料庫管理系統軟體來建立,如:Access,Visual FoxPro,SQL Server 、Sybase、 Oracle。在VB環境下可以直接建立Access資料庫。   關係型數據表的特點 :(1)每一個欄位不可再分解,也不能有名字相同的欄位 ; hgfhgfyh (2)每一列中的數據都有相同的數據類型; hfyftytfyyy (3)表中沒有內容完全相同的行(記錄)。 5.查詢的概念   查詢(query):從相關數據表中選取符合特定要求的數據。   創建方法:可以通過查詢生成器創建一個查詢,也可以在SQL窗口直接用SELECT—SQL命令寫出查詢。 9.2 資料庫管理器 1. 資料庫管理器介紹 在VB中可以通過「外接程序」菜單中的「可視化數據管理器」調出「VisData」資料庫管理器窗口。 菜單選項 功能描述 文件 打開資料庫 打開指定的資料庫 新建 根據所選類型建立新資料庫 導入/導出 從其他資料庫導入數據表,或導出數據表及SQL查詢結果 工作空間 顯示註冊對話框註冊新工作空間,用新輸入的用戶名和密碼從新的工作空間重新打開當前資料庫。 壓縮MDB 壓縮指定的Access資料庫,創建一個加密或解密文件。 修復MDB 修復指定的Access資料庫 實用程序 查詢生成器 建立、查看、執行和存儲SQL查詢 數據窗口設計器 創建數據窗體並將其添加到VB工程中 全局替換 創建SQL表達式並更新所選數據表中滿足條件的記錄 附加 顯示當前Access資料庫中所有附加數據表及連接條件 用戶組/用戶 查看和修改用戶組、用戶、許可權等設置 System.mda 創建System.mda文件,以便為每個文件設置安全機制 性能選項 設置超時值 2. 建立資料庫 資料庫的基本操作: 創建數據表: 設計表名和表結構 輸入記錄 建立索引 數據維護: 增加記錄 修改記錄 刪除記錄  創建數據表的主要步驟: 設計表結構 → 輸入記錄 → 建立索引 → 數據維護   (1)設計表結構 啟動可視化數據管理器 → 在database窗口中右擊,從菜單中選擇「新表」 → 在表結構窗口中輸入表名→ 添加欄位 → 確定欄位名稱和屬性、有效性規則 → 建立索引 →生成表結構。    「添加欄位」對話框各選項說明 選項名 描述 名稱 即每個欄位的名字(對所用字元沒有什麼限制) 類型 指該欄位的數據特徵,包括:Boolean、Byte、Integer、Long、Currency、Single、Double、Date/Time、Text、Binary(二進位型,存放圖片)、Memo(備註型,存放長文本) 大小 欄位寬度,指該欄位所能容納數據的的最大位元組數 固定欄位 欄位寬度固定不變 可變欄位 欄位寬度可變 允許零長度 表示空字元串可作為有效的欄位值 必要的 表示該欄位值不可缺少 順序位置 欄位在表中的順序位置 驗證文本 當向表中輸入無效值時系統顯示的提示信息 驗證規則 驗證輸入欄位值的簡單規則,目的是使所輸數據符合設定的條件 默認值 在輸入時設置的欄位初始值,以減少輸入重複性數據時的工作量   (2)輸入記錄    在database窗口中選中表名並右擊,從菜單中選擇「打開」 →在數據表窗口輸入記錄(注意窗口樣式)→ 單擊「新增」→ 在窗口中輸入記錄並「更新」 →重複……   (3) 維護記錄 在database窗口中選中表名並右擊,從菜單中選擇「打開」 →單擊「編輯」/「刪除」/「新增」,即可完成對記錄的修改、刪除、添加操作。 3. 建立查詢 建立查詢就是在數據表中找到符合特定條件的記錄並組成一張新表。 在database窗口中選中表名並右擊,從菜單中選擇「新查詢」 →在查詢生成器中構造查詢條件→單擊「運行」 →單擊「保存」,給出查詢結果文件名→「關閉」。  查詢生成器說明 各選項 描述 查詢表達式 設置查詢應該滿足的基本條件,可以用and /or來設置應滿足的多個條件 表/欄位名 設置查詢結果中將顯示的欄位名,單擊一個加亮便選中了 前百分之幾條 只顯示查詢結果中的前若干條記錄 前N條記錄 只顯示查詢結果中的前N條記錄 「運行」按鈕 執行查詢命令,並顯示出查詢結果 「顯示」按鈕 用消息框顯示SQL命令 「複製」按鈕 將SQL命令複製到SQL窗口 「保存」按鈕 將查詢結果取個名並保存到資料庫中 「清除」按鈕 清除條件列表框中的查詢條件 分組條件 將查詢結果分組,一般每組只有一個記錄 排序條件 將查詢結果按順序顯示出來,ASC(升序)、DESC(降序) 連接條件 設置相關表之間的連接欄位 9.3 數據控制項 1. 數據控制項的建立 從VB工具箱中單擊Data控制項,在窗體上畫出數據控制項即可。 2. 數據控制項的屬性 屬性名稱 作用 Connect 指定數據控制項所要連接的資料庫類型,VB默認的是Access的MDB資料庫,也可以連接DBF、XLS、ODBC等資料庫 DatabaseName 指定具體使用的資料庫文件名,包括路徑名 RecordSource 指定具體可訪問的數據,這些數據構成記錄集對象Recordset對象,可以是資料庫中的單個表名、一個存儲查詢,也可以是SQL查詢命令 RecordsetType 確定記錄集類型,有三種: 0——Table(表); 1——Dynaset(動態,默認的) ;2——Snapshot(快照) BofAction 當記錄指針指向記錄集的開始時,確定數據控制項該採取的操作: 0——控制項重定位到第一個記錄 1——移過記錄集開始位,定位到一個無效記錄,觸發數據控制項對第一個記錄的無效事件Validate EofAction 當記錄指針指向記錄集的結束時,確定數據控制項該採取的操作: 0——控制項重定位到最後一個記錄 1——移過記錄集結束位,定位到一個無效記錄,觸發數據控制項對最後一個記錄的無效事件Validate 2——向記錄集加入新的空記錄,可以對新記錄進行編輯,移動記錄指針新記錄寫入資料庫 綁定控制項、數據控制項、資料庫之間的關係:   綁定控制項的屬性: DataSource——通過一個有效的數據控制項連接到一個資料庫上。 DataField——將資料庫中的有效欄位連接到綁定控制項上。 除了常規控制項外,可以與Data數據控制項綁定的控制項有: 控制項名稱 部件名稱 常用屬性 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]數據控制項的...3. 數據控制項的事件 事件名稱 觸發時間 Reposition 發生在一條記錄成為當前記錄後。只要將記錄指針從一條記錄移動到另一條記錄就會觸發。 Validate 在一條不同的記錄成為當前記錄之前,Update 方法之前(用 UpdateRecord 方法保存數據時除外);以及 Delete、Unload 或 Close 操作之前會發生該事件。它檢查被數據控制項綁定的控制項內的數據是否發生變化。 語法:Private Sub Data_Validate(Action As Integer, Save As Integer) …… End Sub    Validate事迹的 Action參數 Action值 描述 Action值 描述 0 取消對數據控制項的操作 6 Update 操作 1 MoveFirst 方法 7 Delete 方法 2 MovePrevious 方法 8 Find 方法 3 MoveNext 方法 9 設置Bookmark 屬性 4 MoveLast 方法。 10 Close 的方法 5 AddNew 方法 11 卸載窗體 4. 數據控制項的常用方法 方法名稱 作用 示例 Refresh 激活數據控制項,使各用戶對資料庫的操作有效。 Data1.Refresh UpdateControls 將數據從資料庫中重新讀到數據控制項綁定的控制項內,通過它可以終止用戶對綁定控制項內數據的修改。 放棄修改按鈕代碼: Data1. UpdateControls UpdateRecord 強制數據控制項將綁定控制項內的數據寫入到資料庫中,不再觸發Validate事件 確認修改按鈕代碼: Data1. UpdateRecord 5. 記錄集的屬性與方法 名稱 作用 屬性 AbsolutePostion 返回當前指針值,如果是第一條記錄,其值為0;是只讀屬性 Bof / Eof Bof判斷記錄指針是否在首記錄之前,若是則為True;Eof判斷記錄指針是否在末記錄之後,若是則為True Bookmark 用於設置或返回當前指針的標籤,可以用在在程序中重定位記錄集的指針,其值採用字元串類型。 NoMatch 在記錄集中進行查找時,如果找到相匹配的記錄,則為Falue,找不到則為True。 RecordCount 對Recordset對象中的記錄記數,為了準確起見,在記數前用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 (與大小寫有關) 如果找不到相匹配的記錄,當前記錄保持在查找的始發處;如果找到了,則指針定位到該記錄。 Seek 使用該方法必需打開表的索引,它在Table表中查找與指定索引規則相符的第一條記錄,並使其成為當前記錄。 語法格式舉例: Data1.Recordset.Index= "課程名" Data1.Recordset.Seek "=", "計算機基礎" 6. 利用數據控制項對資料庫進行增、刪、改操作 操作項目 操作方法 注意事項 增加記錄 1) 調用AddNew方法:Data1.Recordset. AddNew 2) 給各欄位賦值:Recordset.Fields("欄位名")=值或在綁定控制項中直接輸入內容 3) 調用Update方法,將緩衝區內的數據寫入資料庫: Data1.Recordset. Update 4) 調用MoveLast方法顯示新記錄: Data1.Recordset. MoveLast 如果缺少第3)步而將指針移動到其他記錄或關閉了記錄,則所做的輸入全部丟失;若沒有第4)步。雖然加入了新記錄,但記錄指針自動返回到添加新記錄前的位置上,並不顯示新記錄。 刪除記錄 1) 定位被刪除記錄使之成為當前記錄(用Move或Find方法) 2) 調用Delete方法:Data1.Recordset. Delete 3) 調用MoveNext方法移動記錄指針 使用Delete方法時,當前記錄立即刪除,但被資料庫約束的綁定控制項仍舊顯示該記錄的內容,故必須用第3)步刷新綁定控制項。 修改記錄 1) 調用Edit方法:Data1.Recordset. Edit 2) 給各欄位賦值:在綁定控制項中直接修改 3) 調用Update方法,確定所做的修改: Data1.Recordset. Update 如果要放棄對數據的所有修改,可在第3)步之前用Refresh方法,重讀資料庫,刷新記錄。 9.4 ADO數據控制項 1. 什麼是ADO? ADO(ActiveX Data Object)數據訪問介面是微軟處理資料庫信息的最新技術,它是一種ActiveX對象,採用了OLE DB(動態連接與嵌入資料庫)的數據訪問模式,是數據訪問對象DAO、遠程數據對象RDO和開放式資料庫互連ODBC三種方式的擴展。 要使用ADO對象必需先為當前工程引用ADO對象庫,方法是: 執行「工程」菜單中的「引用」命令,在對話框中選中「Microsoft ActiveX Data Object 2.0 Library」。   ADO對象描述 對象名 描述 Connection 連接數據來源 Command 從數據源獲取所需數據的命令信息 Recordset 所獲取的一組記錄組成的記錄集 Error 在訪問資料庫時,由數據源所返回的錯誤信息 Parameter 與命令對象相關的參數 Field 包含了記錄集中某個欄位的信息 2.使用ADO數據控制項  (1) 添加ADO數據控制項 從「工程」菜單中選擇「部件」命令,在對話框中選中「Microsoft ADO Data ControlS 6.0(OLE DB)」,將其添加到工具箱,並在窗體上拖划出ADO數據控制項。  (2) ADO數據控制項的基本屬性 屬性名 作用 ConnectionString 用來與資料庫建立連接,它包括4個參數: Provide——指定數據源的名稱 FileName——指定數據源所對應的文件名 RemoteProvide——在遠程數據伺服器打開一個客戶端時所用的數據源名稱 RemoteServer——在遠程數據伺服器打開一個主機端時所用的數據源名稱 RecordSource 確定具體可訪問的數據,可以是資料庫中的單個表名、一個存儲查詢或一個SQL查詢字元串 ConnectionTimeout 設置數據連接的超時時間,若在指定時間內連接不成功則顯示超時信息 MaxRecords 確定從一個查詢中最多能返回的記錄數  (3) ADO數據控制項的屬性設置 1)先在窗體上放置一個ADO數據控制項 2)在ADO屬性窗口中單擊ConnectionString屬性右邊的…按鈕,從對話框中選擇連接數據源的方式:    使用連接字元串——單擊「生成」按鈕,通過選項設置系統自動產生連接字元串   使用Data Link文件——通過一個連接文件來完成   使用ODBC數據資源名稱——在下拉列表中選擇某個創建好的數據源名稱作為數據來源對遠程資料庫進行控制。 3)在ADO屬性窗口中單擊RecordSource屬性右邊的…按鈕,在「命令類型」中選擇2——adCmdTable,在「表或存儲過程名稱」中選擇所需要的表。 以上2)、3)可以合併成一步:在ADO控制項上單擊右鍵,從快捷菜單中選擇ADODC屬性,直接在屬性頁對話框中進行所有設置。  (4) ADO數據控制項的方法和事件    與Data數據控制項完全相同。  (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. 使用數據窗體嚮導   從「外接程序」菜單中選擇「外接程序管理器」,在對話框中選中VB6數據窗體嚮導,「載入」並「確定」,再從「外接程序」菜單中選擇「數據窗體嚮導」,然後根據系統提示逐步操作即可創建所需要的數據窗體,系統自動把所創建的窗體加到工程中。 9.5 結構化查詢語言 1.SQL的基本組成 SQL語言由命令、子句、運算、函數等組成:  (1) SQL命令 命令 功能 CREATE 用於建立新的數據表結構 DROP 用於刪除資料庫中的數據表及其索引 ALTER 用於修改數據表結構 SELECT 用於查找符合特定條件的某些記錄 INSERT 用於向數據表中加入數據 UPDATE 用於更新特定記錄或欄位的數據 DELETE 用於刪除記錄  (2) SQL子句 子句 功能 FROM 用於指定數據所在的數據表 WHERE 用於指定數據需要滿足的條件 GROUP BY 將選定的記錄分組 HAVING 用於說明每個群組需要滿足的條件 ORDER BY 用於確定排序依據 INTO 查詢結果去向  (3) SQL運算符 邏輯運算符 And (與)、 Or(或)、 Not(非) 比較運算符 >= =  (4) SQL函數 AVG COUNT SUM MAX MIN 求平均值 計數 求和 求最大值 求最小值 2. SQL語句的應用 語句功能 語法格式 建立數據表 CREATE TABLE 數據表名 (欄位名1 數據類型(長度), 欄位名2 數據類型(長度),……) 舉例:create table student(xh text(9), xm text(8) , cj single(4), nl integer(2)) 建立含有xh、xm、cj、nl 4個欄位的student表 添加欄位 ALTER TABLE 數據表名 ADD COLUMN 欄位名 數據類型(長度) 舉例:alter table student add column xb text(2) "在學生表中添加性別欄位 刪除欄位 ALTER TABLE 數據表名 DROP COLUMN 欄位名 舉例: alter table student drop column nl "將學生表中的年齡欄位刪除 數據查詢 SELECT 欄位名表 FROM 子句 WHERE 子句 GROUP BY 子句HAVING 子句 ORDER BY 子句 INTO 子句 舉例:select xh, xm from student where xb="男" order by xh 從學生表中查詢性別為男的學生,顯示其學號和姓名並使結果按學號升序排列。 添加記錄 INSERT INTO 數據表名(欄位名1,欄位名2……) VALUES(數據1,數據2……) 舉例:insert into student (xh, xm, xb) values("015200101", "王小二", "男") 刪除記錄 DELETE FROM 數據表名 WHERE 條件表達式 舉例:delete from student where xb="男" 更新記錄 UPDATE 數據表名 SET 新數據值 WHERE 條件表達式 舉例:update student set cj=cj+5 where xb="女" 9.6 報表製作 1. 報表的概念 利用報表可以把數據表中的數據按一定的格式輸出到屏幕上或列印到紙上。 2. 製作報表的方法 在VB6.0中可以利用報表設計器來製作報表,從「工程」中選擇「添加data report」,將報表設計器加入到當前工程中,報表由5部分組成:   報表標頭——每份報表只有一個,可以用標籤建立報表名。   頁標頭——每頁有一個,即每頁的表頭,如欄位名。   細節——需要輸出的具體數據,一行一條記錄。   頁腳註——每頁有一個,如頁碼。   報表腳註——每份報表只有一個,可以用標籤建立對本報表的注釋、說明。   使用報表設計器處理的數據需要利用數據環境設計器創建與資料庫的連接, 從「工程」菜單中選擇 「添加Data Enviroment」,在連接中選擇指定的資料庫文件,完成與資料庫的連接,然後產生Command對象連接資料庫內的表。   製作報表的步驟: (1) 新建工程,在窗體上放置兩個命令按鈕; (2) 從「工程」菜單中「添加Data Enviroment」,右擊Connection1,在屬性中選擇「Microsoft Jet 4 OLE DB Provider」,在「連接」中指定資料庫; (3) 再次右擊Connection1,選則「添加命令」,創建Command1對象,右擊Command1,在屬性中設置該對象連接的數據源為需要列印的數據表; (4) 在從「工程」菜單中「添加Data Report」,在屬性窗口中設置DataSource為數據環境DataEnviroment1對象,DataMember為Command1對象,即指定數據報表設計器DataReport1的數據來源; (5) 將數據環境設計器中Command1對象內的欄位拖到數據報表設計器的細節區; (6) 利用標籤控制項在報表標頭區插入報表名,在頁標頭區設置報表每一頁頂部的標題; (7) 利用線條控制項在報表內加入直線,利用圖形控制項和形狀控制項加入圖案或圖形; (8) 利用DataReport1對象的Show方法顯示報表,在窗體Click事件加代碼:DataReport1.Show; (9) 利用預覽窗口按列印按鈕可以列印報表; (10) 利用預覽窗口工具欄上的導出按鈕可以將報表內容輸出成文本文件或Html文件;也可以利用DataReport1對象的ExportReport方法將報表內容輸出成文本文件或Html文件。 製作報表的簡單方法是從「外接程序」中選擇報表嚮導來設計報表。 9.7 MIS系統設計示例 學生成績管理系統的設計 1. 建立工程文件 2. 設計系統主界面,驗證用戶身份 3. 建立Access資料庫,輸入若干記錄 4. 設計帶菜單的主窗體,把其他窗體組織起來 5. 根據需要完成系統功能,設計帶數據控制項的各種窗體 6. 調試、修改 7. 生成EXE文件
史翔 2005-02-25 10:26:20
re:[b]常見錯誤和難點分析[/b][b...常見錯誤和難點分析 1.在選擇結構中缺少配對的結束語句 對多行式的If塊語句中,應有配對的End If語句結束。否則,在運行時系統會顯示"塊 If沒有End If"的編譯錯誤。同樣對Select Case語句也應有與其相對應的End Select語句。 2.多邊選擇ElseIf關鍵字的書寫和條件表達式的表示 多邊選擇ElseIf子句的關鍵字ElseIf之間不能寫有空格,即不能寫成Else If。 在多個條件表達式的表示時,應從最小或最大的條件依次表示,以避免條件的過濾。例如,已知輸入某課程的百分製成績mark,要求顯示對應五級制的訐定,評定條件如下:有以下幾種表示方式,語法上都沒有錯,但執行後結果有所不同,請分析哪些正確? 哪些錯誤? 下面給出的答案中,方法一、二、五正確,其餘錯誤,請分析各自的原因。 方法一: 方法二: 方法三: 方法四: 方法五: If mark>=90Then Print"優" 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"優" End If If mark>=60Then Print"及格" ElseIf mark>=70Then Print"中" Elselfmark>=80Then Print"良" Elselfmark>=90Then Print"優" Else Print"不及格" End If If mark>=90Then Print"優" ElseIf 80 Print"良" ElseIf 70 Print"中" ElseIf 60 Print"及格" Else Print"不及格" End If If mark>=90Then Print"優" ElseIf 80 Print"良" ElseIf 70 Print"中" ElseIf 60 Print"及格" Else Print"不及格" End If 3.Select Case語句的使用 (1) "表達式列表i" 中不能使用"變數或表達式"中出現的變數。 例如,上述多邊選擇的例子改為Select Case語句實現,方法一Case子句中出現變數mark,運行時不管mark的值多少,始終執行Case Else子句,運行結果不正確;方法二、方法三正確。 方法一: 方法二: 方法三: Select Case mark Case mark>=90 Print"優" Case mark>=80 Print"良" Casemark>=70 Print"中" Case mark>=60 Print"及格" Case Else Print"不及格" End Select Select Case mark Case Is>=90 Print"優" Casels>=80 Print"良" Case Is>=70 Print"中" Case Is>=60 Prim"及格" Case Else Print"不及格" End Select Select Case mark Case Is>=90 Print"優" Case 80 To 89 Print"良" Case 70 To 79 Print"中" Case 60 TO 69 Print"及格" Case Else Print"不及格" End Select (2) 在"變數或表達式"中不能出現多個變數。 實驗三第5題對三門課程獎學金的判斷,只能用If語句的多邊選擇,而不能用SelectCase語句實現。例如,有人用如下語句表示: Select Case markl,mark2,mark3 Case (markl+mark2+mark3)/3>=95 Print"一等獎" End Select 這樣就會在 "Select Case markl,mark2,mark3" 語句行出現編輯錯誤, 同時 Case (markl+mark2 +mark3)/3>=95書寫也錯誤。 第四章 常見錯誤和難點分析 1. 不循環或死循環的問題主要是循環條件、循環初值、循環終值、循環步長的設置有問題。 例如,以下循環語句不執行循環體: For i=10 To 20 Step-1 " 步長為負,初值必須大於等於終值,才能循環 For i=20 To10 " 步長為正,初值必須小於等於終值,才能循環 Do While False " 循環條件永遠不滿足,不循環 例如,以下循環語句死循環: For i=10 To 20 Step 0 " 步長為零,死循環 Do While 1 " 循環條件永遠滿足,死循環 2.循環結構中缺少配對的結束語句 For…Next語句沒有配對的Next語句;Do語句沒有一個終結的Loop語句等。
史翔 2005-02-25 10:26:30
re:[b]3[/b][b].循環嵌套時,內外...3.循環嵌套時,內外循環交叉 For I=1 to 4 For j=1 to 5 … Next i Next j 上述循環的交叉運行時顯示"無效的Next控制變數引用"。 4.累加、連乘時,存放累加、連乘結果的變數賦初值問題 (1) 一重循環 在一重循環中,存放累加、連乘結果的變數初值設置應在循環語句前。 例如,求1~100的3的倍數和,結果放入Sum變數中,如下程序段,輸出結果如何?應作如何改進? Private SubForm_Click() For i=3 To 100 Step 3 Sum=0 Sum=Sum+i Next i Print Sum End Sub (2) 多重循環 在多重循環中,存放累加、連乘結果的變數初值設置放在外循環語句前,還是內循環語句前,這要視具體問題分別對待。 例如,期末30位學生參加三門課程的考試,求每個學生的三門課程的平均成績如下程序能否實現? 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數組聲明 有時用戶為了程序的通用性,聲明數組的上界用變數來表示,如下程序段: n=InputBox("輸入數組的上界") Dim a(1 To n) As Integer 程序運行時將在Dim語句處顯示"要求常數表達式"的出錯信息。即Dim語句中聲明的數組上,下界必須是常數,不能是變數。 解決程序通用的問題,一是將數組聲明的很大,這樣浪費一些存儲空間;二是利用動態數組,將上例改變如下: Dim a() As Integer n=InputBox ("輸入數組的上界") ReDim a(1 To n)As Integer 2.數組下標越界 引用了不存在的數組元素,即下標比數組聲明時的下標範圍大或小即為越界。例如,要形成有如下30項的斐波那契數列: 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,程序運行時會顯示"下標越界"的出錯信息,因為開始循環時i=l,執行到循環體語句a(i)=a(i-2)+a(i-1),數組下標i-2、i-1均小於下界1。 同樣若將上例:a(i)+a(i-2)+a(i-1) 語句改為:a(i+2)=a(i)+a(i+1) 程序運行時也會顯示"下標越界"的出錯信息,這時是數組下標大於上界30。 3.數組維數錯 數組聲明時的維數與引用數組元素時的維數不一致。例如,下程序段為形成和顯示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語句時出現"維數錯誤"的信息,因為在Dim聲明時是二維數組,引用時的一個下標。 4.Aarry函數使用問題 Aarry函數可方便地對數組整體賦值,但此時只能聲明Variant的變數或僅由括弧括起的動態數組。賦值後的數組大小由賦值的個數決定。 例如,要將1,2,3,4,5,6,7這些值賦值給數組a,下表列出了三種錯誤及相應正確的賦值方法。 Aarry函數表示方法 錯誤的Aarry函數賦值, 改正的Aarry函數賦值 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.如何獲得數組的上界、下界Aarry函數可方便地對數組整體賦值,但在程序中如何獲得數組的-上界、下界,以保證訪問的數組元素在合法的範圍內,可使用UBound和LBound函數來決定數組訪問。 在上例中,若要列印a數組的各個值,可通過下面程序段實現: For i=Lbound(A) To Ubound(A) Print a(i) Next l 6.給數組賦值 VB6.0提供了可對數組整體賦值的新功能,方便了數組對數組的賦值操作。但真正使用不那麼方便,有不少限制。數組賦值形式如下:數組名2=數組名1 這裡的數組名2,實際上在前面的數組聲明時,只能聲明為Varian的變數,賦值後的數組2的大小、維數、類型同數組名1;否則,若聲明成動態或靜態的數組,例如: Dim數組名2() 或Dim數組名2 (下標) 程序在運行到上述賦值語句時顯示"不能給數組賦值"的出錯信息。 第五章 數 組 5.1 知識要點 1.數組的概念 數組:存放具有相同性質的一組數據,也就是數組中的數據必須是同一個類型和性質。 數組元素:數組中的某一個數據項。數組元素的使用同簡單變數的使用。 2.靜態數組的聲明 靜態數組:在聲明時已確定了數組元素個數。 聲明形式:Dim數組名([下界To]上界[,[下界To]上界[,…]])As 類型 此語句聲明了數組名、數組維數、數組大小、數組類型。 [注意] 下界、上界必須為常數,不能為表達式或變數:省略下界,默認為0,也可用Option Base語句重新設置下界的值。 3.動態數組的聲明 聲明形式: Dim數組名 () ReDim [Preserve]數組名([下界To]上界[,[下界To]上界[,…]]) [注意] 此時的上界、下界可以是賦了值的變數或表達式。若有Preserve關鍵字,表示當改變原有數組最末尾的大小時,使用此關鍵字可以保持數組中原來的數據。 4.控制項數組 即相同類型的控制項組成的數組。 控制項數組的建立:在設計時的窗體上,通過對某控制項的複製和粘貼操作:在程序運行時通過Load方法實現。 控制項數組元素:由控制項的Index屬性值表示數組的F標。 5.數組的操作 應掌握的基本操作有:數組初始化、數組輸入、數組輸出、求數組中的最大(最小)元素及下標、求和、平均值、排序和查找等。 5.2 常見錯誤和難點分析 1.Dim數組聲明 有時用戶為了程序的通用性,聲明數組的上界用變數來表示,如下程序段: n=InputBox("輸入數組的上界") Dim a(1 To n) As Integer 程序運行時將在Dim語句處顯示"要求常數表達式"的出錯信息。即Dim語句中聲明的數組上,下界必須是常數,不能是變數。 解決程序通用的問題,一是將數組聲明的很大,這樣浪費一些存儲空間;二是利用動態數組,將上例改變如下: Dim a() As Integer n=InputBox ("輸入數組的上界") ReDim a(1 To n)As Integer 2.數組下標越界 引用了不存在的數組元素,即下標比數組聲明時的下標範圍大或小即為越界。例如,要形成有如下30項的斐波那契數列: 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,程序運行時會顯示"下標越界"的出錯信息,因為開始循環時i=l,執行到循環體語句a(i)=a(i-2)+a(i-1),數組下標i-2、i-1均小於下界1。 同樣若將上例:a(i)+a(i-2)+a(i-1) 語句改為:a(i+2)=a(i)+a(i+1) 程序運行時也會顯示"下標越界"的出錯信息,這時是數組下標大於上界30。 3.數組維數錯 數組聲明時的維數與引用數組元素時的維數不一致。例如,下程序段為形成和顯示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語句時出現"維數錯誤"的信息,因為在Dim聲明時是二維數組,引用時的一個下標。 4.Aarry函數使用問題 Aarry函數可方便地對數組整體賦值,但此時只能聲明Variant的變數或僅由括弧括起的動態數組。賦值後的數組大小由賦值的個數決定。 例如,要將1,2,3,4,5,6,7這些值賦值給數組a,下表列出了三種錯誤及相應正確的賦值方法。 Aarry函數表示方法 錯誤的Aarry函數賦值, 改正的Aarry函數賦值 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.如何獲得數組的上界、下界Aarry函數可方便地對數組整體賦值,但在程序中如何獲得數組的-上界、下界,以保證訪問的數組元素在合法的範圍內,可使用UBound和LBound函數來決定數組訪問。 在上例中,若要列印a數組的各個值,可通過下面程序段實現: For i=Lbound(A) To Ubound(A) Print a(i) Next l 6.給數組賦值 VB6.0提供了可對數組整體賦值的新功能,方便了數組對數組的賦值操作。但真正使用不那麼方便,有不少限制。數組賦值形式如下:數組名2=數組名1 這裡的數組名2,實際上在前面的數組聲明時,只能聲明為Varian的變數,賦值後的數組2的大小、維數、類型同數組名1;否則,若聲明成動態或靜態的數組,例如: Dim數組名2() 或Dim數組名2 (下標) 程序在運行到上述賦值語句時顯示"不能給數組賦值"的出錯信息。
查看完整版本: ? VB基礎教程


推薦閱讀:

查看原文 >>
相关文章