【文章內(nèi)容簡(jiǎn)介】
,以毫秒為單位。 2) Enable 屬性 :為 true 時(shí) (缺省值 ),激活定時(shí)器開(kāi)始計(jì)時(shí) 。為 false 時(shí)處于休眠狀態(tài) . 數(shù)據(jù)庫(kù)連接方式選擇 Visual 連接數(shù)據(jù)庫(kù)的主要方式以下幾種方式:一是: 用 data 控件進(jìn)行數(shù)據(jù)庫(kù)鏈接 ,二是 利用 adodc( ADO Data Control)進(jìn)行數(shù)據(jù)庫(kù)鏈接 。三是 : 利用 DataEnvironment 進(jìn)行數(shù)據(jù)庫(kù)鏈接 .四是 利用 ADO(ActiveX Data Objects)進(jìn)行編程 :現(xiàn)在我們來(lái)大致對(duì)這幾種技術(shù)應(yīng)用介紹: 一、 用 data 控件進(jìn)行數(shù)據(jù)庫(kù)鏈接 . 第一步:給窗體添加一個(gè) Data 控件。 第二步:用 Access 建立一個(gè)名為 Pad 的數(shù)據(jù)庫(kù),在庫(kù)中建立一個(gè)表 Myset,給表添加四個(gè)字段: backcolor(數(shù)據(jù)), forecolor(文本), fontname(文本) ,fontsize(文本)。注意:請(qǐng)將庫(kù)文件存入程序所在目錄。 如果你的機(jī)器沒(méi)安裝有 Access,可通過(guò) VB 建庫(kù)。 二、 利用 adodc( ADO Data Control)進(jìn)行數(shù)據(jù)庫(kù)鏈 接: 使用 adodata 控件訪問(wèn)數(shù)據(jù)庫(kù)可以完全不用編寫(xiě)代碼 ,只需要通過(guò)簡(jiǎn)單的設(shè)置和操作其屬性就可以實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接 ,通過(guò)綁定數(shù)據(jù)感知控件 ,就能提供一個(gè)訪問(wèn)數(shù)據(jù)庫(kù)的界面 ,用來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的瀏覽 ,貼加 ,刪除 ,修改等操作 . 三、 利用 DAO 對(duì)數(shù)據(jù)庫(kù)進(jìn)行操縱 : 在 visual basic 中提供了兩種與 jet數(shù)據(jù)引擎接口的方法 :data控件與數(shù)據(jù)訪問(wèn)對(duì)象 (DAO)DAO 是 database object 的英文縮寫(xiě) ,要訪問(wèn)數(shù)據(jù)庫(kù)一方面數(shù)據(jù)庫(kù)要提供訪問(wèn)接口 ,另一方面要在編程環(huán)境中有對(duì)數(shù)據(jù)庫(kù)的支持 . DAO 模型是設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù) 系統(tǒng)結(jié)構(gòu)的對(duì)象類(lèi)的集合 .他們提供了管理關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)所需要的全部操作屬性和方法 ,這其中包括建立數(shù)據(jù)庫(kù) ,定義表 ,字段和建立表間關(guān)系 ,定位和查詢(xún)數(shù)據(jù)庫(kù)等 . 關(guān)系數(shù)據(jù)庫(kù) 介紹 : 關(guān)系數(shù)據(jù)庫(kù)是目前各類(lèi)數(shù)據(jù)庫(kù)中最重要、最流行的數(shù)據(jù)庫(kù),他應(yīng)用數(shù)學(xué)方法來(lái)處理數(shù)據(jù)庫(kù)數(shù)據(jù),是目前使用最廣泛的數(shù)據(jù)庫(kù)系統(tǒng)。 20 世紀(jì) 70 年代以后開(kāi)發(fā)的數(shù)據(jù)庫(kù)管理系統(tǒng)產(chǎn)品幾乎都是基于關(guān)系的。在數(shù)據(jù)庫(kù)發(fā)展的歷史上,最重要的成就就是關(guān)系模型。 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)與非關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的區(qū)別是:關(guān)系系統(tǒng)只有 “ 表 “ 這一種數(shù)據(jù)結(jié)構(gòu);而非關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)還有其他數(shù)據(jù) 結(jié)構(gòu),對(duì)這些數(shù)據(jù)結(jié)構(gòu)有其他的操作。 結(jié)構(gòu)化查詢(xún)語(yǔ)言 SQL( Structured Query Language)是一種介于關(guān)系代數(shù)與關(guān)系演算之間的語(yǔ)言,其功能包括查詢(xún)、操縱、定義和控制四個(gè)方面,是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言。目前已成為關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言 Microsoft Access 介紹 : 使用 Microsoft Access,可以在單一的數(shù)據(jù)庫(kù)文件中管理所有的信息。在這個(gè)文件中,用戶可以將自己的數(shù)據(jù)分別保存在各自獨(dú)立的存儲(chǔ)空間中,這些空間稱(chēng)作表;可以使用聯(lián)機(jī)窗體來(lái)查看、添加及更新表中的數(shù)據(jù) ;使用查詢(xún)來(lái)查找并檢索所要的數(shù)據(jù);也可以使用報(bào)表以特定的版面布置來(lái)分析及打印數(shù)據(jù)。 如果要保存數(shù)據(jù),請(qǐng)為每一種類(lèi)型的信息創(chuàng)建一個(gè)表。如果要從查詢(xún)、窗體或報(bào)表中的多個(gè)表中將數(shù)據(jù)合并在一起,就要定義各個(gè)表之間的關(guān)系。 如果要搜索并檢索符合指定條件的數(shù)據(jù),包括來(lái)自多個(gè)表中的數(shù)據(jù),就要?jiǎng)?chuàng)建查詢(xún)。查詢(xún)的同時(shí)也可以更新或刪除多條記錄,并對(duì)數(shù)據(jù)執(zhí)行內(nèi)嵌或自定義的計(jì)算。 如果要簡(jiǎn)單地直接在某個(gè)表中查看、輸入及更改數(shù)據(jù),請(qǐng)創(chuàng)建一個(gè)窗體。在打開(kāi)一個(gè)窗體時(shí), Microsoft Access 將從一個(gè)或多個(gè)表中檢 索數(shù)據(jù),并使用用戶在 “ 窗體向?qū)?” 選擇的版面布局或所創(chuàng)建的版面布局,將窗體顯示在屏幕上。 如果要分析數(shù)據(jù)或?qū)?shù)據(jù)以特定的方式打印出來(lái),請(qǐng)創(chuàng)建一個(gè)報(bào)表。例如,可以打印一份將數(shù)據(jù)分組并計(jì)算數(shù)據(jù)總和的報(bào)表,也可以打印另一份帶有各種數(shù)據(jù)格式的打印郵件標(biāo)簽的報(bào)表。 第一章 系統(tǒng)的分析 第一章 系統(tǒng)的分析 2. 1 系統(tǒng)開(kāi)發(fā)的目標(biāo)和思想 本系統(tǒng)開(kāi)發(fā)目標(biāo)是服務(wù)于 人們查詢(xún)公交車(chē)路線信息 ,方便工作人員 日常出行 . 同時(shí)力求做到界面人性化 ,功能齊全 ,數(shù)據(jù)存儲(chǔ)安全 . 2. 2 系統(tǒng)的可行性分析 技術(shù)上 :本系統(tǒng)采用 visual basic 與微軟的 access 作為數(shù)據(jù)庫(kù) ,技術(shù)上開(kāi)發(fā)難度一般 . 經(jīng)濟(jì)上 :本系統(tǒng)服務(wù)于 人們出行公交車(chē)查詢(xún) ,提高了工作人員辦事效率 ,節(jié)省了開(kāi)支 .所以具有經(jīng)濟(jì)上的可行性 . 社會(huì)上 :本系統(tǒng)同時(shí)也方便了廣大社會(huì) .所以具有社會(huì)可行性 . 第二章 系統(tǒng)的設(shè)計(jì) 3. 1 系統(tǒng)的功能結(jié)構(gòu)設(shè)計(jì) 3. 2 系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì) 主界面 按車(chē)次查詢(xún) 按起點(diǎn)終點(diǎn)查詢(xún) 信息表 : 3. 2 界面設(shè)計(jì)與代碼設(shè)計(jì) 1 關(guān)于界面設(shè)計(jì) : 代碼設(shè)計(jì) : Option Explicit Dim bt As Boolean Private Sub Check1_Click() If = 0 Then = True Else = False End If End Sub Private Sub Form_Load() bt = True End Sub Private Sub Label1_Click() End Sub Private Sub Timer1_Timer() bt = False If = 0 Then = True Else = False End If Load Form1 = False End Sub Private Sub Timer2_Timer() = True = False End Sub 2:主界面設(shè)計(jì) : 代碼設(shè)計(jì) : Dim bcbm As Boolean Dim bcb1 As Boolean Dim bcbs As Boolean Dim bcbe As Boolean Dim tm As Integer Dim intpart As Integer Public IsBeginS As Boolean Public Sub showallstation() 39。 以下代碼是用來(lái)把在數(shù)據(jù)庫(kù)的所有不同的車(chē)站顯示在起始站中 39。 其思路是如果在啟動(dòng)界面中,用戶選擇了更新數(shù)據(jù)庫(kù),則掃描整個(gè)數(shù) 據(jù)庫(kù),并把不同的車(chē)站加到起始站中 39。 并把這些車(chē)站名存放在一文本框中,以用于下次讀取 39。 如果用戶沒(méi)有選擇更新數(shù)據(jù)庫(kù),則直接從文件中讀取車(chē)站存放在起始站中 39。 這樣做的好處是可以大大提高效率,如果每次啟動(dòng)都要重新檢索數(shù)據(jù)庫(kù),則要花費(fèi)大量的時(shí)間 If IsBeginS = False Then 39。用戶選擇了更新數(shù)據(jù)庫(kù) Dim strm As String Dim mrc3 As Set mrc3 = New Set mrc3 = Do While Not For i = 1 To NC strm = Text2(i).Text If strm = Then Exit For End If For j = 0 To If (j) = Trim(strm) Then Exit For End If Next If j Then Trim(strm) End If Next Loop If Mid(, Len() 1, 1) \ Then Open + \ For Output As 1 Else Open + For Output As 1 End If Print 1, CStr() For k = 0 To 1 Print 1, , (k) Next Close 1 Set mrc3 = Nothing Else 39。用戶沒(méi)有選擇了更新數(shù)據(jù)庫(kù) Dim strbs As String Dim intnb As Integer If Mid(, Len() 1, 1) \ Then Open + \ For Input As 1 Else Open + For Input As 1 End If Input 1, strbs intnb = CInt(Val(strbs)) For k = 0 To intnb 1 Input 1, strbs strbs Next Close 1 End If End Sub Public Sub showtitle(numt As Integer) 39。用于顯示列表中的標(biāo)題 For j = 0 To 2 If numt = 2 And j = 1 Then Exit Sub End If MSF1(j).Clear Dim i As Integer With MSF1(j) .Rows = 2 .Cols = NC + 3 .TextMatrix(0, 1) = 車(chē)次 For k = 1 To NC + 1 .TextMatrix(0, k + 1) = 站 amp。 CStr(k) .ColWidth(k) = 1000 Next .TextMatrix(0, NC + 2) = 備注 .ColWidth(0) = 200 .ColWidth(NC + 1) = 1000 .FixedRows = 1 For i = 1 To NC .ColAlignment(i) = 0 Next i .FillStyle = flexFillSingle .Col = 0 .Row = 0 .RowSel = 1 .ColSel = .Cols 1 .CellAlignment = 4 .Row = 1 End With Next End Sub Public Sub showdata(num As Integer) 39。用于顯示按車(chē)站名進(jìn)行的查詢(xún) showtitle (num) Dim j As Integer Dim i As Integer Dim mrc0 As Set mrc0 = New Set mrc0 = ExecuteSQL(txtsql) If = False Then With MSF1(num) .Rows = 2 .Row = 1 Do While Not .Rows = .Rows + 1 For i = 1 To If (i 1) Null Then .TextMatrix(.Row, i 1) = (i 1) End If Next i .Row = .Row + 1 Loop End With End If Set mrc0 = Nothing End Sub Public Sub showSEdata(s As String, e As String, numb As Integer) 39。用于顯示按起始站和終點(diǎn)站進(jìn)行的查詢(xún) 39。其思路是掃描整個(gè)數(shù)據(jù)庫(kù),如果在一條記錄中有起點(diǎn)站和終點(diǎn)站則把該記錄加到列表中 39。該過(guò)程用到了遞歸主要是由于起始站和終點(diǎn)站可以互換 digein = digein + 1 39。 用于記錄遞歸次數(shù) If digein = 3 Then 39。第三次遞歸的時(shí)候,退出 a = MsgBox(沒(méi)有直達(dá)的車(chē)次 !您是否需要轉(zhuǎn)車(chē) ?, vbInformation + vbOKCancel, 詢(xún)問(wèn) ) If a = vbOK Then = True = True MSF1(0).Visible = False End If Exit Sub End If showtitle (numb) Dim j As Integer Dim i As Integer D