Nối tiếp phần 1, Bài giảng Tin học quản lý: Phần 2 tiếp tục cung cấp cho học viên những kiến thức về cấu trúc lệnh, lệnh điều kiện, toán tử so sánh; thiết kế biểu mẫu dùng các điều khiển; các thành phần giao diện cơ bản trong Window; mảng, làm việc với các phần tử trong mảng; VB.NET kết nối cơ sở dữ liệu dùng ADO.NET;... Mời các bạn cùng tham khảo!
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ THÔNG TIN I BÀI GIẢNG TIN HỌC QUẢN LÝ NGƯỜI VIẾT: Ths TRỊNH THỊ VÂN ANH HÀ NỘI - 2013 CHƯ NG 4: CẤU TRÚC LỆNH 4.1 L ều ki n Quy ịnh ki u Conditional Logic ngu n mã g m loại: Loạ tìm hi xử lý ph r ậ hoặ i phó v i trở ngại ị rư c hay bất ngờ Thí dụ ư: n mở 10 tậ ọ , rư c h t ta c n ki m tra xem tập tin có diện hay khơng? N u khơng, ta ph i làm gì? N u có, ta c n ki m tra xem tậ ượ ọc h ? ó, ta lập lạ c ki m r i tập tin k Loạ thi hành ph r ậ d a d kiệ ụ ư: n gở n 10 khách hàng danh sách v u kiện khách hàng , u không ta ph ện thoạ n khách hàng Các cú pháp (syntax) dùng ệ : Cú pháp 1: n làm quy ịnh If (điều kiện) Then (mã thi hành điều kiện thỏa mãn, nghĩa = True) End If Thí dụ: 'Tuyên bố biến số giá trị cho intYourAge Dim intYourAge intYourAge = 70 'Quyết định công bố kết If intYourAge => 65 Then MessageBox.Show ("You should retire") End If Cú pháp 2: Quy ịnh v i tình trạ r ược If (điều kiện) Then (mã thi hành điều kiện thỏa mãn, nghĩa = True) Else (mã thi hành điều kiện không thỏa mãn, nghĩa = False) End If Thí dụ: 'Tuyên bố biến số giá trị cho intYourAge Dim intYourAge intYourAge = 40 'Quyết định công bố kết If intYourAge => 65 Then MessageBox.Show ("You should retire.") Else MessageBox.Show ("You are too young to retire.") 45 End If Cú pháp 3: Quy ịnh v i nhi u tình trạ i hay khác If (điều kiện 1) Then (mã thi hành điều kiện thỏa mãn, nghĩa điều kiện = True) ElseIf (điều kiện 2) Then (mã thi hành điều kiện thỏa mãn, nghĩa điều kiện = True) Else (mã thi hành không điều kiện thỏa mãn, nghĩa điều kiện điều kiện = False) End If Thí dụ: 'Tuyên bố biến số giá trị cho intYourAge Dim intYourAge intYourAge = 50 'Quyết định công bố kết If intYourAge => 65 Then MessageBox.Show ("You should retire.") ElseIf intYourAge => 45 Then MessageBox.Show ("You should pay more to your current scheme.") Else MessageBox.Show ("You are too young to worry about.") End If Cú pháp 4: Quy ịnh quy ịnh (Nested If) If (điều kiện 1) Then (mã thi hành điều kiện thỏa mãn, nghĩa điều kiện = True) If (điều kiện 2) Then (mã thi hành điều kiện thỏa mãn, nghĩa điều kiện = true điều kiện = True) End If End If Thí dụ: 'Tuyên bố biến số giá trị cho intYourAge Dim intYourAge intYourAge = 65 'Quyết định công bố kết If intYourAge > 55 Then MessageBox.Show ("You should retire.") 46 If intYourAge = 65 Then MessageBox.Show ("You must retire.") End If End If Chú thích: N u ta 55 tu i, MessageBox hi n thị hàng ch ' r r ', u ta ú 65, x ẽ hi n thị hàng ch 'You must retire' Sở dỉ u kiệ r u kiện 55 tu i ậy tu i ta có th 60 hay 70 miễ r 55 ượ , kèm thêm mộ u kiện n có th hi n thị hàng ch 'You must retire' s tu i vừa ú 65 Cú pháp 5: Dùng If hàng mã có th gọ ô g cấp cấ rú ậ rõ r ườ ọ If (điều kiện) Then (mã thi hành điều kiện = True) Else (mã thi hành điều kiện = False) If (điều kiện) Then (nếu điều kiện =True, thi hành mã 1: mã : mã 3: ) ki u cú pháp không c n ph i có End If cu i hàng Thí dụ: Dim count As Integer If count = Then MessageBox.Show ("Count = 8") Else MessageBox.Show ("Count is not 8") If count = Then MessageBox.Show ("Count = 8") : count = count + : MessageBox.Show ("Count is now " & count) Chú thích: u tiên, ta tuyên b bi n s (variables) count , so sánh v i giá trị hi n thị k t qu Hàng If thứ nhì, ta hi n thị k t qu , ộng thêm vào bi n s (variables) coun , ậy count (cu i cùng) = count (v i giá trị 8) + hi n thị k t qu Count is now mã từ xu i, ta thấy mã dễ ọc, dễ hi : Dim count As Integer If count = Then MessageBox.Show ("Count = 8") count = count + MessageBox.Show ("Count is now " & count) End If 4.2 Toán tử so sánh 47 ù ki m tra di u kiện, không nh ng ta so sánh ( = ) khơng thơi, mà cịn so sánh nhi u ki u khác n a Gọi chung dấu so sánh (Comparision Operators) g m có: < > : dấu không (Not Equal To) < : dấu nhỏ > : dấu l < = : dấu nhỏ ặc > = : dấu l ặc AND : dùng ki r u kiện OR : dùng ki r u kiện hoặ u kiện Ví dụ: If yourSurName < > "Vu" Then MessageBox.Show("You are not my relative") End If If yourAge < 18 Then MessageBox.Show("You can not drive a car") End If If yourSurName > 21 Then MessageBox.Show("You can marry") End If If yourAge = 65 Then MessageBox.Show("You must retire") End If If yourAge >= 18 AND yourHeigth >= 1.60 Then MessageBox.Show("You can be a movie star") End If If yourPreferredDrink="Rượu" OR yourPreferredDrink="Bia" Then MessageBox.Show("You are dân nhậu") End If Chú thích: Nh c thêm cách dùng AND OR r u kiện Ta bi u kiệ ược ki m tra cho bi t giá trị True (hay 1, hay 'ON', T t hoặ ) ặc False (hay 0, hay 'OFF', Mở Khoá) dễ nh , ta thi t lập b ng sau: 1: AND Đ ều ki n A Đ ều ki n B Kết Chú thích 0 N u A False B False, k t qu sau False N u A False B True, k t qu sau False 0 N u A True B False, k t qu sau False 1 N u A True B True, k t qu sau True Ta 48 thấy có mộ rường hợp True v i dấu AND c u True 2: OR Đ ều ki n A Đ ều ki n B Kết Chú thích 0 N u A Fasle B False, k t qu sau False Ta thấy có mộ rường hợp False v i dấu OR c u False 1 N u A False B True, k t qu sau True 1 N u A True B False, k t qu sau True 1 N u A True B True, k t qu sau True 4.3 So sánh xâu Khi so sánh ch , ường gặp trở ngạ ô n chữ ường hay chữ Hoa (case sensitive) Nh iv , ậy, ch a ường khác v i ch A Hoa chúng có giá trị khác Thí dụ 1: Dim mySociety As String mySociety = "VOVISOFT" If mySociety = "Vovisoft" Then MessageBox.Show("You are a Vovisoft's member") Else MessageBox.Show("You are not a Vovisoft's member") End IF Thí dụ 2: dùng Compare method c a String object so sánh ch : Dim mySociety As String mySociety = "VOVISOFT" If String.Compare (mySociety, "Vovisoft", True) = Then MessageBox.Show("You are a Vovisoft's member") Else MessageBox.Show("You are not a Vovisoft's member") End IF Chú thích: String.Compare ù so sánh giá trị c a String tr v s nguyên (Integer) sau so sánh N u method tr v s 0, ĩ hay câu gi ng v giá trị, tr v s khác s 4.4 L nh lựa chọn ại thứ hai Conditional Logic thi hành ph n khác ậ d a nh u kiệ ụ ư: N u khách hàng A, gở ịa khách hàng A N u khách hàng B, gở ịa khách hàng B 49 N u khách hàng C, gở ịa khách hàng C N u khách hàng D, gở ịa khách hàng D N u khách hàng E, gở ịa khách hàng E Ta có th ù : If khách hàng = "A" Then gởi email đến địa khách hàng A ElseIf khách hàng = "B" Then gởi email đến địa khách hàng B ElseIf khách hàng = "C" Then gởi email đến địa khách hàng C ElseIf khách hàng = "D" Then gởi email đến địa khách hàng D ElseIf khách hàng = "E" Then gởi email đến địa khách hàng E End If Tuy nhiên, n u ta mu i khách hàng thành công ty chẳng hạn, ta ph i ch khách hàng câu If mộ , ậy qu phi n phứ ô ă ấ cách dùng cú pháp Select Case : Cú pháp (Syntax 1): Select Case công ty Case "A" gởi email đến địa công ty A Case "B" gởi email đến địa công ty B Case "C" gởi email đến địa công ty C Case "D" gởi email đến địa công ty D Case "E" gởi email đến địa công ty E End Select : Khi dùng Select Case, ệ ch ường ch Hoa, ụ: công ty A khác v i công ty a Cú pháp 2: ù chọ rường hợp g m nhi u kiện có gi : Select Case strMyContactName Case "A", "B", "E" MessageBox.Show ("Chào bạn học!!", "Greeting") Case "C", "D" MessageBox.Show("Hay tham gia nhe!", "Greeting") End Select r , ấ rường hợp A, B E có chung gi rường hợp C D 50 Cú pháp 3: ù rường hợp ngoại lệ Case Else: Select Case strMyContactName Case "A", "B", "E", "C", D" MessageBox.Show ("Chào bạn học!", "Greeting") Case Else MessageBox.Show ("Hay tham gia!", "Greeting") End Select 4.5 Vòng lặp Looping Logic ù r rường hợp c n lậ ập lại nhi u l ( ú a, s l n nhấ ịnh) việc thi hành mộ ô , ụ: cộng thêm 10 s n phẩm vào b ng liệt kê s n phẩm c a công ty, hi n thị (display) CD nhạc tuyệt phẩ u ă loạ n c a Looping Logic - For loop Do loops bao g m: For Next For Each In Next Do Until Loop Do While Loop rường hợ ặc biệt Cú pháp 1: For số lần đếm từ số đến số (thi hành công việc đó) Next Thí dụ 1: 'Tun bố biến số dùng làm counter Dim intCounter For intCounter = To 10 MessageBox.Show ("Vovisoft", "Greeting") Next Thí dụ 2: 'Tuyên bố biến số dùng làm counter Dim intCounter For intCounter = 10 To 100 Step 10 MessageBox.Show ("Vovisoft", "Greeting") Next Chú thích: Thí dụ 1, tạo bi n s ( r For Next loop, ta hi n thị Thí dụ 2, l m ta nh inCounter = 10 l u tiên, k Cú pháp 2: ) r m từ n 10, l v i hàng ch Vovisoft 10 c (hay cộng thêm 10 vào s l m) b 20, 30, n 100 51 ậy uv i For Each In (thi hành cơng việc đó) Next Thí dụ: Liệt kê tất c ụ phụ ( r) r ĩ (r r r r drive C) 'Biến array dùng lưu trữ ngăn chứa phụ (subfolders) Dim subFolders( ) As DirectoryInfo subFolders = New DirectoryInfo("C:\").GetDirectories 'Loop liệt kê ngăn chứa phụ (subfolders) dĩa C Dim subFolder As DirectoryInfo For Each subFolder In subFolders lstData.Items.Add (subFolder.FullName) Next Chú thích: tạo bi n s (variables) loại Array tr c thuộ ượ DirectoryInfo Dùng method GetDirectories c j r r lấ r ụ phụ r ĩ , ù For Each Next loop ki m tra từ array subFolders cộng tên c vào b ng liệt kê tên lstData Cú pháp 3: Do Until (điều kiện) (thi hành cơng việc đó) Loop Thí dụ: Liệt kê s ngẫu nhiên chấm dứt loop s 10 'Bố trí object tạo số ngẫu nhiên Dim random As New Random( ) 'Khai baos biến số chứa số ngẫu nhiên mặc định Dim intRandomNumber As Integer = 'Loop số intRandomNumber = 10 Do Until intRandomNumber = 10 'Tạo số ngẫu nhiên intRandomNumber = random.Next (25) 'cộng vào bảng liệt kê tên lstData lstData.Items.Add (intRandomNumber) Loop Chú thích: Ta dùng random ệ (instance) c j tạo s ngẫu nhiên (random number generator) r r giá trị n s (variables) intRandomNumber Khi giá trị s 10, ta chấm dứt việc cộng s vào b ng liệt kê tên lstData Cú pháp 4: 52 ược lại v i Do Until Loop Do While Loop Do While Loop thi hành ều ki n True, ược lại v i Do Until Loop chấm dứ ều ki n True Do While (điều kiện) (thi hành công việc đó) Loop Thí dụ: Liệt kê s ngẫu nhiên chấm dứt loop s = 10 n 10 'Bố trí object tạo số ngẫu nhiên Dim random As New Random( ) 'Khai bao biến số chứa số ngẫu nhiên mặc định Dim intRandomNumber As Integer = 'Loop số intRandomNumber < 10 Do While intRandomNumber < 10 'Tạo số ngẫu nhiên intRandomNumber = random.Next (25) 'cộng vào bảng liệt kê tên lstData lstData.Items.Add (intRandomNumber) Loop Chú thích: ù r ệ c j tạo s ngẫu nhiên (random number r r) r W r giá trị n s (variables) intRandomNumber Khi giá trị s nhỏ 10, ộng s ng liệt kê tên lstData, n u không, ta chấm dứt loop Cú pháp 5: n khác c a Do Until Do While: Do (thi hành công việc đó) Loop While (điều kiện) Do (thi hành cơng việc đó) Loop Until (điều kiện) Phiên b n khác phiên b rư c ch : Thi hành công vi c rư c i ki r u kiệ ti p tục hay chấm dứ , ậy t i thi u, công việ ược thi hành l n C c rường hợp ặc bi t: Nested Loops: Nhi rường hợp c n hay nhi u loop algorithm, tỷ ư: 'Tuyên bố bố trí hàng cột Dim intRow, intColume As Integer 'Loop hàng từ hàng thứ đến hàng 10 For intRow = To 10 53 gán giá trị hàm InputBox nhờ vòng lặ F r… x ộ nội dung c a m lạ ược hi n thị lại vào mộ x x ũ vòng lặ F r… x Thi t k giao diện: Tạo m i gi i pháp thêm vào d án có tên MyFixedArray Thi t k giao diệ ì 6.1 r Hình 6.1 Màn hình thi t k x “ n nhiệ ộ”, : ú “ n thị nhiệ ộ”, “ ” t mã: rư c h t ta khai báo m ng nhietdo ò F r : Dim nhietdo(6) As Single ĩ ất c th tụ , u có th sử dụng m ng Ti p theo ta tạo s kiện nhập vào giá trị nhiệ ộ tu n cách tạo th tục Button1_Click nhậ ã : Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim Prompt, tieude As String Dim i As Short Prompt = "Điền vào nhiệt độ ngày." For i = To UBound(nhietdo) tieude = "Ngày " & (i + 1) nhietdo(i) = CInt(InputBox(Prompt, tieude)) Next End Sub r , ( ) v s c a m ng nhietdo, rường hợ n thị giá trị nhiệ ộ b y ngày tu ũ rị nhiệt ộ trung bình th tụ 2_ ười dùng click vào nút “ n thị nhiệ ộ” : Private Sub Button2_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button2.Click 63 Dim ketqua As String Dim i As Short Dim tong As Single = ketqua = "Nhiệt độ tuần: " & vbCrLf & vbCrLf For i = To UBound(nhietdo) ketqua = ketqua & "Ngày " & (i + 1) & _ vbTab & nhietdo(i) & vbCrLf tong = tong + nhietdo(i) Next ketqua = ketqua & vbCrLf & _ "Nhiệt độ trung bình: " & _ Format(tong / 7, "0.0") TextBox1.Text = ketqua End Sub Th tục lại sử dụng vòng lặ F r… x duyệt lại ph n tử m ng sau ã ược gán giá trị th tục button1_Click Bi ượ ù làm chuỗi k t xuất gộp giá trị ph n tử m ng Sau l n gộp ta sử dụng s r i u n dấu ng t dòng dấu v ò (ư i hai hàm Chr(13) Chr(10)) Hằ phân cách gi a ph n ghi ngày ghi nhiệ ộ Ta tạo th thục Button3_Click nhập phát bi k ú rì ạy rì : Khi chạ rì ậ giá trị nhiệ ộ cho ngày 6.4 Tạo mả ộng Việc dùng m ng thuận tiện Tuy nhiên ta t xác s ph n tử c a m ì ? Ví dụ ta mu ười dùng nhập vào nhiệ ộ tùy thích, nhập nhi ì ộ xác cao VB gi i quy t việc m ộ cm ộng ược ị rì c thi không ịnh lúc vi t mã Việ rư c m ng không c n thi ũ c n dành chỗ rư c cho m c tạo m ộng: - Chỉ ịnh tên ki u cho m ng thi t k form, ví dụ Dim nhietdo() As Single ãx ị cm rì c thi Ví dụ rì chạy ta hỏ x ười dùng mu n nhập ngày, ví dụ: Dim songay As Integer songay = InputBox("Ban muon nhap bao nhieu ngay?", "Tao mang dong") - Dùng bi ịnh lạ c m ng (trừ ì ng tính từ 0) Ví dụ If songay > Then ReDim nhietdo(songay - 1) - Ti ù ( ) x ịnh s ph n tử c a m ng Bây làm lại ví dụ sử dụng m ộng: - rư c h t, ta khai báo lại m ộng khai báo bi n songay chứa s ười dùng mu n nhập bằ ã i dòng khai báo l p form1: Dim nhietdo() As Single Dim songay As Integer 64 ửa lại mã c a th tụ 1_ : Dim Prompt, tieude As String Dim i As Short Prompt = "Điền vào nhiệt độ ngày." 'Nhap so muon ghi nhiet songay = InputBox("Ban muon nhap bao so ngay?","") If songay > Then ReDim nhietdo(songay - 1) For i = To UBound(nhietdo) tieude = "Ngày " & (i + 1) nhietdo(i) = CInt(InputBox(Prompt, tieude)) Next - Ti p theo thay s th tục Button2_Click bi n songay: ketqua = ketqua & vbCrLf & _ "Nhiệ ộ trung bình: " & _ Format(tong / songay, "0.0") - Ta có th dùng phát bi r … b t lỗi n ười dùng nhập vào s nhỏ - - Chạy lạ rì t qu rõ r ộ 65 CHƯ NG 7: VB NE 7.1 ADO.NET Ế N IC ADO.NET ỞD IỆU D NG ì ActiveX Data Object.NET (ADO.NET) mộ ện ph n m m NET Framework Bao g m thành ph n ph n m m cung cấp dịch vụ truy cập d liệ ược thi t k cho phép nhà phát tri n vi ã ược qu n lý cho việc ti p cận ngu n d liệu bị ng t k t n i, có th có quan hệ không quan hệ ( ặc d liệu ứng dụng) Tính ă a ADO.NET giúp ứng dụng có th chia sẻ d liệu hay ứng dụng phân tán ADO.NET cung cấp k t n i truy cập v i CSDL cách sử ụ NET Managed Provinder (mặc định Net Framework có hai Managed Provi OleDB Managed Provider) truy cập bị ng t k t n i cách sử dụng Datasets, ứng dụng sử dụng k t n d liệu thời gian truy xuất d liệu cập nhật d liệu Datasets thành ph ú ỡ r d liệu liên tục nh cung cấp truy cập bị ng t k t n i sử dụng ngu d liệu cách hiệu qu kh ă rộng t ược phát tri n từ , ũ ột công nghệ ư i mộ i cấ rú n Mặc dù có mộ rường hợ làm việc ch ộ bị ng t k t n i cách sử dụ , liệ ược chuy n CSDL ADO.NET hiệu qu ằng cách sử dụng Data Adapters ại diện nh c a d liệu gi a ADO ADO.NET khác ADO.NET có th gi d liệu b ng k t qu nhấ , nhi u b ng v i chi ti t c a m i quan hệ Không gi , ệc truy n d liệu gi a ứng dụng cách sử dụng ADO.NET không sử dụ ( j ) s p x p mà dùng datasets, truy n d liệ ột dòng XML Ki n trúc ADO.NET d a hai y u t : Dataset NET Framework data provider Data provides g m thành ph n sau : Datasets - Một tập hợ c a CSDL bao g có liên quan , ràng buộc m i quan hệ c a chúng - Chứ ă r ập d liệu từ xa từ dịch vụ Web XML - Thao tác v i d liệ ộng - Xử lý d liệu theo ki u không k t n i - Cung cấp cho xem thứ bậc XML c a d liệu quan hệ - Xử dụng công cụ XSL r hoạ ộng d liệu NET Framework Data Provider bao g m thành ph thao tác d liệu : - Connection: Cung cấp k t n i v i ngu n d liệu (database) Hay nói cách khác ượng có nhiệm vụ th c k t n i t i CSDL - Command: Th c thao tác c n thi t v lấy d liệu, sử i d liệu th c th tụ ượ r Hi r ệnh lệ iv i CSDL 66 - DataReader: Cung cấp việ ọc d liệu ọc dòng d liệu thờ m ọc theo chi u ti n từ n cu i r: rò u n i gi a Dataset CSDL, t i d liệu lên dataset hoặ ng i dataset v lại CSDL : r , truy cập từ xa lập trình v i d liệu phẳng (Flat), d liệu XML d liệu quan hệ ADO.NET cho phép: - Thao tác v i CSDL c ô rường Connected data & Disconnected data - Làm việc t t v i XML - ược v i nhi u ngu n d liệu - Làm việ r ô rường internet 7.2 Lập trình v i ADO.NET d liệu quan trọng việ r thơng tin D liệu có nhi u ngu n ạng VB.NET ược thi t k v i mụ r xuất, hi n thị, phân tích ệ ADO.NET mơ hình lập trình truy xuấ ệ chung cho tất c ngôn ng trình Windows V i , ú có th truy xuấ n hệ ệ theo cách thứ ã rì 7.2.1 Thu t ngữ sở li u Một s thuật ng v ệ : ệ file t chức thông tin thành b ng gọi (Table) - Mỗi b ng bao g m nhi u hàng cột, cộ ườ ược gọ rường (field) dòng ược gọ tin (record) Mơ hình truy xuất ệ ADO.NET: thi t lập k t n n ệ Ti ượ u ph ( r) ược tạ r truy vấn dl từ b tạ ượng DataSet chứa b ệ ú mu r ệ DataSet tạo b n c a b ệ mà Cu i gán thông tin ượng hi n thị r F r x x, , , r ,… 7.2.2 Làm vi c vớ sở li u Access MS Access có tên ã t cách k t n liệu vào dataset, xây d ng tích hợp chúng vào giao diện c a form ú tạo m i Solution có tên MyADOForm thêm vào d án tên Chọn View | Server Explorer từ cửa s r r x r r ì sau: 67 Hì ệ ệ ụ ộ ô ụ họa cho phép k t n ệ cục bộ, server theo mơ hình client server Ta có th ù xem cấ rú r ệ , xem thuộc tính c a b ng, ki ệ c rườ r ệ ú có th kéo k t n i b ệ cửa s tạ r ượ ệ rì ú ù , bằ ộ vào nút Connect To DataBase cửa s Server Explorer Một hộp thoại Choose Data Source cho phép ta chọn ngu n ệ ì 72 ệ ọ ú chọn Microsoft Access DataBase File thoại Add ì sau: 68 ệ ọ ú ệ , xuất hộp ì 73 ệ ọ ườ ẫ ệ ệ ọ ường dẫ ệ cách ọ nút Browse, chọn ệ Students.mdb ú có th ki m tra xem k t n i có thành cơng khơng cách ọ ú , ũ tùy chỉnh k t n i cách ọ nút Advanced ú thấy dòng mã k t n i ô cu i cùng, dịng mã có nội dung : “ r er=Microsoft.Jet.OLEDB.4.0;DataSource="D:\Data\Studying\VS.Net05\Bai tap\DataBase\ "” Nhấ thêm k t n i vào Server Explorer 7.2.3 Tạo ều ph i li u Data Adapter r ệ tạo u ph i Data Adapter Data Adapter ị ĩ x ng thông tin mà ta mu n lấ r ệ , n n t tạo DataSet VB.NET cung cấp nhi u cách tạo u ph n ta kéo bi ượng b ng Server Explorer vào cửa s form ch ộ thi t k ũ thứ hai dùng công cụ Data Adapter Configuration Winzard Ta gọ n công cụ cách chọn i ượng OledbDataAdapter tab Data c a ToolBox ặt lên form 7.2.4 Sử d ượ ều n OleDbDataAdapter Chọn tab Data cửa s ToolBox Tab u thao tác v ệ r ượ u cho phép tạo k tn ệ ú ã t n i Server Explorer nên không c n hai ượng n a 69 ượng OleDbDataAdapter vào form N ượng khơng xuất hiện, ta có th thêm vào cách ộ vào tab Data chọn Choose Item, xuất cửa s Choose ToolBox Items Chọn tab Net Framework Components chọ r ọ hoàn thiện việc thêm Item cho ToolBox ú ũ th v ượng khác r ược thi t k k tn ệ Access Khi kéo th ượng vào r ì VS.NET tao trình Data Adapter Configuration Winzard Một hình khở , ọ x chuy n sang hình thứ hai ọ Next hai l xuất hình soạn th o câu lệnh SQL N u ú ù câu lệnh SQL, có th nhấn vào nút Qu r r, ù ỗ rợ ọ b ng Instructors, ọ Add, ọ ửa s lại ấ b r r ô x ứng v rường, Query tạo câu lệ ứ rút thông tin c a b ng Trong ụ rút thông tin từ cột b ng, ọ cột Instructor ì 7.4, ọ OK (câu lệ r rút d liệu) ì 7.4 Chọ rườ xây d ng câu lệnh SQL 70 ì 7.5 Giao diện Form Sau nhấn OK, cửa s Generate The SQL Statement hi n thị câu lệnh SQL ta vừa tạo ọ F ệc tạ ượ u ph i 7.2.5 Làm vi c với DataSet ú ta tạ r ượng trình diễn d liệ ườ ù , ượng DataSet Nó nh c ệ nên thao tác c ười dùng ưở ệ n có yêu c u cập nhật r ụ tạ ượng DataSet trình diễn thông tin cột Instructor c a b r r r ệ Students.mdb ọ ọ form1 n u không chọn lệnh tạo DataSet khơng hi n thị menu Chọn Data | Generate DataSet từ làm xuất hộp thoại Generate DataSet ú ặt tên tùy thích New, ụ DsInstructors Chọn checkBox r Visual Basic r ô ụ ọ OK ượng DataSet r r ược tạo khay cơng cụ VB.NET t thêm vào file có tên DsInstructors.xsd cửa s Solution Explorer File chứa thông tin v d liệu theo khuôn dạng XML 7.3 Sử dụ ú c c ụ ều khiển ràng buộc li u u x x, , ược ta ràng buộc d liệu (data binding), ứ d liệu u n phụ thuộc vào ngu n d liệu có DataSet hay d liệ r rì hi n thị r DataAdapter ú a ràng buộc d liệu v u n sau: TextBox, Label, ListBox, x, , r r x r ặc biệt DataGrid, cho phép ta hi n thị toàn nội dung c a DataSet Trong ụ ta ràng buộc d liệ x x hi n thị thông tin b ng Instructors c ệ Students.mdb ú thi t k giao diệ r ì 8.5 r ộc tính c u : 71 Button First: Name – btnFirst, enable – False Button Last: Name – btnLast, enable – False Button Next: Name – btnNext, enable – False Button Previous: Name – btnPrevious, enable – False Button Load Data: Name – btnLoadData TextBox1: Name - txtInstructors u n cịn lại có thuộ ì Bây ta ti n hành ràng buộc d liệ rường (cột d liệu – field) vào textbox txtInstructors u này, ta chọn ô textbox mở Properties c r ộ vào dấu (+) bên cạnh nhánh thuộc tính DataBindings chọn ô text, ộ vào nút ũ x ng ta có th nhìn thấy ngu n d liệu DsInstructors1 hi n thị danh sách ì : - ì 76 ệ ọ ệ ộ Chọn cộ r r ị rường hi n thị ô textbox txtInstructor ã ệ ràng buộc xong, vi t ã xuất d liệ rì c thi Chúng ta tạo th tục btnLoadData_Click cách cửa s thi t k form ấ ú ộ vào nút Load Data r i nhậ ã rì : DsInstructors1.Clear() OleDbDataAdapter1.Fill(DsInstructors1) btnFirst.Enabled = True btnLast.Enabled = True btnNext.Enabled = True btnPrevious.Enabled = True 72 ã xóa d liệu DataSet DsInstructors1 u ph i DataAdapter1 ậ ậ d liệ ượ r r1 ú ã ạo c bằ ức Fill() Chạy thử rì : ọ F5 ki m thử rì rì ạy, ọ ú rì n thị b u tiên c rường Instructor b ng d liệ ú mở rộng s ă a ứng dụ d liệ ệt b , m hi n thị s b n ghi hành ệ : - Tạo k t n ệ c n truy xuất - Tạ ượ u ph i DataAdapter - Tạ ượng trình diễn DataSet - ràng buộc d liệ u n ị : cập nhật, th ng kê, tìm ki , … 7.4 Tạ c c ều khiển t xem li u ú dừng lại việc ràng buộc d liệu hi n thị ược b u tiên vào ô textbox Trong ph n ti p theo tạo nút cho phép duyệt qua b n ghi khác nhau, xem b u tiên cu i ADO.NET cho phép qu n lý duyệt qua b n ghi (record) bằ ượng CurrentManager V ượng ta có th bi ược vị trí hành , n sau cùng, trở v u tiên, n k , rư Mỗi DataSet u có sẵ ượng CurrentManager mỗ ượ r u có thuộc tính BindingContext theo dõi tất c ượng CurrentManager form Trong ph n ú ã ạo b ú ọ ượ First, Last, Next, Previous Giờ vi t mã cho chúng x , rr r duyệt qua b n ghi Tạo th tục btnFirst_Click v i nộ : Me.BindingContext(DsInstructors1,"Instructors").Position = btnFirst.Enabled = False btnNext.Enabled = True btnLast.Enabled = True ã hi n thị b u tiên c a DsInstructors1 sử dụ ượng BindingContext Nó gán giá trị cho thuộc tính Position ( ị r ) trỏ hành c a d liệu chuy nb u tiên Tạo th tục btnLast_Click nhậ ạn mã sau: 'Đếm tổng số ghi Dim tongsobanghi As Integer = Me.BindingContext (DsInstructors1, "Instructors").Count 'Chuyển trỏ đến ghi cuối Me.BindingContext(DsInstructors1, "Instructors").Position = tongsobanghi - btnLast.Enabled = False btnFirst.Enabled = True btnPrevious.Enabled = True 73 btnNext.Enabled = False Tạo th tục btnNext_Click nhậ ạn mã sau: 'Đếm số ghi hành Dim tongsobanghi As Integer = Me.BindingContext (DsInstructors1, "Instructors").Count 'Nếu chưa phải ghi cuối next lên If Me.BindingContext(DsInstructors1, "Instructors").Position < tongsobanghi - Then Me.BindingContext(DsInstructors1, _ "Instructors").Position += btnFirst.Enabled = True btnPrevious.Enabled = True btnLast.Enabled = True Else btnNext.Enabled = False btnLast.Enabled = False btnFirst.Enabled = True btnPrevious.Enabled = True End If Th tục btnPrevious_Click: 'Nếu chưa phải ghi đầu lùi lại If Me.BindingContext(DsInstructors1,"Instructors").Position > Then Me.BindingContext(DsInstructors1,"Instructors").Position -= btnFirst.Enabled = True btnLast.Enabled = True btnNext.Enabled = True Else btnFirst.Enabled = False btnPrevious.Enabled = False End If Vậ ú ã ạo xong nút cho phép duyệt qua b n ghi ọ F5 chạy rì Ấ ú hi n thị d liệu vào textbox Ấ duyệt qua b r d liệu ọ nút Close góc ph i c r trình lại Chúng ta tạ u n label cho hi n thị vị trí b n ghi hiệ ười dùng tiện quan sát 7.5 Hiển thị vị trí ghi hi n hành duyệt xem b , ũ ười dùng bi n ghi thứ Chúng ta thêm mộ ã hi n thị thứ t c a b n ghi thi t k form thêm vào nhãn label1 có thuộc tính Name lblIndexOfRecord, thuộc tính Text c a ã “ r 0” ạo th tục có tên count() i phát bi u khai báo r : Private Sub Count() 74 Dim tongsobanghi, banghihienhanh As Integer tongsobanghi = Me.BindingContext _ (DsInstructors1, "Instructors").Count banghihienhanh = Me.BindingContext _ (DsInstructors1, "Instructors").Position + lblIndexOfRecord.Text = "Record " & _ banghihienhanh.ToString & "Of " & tongsobanghi.ToString End Sub Th tục gán thuộc tính count c ượng BindingContext vào bi n tongsobanghi thuộc tính Position c a cho bi ộng thêm thứ t b n ghi b ng d liệ ược tính từ ó hai giá trị c a hai bi r ược gán cho thuộc tính Text c u n Label lblIndexOfRecord th tục phát huy tác dụng bạn thêm lời gọi th tục th tục Fr _ , _ , r _ , x_ : Count() rì ú ện ọ F5 chạ rì 7.6 Sử dụ D Gr ể hiển thị li u bảng Trong ph n ù r hi n thị d liệu c a b r ệ Students.mdb ú nộ i d liệu c a b ng dạng chuỗ c s ịnh dạng, s p x p ghi lại nh ng i DataGrid trở lạ ệ Gi x x, Ta có th ràng buộc d liệu DataSet vào DataGrid Ràng buộc thơng qua hai thuộc tính DataSource DataMember Trong MyDataGridBinding ộ nội dung c a b ng Instructors có DsInstructors1 hi n thị r i DataGrid ụ MyDataGridBinding: Tạo m i Solution thêm vào d án tên MyDataGridBinding K tn d liệu: rong ụ rư ú ã tn iv ệ r cửa s Server Explorer có k t n ệ ột gạ ỏởk tn u mu n sử dụng lại k t n i ta việc ọ nút Refresh Trong ụ này, ệ ù ục v i d tiện thao tác Ta chọn nút th c k t n ệ ã t Chọ ệ mà vừa copy vào ục chứa d án ọ hoàn thành k t n i Tạ ượ u ph i DataAdapter: Tạ ượng OleDbDataAdapter vào form cách kéo từ ToolBox r r ột cửa s Data Adapter Configuration xuất ọ Next hai l cửa s Generate SQL Statements Tạ có th t gõ câu lệnh SQL hay sử dụng Query Builder ụ ọ nhập tr c ti p câu lệnh SQL SELECT Extension, PhoneNumber, Instructor, InstructorID FROM Instructors ệ ấ d liệu c b rường b ng Instructors ọ x xem k t qu c a Winzard Lúc này, trình Winzard t tạo câu lệnh Update (cập nhật), Select, 75 Insert (chèn), Delete (xóa) ọ F k t thúc trình xây d ng tạ ượ u ph i DataAdapter có tên OleDbDataAdapter1 Tạ ượng trình diễn DataSet: F r : Chọn Data | Generate DataSet từ menu làm hộp thoại Generate DataSet ã t Tại ô New bạn nhậ r r ấu vào ô checkBox Add r Visual studio tạ r ượ hệ th ọ Visual studio tạ ượng DataSet cho b ng Instructors r ệ Students.mdb Lúc cửa s r ượ ọ ú ã u c a thao tác v ệ sử dụng r trình bày d liệu Tạ ượng DataGrid: Kéo form cho c rộ i DataGrid v i cột 10 dòng u n DataGrid ToolBox vào form Kéo chi u dài c a cho phù hợp v i chi c c a form Tạo thêm nút nhấn n r ặt thuộc tính Name btnLoad x “ ” Mở Properties c r ặt thuộc tính Anchor c a c Left, Right, Top, Bottom Ti p theo ta dùng thuộ r r ràng buộc d liệu r r1 i DataGrid ú hi n thị tùy chọn c a thuộc tính DataSource cửa s Properties Mộ rì có nhi thờ i có th th DataSet mà thôi, ta chọn DsInstructors1 Ti p chọn thuộc tính DataMember Instructors Ngay sau ta chọn xong hai thuộ r r ì i hi n thị cột d liệ ù ò liệu hi n thị D liệu ượ ư rì c thi Chọn nút Load ặt thuộc tính Anchor c a Bottom, Left Lúc giao diện form thi t k ì 7.7 , c n vi ã d liệ i bằ ứ F ã r ụ 7.5 ì 7.7 Cửa s form thi t k xong Tạo th tục btnLoad_Click bằ ú 76 nhập mã sau: DsInstructors1.Clear() OleDbDataAdapter1.Fill(DsInstructors1) Nhấ ú i chạy thử rì ọ F5 chạ rì ọ nú nạp d liệ r i DataGrid: Ta có th c form cho thông tin v ệ xuất hiệ ọ ú rì 7.7 Định c c ô i DataGrid ú ịnh dạng thành ph n DataGrid thông qua thuộc tính c a lúc thi t k hay th rì ụ r : cửa s thi t k form mở thuộc tính Properties c i DataGrid - ặt thuộc tính PreferredColumnWidth 110 (rộ 110 ị x ) - ặt thuộc tính ColumnHeadersVisible False V i thi t lập ph c a cột không hi n thị ọ thuộc tính BackColor, chọn màu vàng nhạt hi n thị cho nội dung chuỗi chứa r ô i tạo dịng xen kẽ - ặt thuộc tính GridLineColor, chọn màu xanh Cịn nhi u thuộc tính khác ta ọ 7.8 Cập nhậ li u trở lại bảng DataSet ti n hành chép b ng c ệ , ô i nội d ệ n có yêu c u cập nhật bằ ức UpDate Cùng v i thuộc tính ReadOnly c a DataSet i hay khơng v ệ cửa s thi t k form mở thuộc tính properties c a DataGrid thi t lập giá trị TRUE i v i thuộc tính ReadOnly cho phép có nh i d liệ r i nút n a form Thuộc tính: Name – btnUpdate, Text – “ ” Nút Update hi n thị có nh i DataGrid cập nhật trở lạ d liệu ườ ù ộ vào Tạo th tục btnUpdate_Click nhập ã : Try OleDbDataAdapter1.Update(DsInstructors1) Catch ex As Exception MsgBox(ex.ToString) End Try Th tục sử dụ ức Update c r1 yêu c u thay i tập DataSet DsInstructors1 trở lại b ệ Khi chạ rì , i nội dung cộ thêm b n ghi n ọ ú cập nhậ ệ ại ọ ú x ệ i khơng 77 ... CDbl(TextBox1.Text) value2 = CDbl(TextBox2.Text) If RadioButton1.Checked = True Then TextBox3.Text = value1 + value2 End If If RadioButton2.Checked = True Then TextBox3.Text = value1 - value2 End If If RadioButton3.Checked... ScoreBoard(0, 2) = 12 gán cho ph n tử dòng 0, cột giá trị 12 6.3 Sử dụng mả có c cc ịnh Bây ta tạo ví dụ MyFixedArray sử dụng m ng chi giá trị nhiệ ộ cao thấp hàng ngày tu n M ược khai báo 62 r ghi... MessageBox.Show ("Vovisoft", "Greeting") Next Thí dụ 2: 'Tuyên bố biến số dùng làm counter Dim intCounter For intCounter = 10 To 100 Step 10 MessageBox.Show ("Vovisoft", "Greeting") Next Chú thích: Thí