<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1></div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>
NỘI DUNG
<b>Tổng quan về Visual Basic</b>
<b>Cách biên tập và thực hiện chương trình</b>
<b>Giới thiệu về Form và các Control</b>
<b>Hằng, biến, kiểu dữ liệu</b>
<b>Cấu trúc điều khiển</b>
<b>Tạo Object trong VB</b>
<b>Menu và cách tạo Menu</b>
<b>Các hộp thoại dùng chung</b>
<b>Tập tin </b>
<b>Đồ hoạ</b>
</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>
Tài liệu tham khảo
<i>Giáo trình Visual Basic, Phạm Thuỳ Nhân. </i>
Nhà xuất bản Đồng Nai, 1999
<i>Kỹ xảo lập trình VB6, Phạm Hữu Khang. Nhà </i>
xuất bản Lao Động Xã Hội
<i>Giáo trình Visual Basic của APTECH</i>
<i>Kỹ năng lập trình Visual Basic 6.0, Nguyễn </i>
</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>
Chương 1: Tổng quan về Visual Basic
<b>I.</b>
<b>Giới thiệu</b>
</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>
I - Giới thiệu
VB6.0 là phiên bản mạnh của ngơn ngữ lập
trình Visual basic
Dễ dàng lập trình ứng trên môi trường
windows
Với VB6.0, ta có thể :
Khai thác thế mạnh của các điều khiển mở
</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>
Làm việc với các điều khiển mới: Monthview,
DataTimePiker,
ToolBar,
ImageCombo,
FlatScrollBar.
Làm việc với DHTML.
Làm việc với cơ sở dữ liệu.
Các bổ sung về lập trình hướng đối tượng
</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>
II - Phiên bản VB
</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>
III - Cài đặt
Sử dụng file setup.
Nên cài đặt thêm bộ trợ giúp MSDN
Yêu cầu tối thiểu:
Microsoft Window 95 trở lên hoặc là Microsoft
Window NT Workstation 4.0 trở lên.
Tốc độ CPU 66MHz trở lên.
Màn hình VGA hoặc màn hình có độ phân giải cao
được hổ trợ bởi Microsoft Window
Yêu cầu 16 MB RAM cho Microsoft Window 95 hoặc
</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>
Chương II – Biên tập và thực hiện
chương trình
I.
Khởi động và màn hình VB
II.
Cách thiết kế Form
III.
Cách viết mã vào chương trình
</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>
I - Khởi động và màn hình VB
1. Khởi động VB 6.0
Start Programs Microsoft Visual Basic 6.0
Microsoft Visual Basic 6.0
</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>
1- Click
Stander
exe
</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>
2. Tìm hiểu mơi trường tích hợp IDE – Integrated
Development Environment
Thanh Standard:Thanh cơng cụ chuẩn
I - Khởi động và màn hình VB
</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>
I - Khởi động và màn hình VB
Thanh Edit: sử dụng trong viết code
Thanh Form Editor: di chuyển, sắp xếp các điều khiển trên
Thanh Form Editor: di chuyển, sắp xếp các điều khiển trên
</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>
I - Khởi động và màn hình VB
Hộp công cụ Toolbox: chứa các điều khiển dùng
</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>
Project Explorer: Quản lý và định hướng đề án
Cửa sổ Properties: xem, sửa đổi giá trị các thuộc tính
của điều khiển
</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>
I - Khởi động và màn hình VB
</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>
II – Cách thiết kế Biểu mẫu (form)
1.
Mở một dự án mới:
File New Project
2.
Thêm biểu mẫu vào dự án:
Biểu mẫu dạng MDI:
Format Add MDI Form : Thêm form chính
Format Add Form: Thêm form con
Biểu mẫu dạng thường:
Format Add Form
3.
Thêm module vào dự án
</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>
II – Cách thiết kế Biểu mẫu (form)
4.
Thêm các điều khiển vào biểu mẫu
Chọn điều khiển trên thanh Toolbox
Kéo vẽ vào Form
Thiết đặt các thuộc tính cần thiết cho điều khiển
</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>
III – Thiết kế mã chương trình
View code
Chọn tên điều khiển
</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>
IV – Biên dịch
Biên dịch đề án thành tập tin thực thi:
Project Project Properties
Loại đề án
</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>
IV – Biên dịch
</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>
Chương III
Giới thiệu Form và các control
I.
Form, các thuộc tính và sự kiện cơ bản
II.
Control, các thuộc tính và sự kiện cơ bản
Label
Textbox
Commanbutton
Checkbox và Option button
Combo box và Listbox
</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>
I – Form, các thuộc tính và sự kiện
Sự kiện:
Load(): Xảy ra khi form được load
Click(): Xảy ra khi form được click
Activate(): Xảy ra khi form được kích hoạt
DblClick(): Xảy ra khi nhắp double lên form
Thuộc tính:
Caption: Tiêu đề form
BorderStyle: Thiết đặt đường viền cho form
</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>
I – Form, các thuộc tính và sự kiện
Thuộc tính (tt):
Backcolor: màu nền
</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>
II – Control, các thuộc tính và sự kiện
Điều khiển Label
Cho phép người dùng hiển thị ký tự trên biểu mẩu
<b>Nam : tên điều khiển</b>
<b>Caption : hiển thị chuổi ký tự</b>
Font, Fore color, BackStyle, BackColor: font ký tự,
màu ký tự, nhãn trong suôt không ?, màu nền
Điều khiển khung Frame
Giúp bố trí giao diện trong sáng, rõ nét, làm nổi
</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>
Điều khiển Textbox
Giúp người dùng nhập thông tin vào, xuất thông tin,…
<b>Maxlength: số ký tự tối đa</b>
<b>Text: dùng để nhận và xuất thơng tin</b>
<b>Locked: cho phép thay đổi/khơng thuộc tính text</b>
<b>PasswordChar: quy định dạng hiển thị của ký tự</b>
<b>Multiline: hiển thị trên một dòng hay nhiều dòng</b>
<b>SelLength, Seltart, SelText: số ký tự chọn, vị trí ký tự </b>
bắt đầu chọn, chuyển ký tự chọn
</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>
II – Control, các thuộc tính và sự kiện
Điều khiển Command Button
Nút lệnh
<i>Caption: hiển thị ký tự trên nút lệnh</i>
<i>Default: nhập giá trị từ phím Enter</i>
<i>Cancel: Nhận gía trị từ phím Esc</i>
<i>Enabled: cho phép nút có hiệu lực hay khơng ?</i>
Name: tên nút lệnh
</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>
Điều khiển Listbox
Cho phép hiển thị các đề mục để lựa chọn
Name: tên listbox
List: dữ liệu trong listbox
MultiSelect: Thuộc tính chọn : 1/nhiều
Thêm đề mục vào listbox: additem item [,index]
Xoá đề mục: box.remove index
Xoá tất cả các đề mục : box.clear
Nhận giá trị đề mục : thuộc tính text
</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>
Điều khiển combo box
Được xem là tích hợp giữa text box và listbox
Style: Dạng bombo box
Kiểu
Giá trị
Hằng
Drop-down combo box 0 VbComboDropDown
Simple combo box 1 VbComboSimple
Drop-down list box 2 VbComboDropList
</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>
Điều khiển Checkbox
Cho biết một mục có được chọn hay khơng ?
Private Sub Check1_Click()
If Check1.Value = vbChecked Then
Text1.Font.Bold = True
Else
Text1.Font.Bold = False
End If
End Sub
</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>
Điều khiển Option button
Tương tự như Check box nhưng ở trong một nhóm chỉ
có một mẩu được chọn
<b>Điều khiển Hscrollbar </b>
Có thể dùng làm thiết bị nhập, thiết bị chỉ định cho số
lượng, vận tốc
<b>Large change : xác định khoảng thay đổi khi ấn chuột</b>
<b>Small change : xác định khoảng thay đổi khi ấn chuột ở </b>
cuối thanh cuộn
<b>Value: trả về giá trị của điều khiển trong [min, max]</b>
</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32>
Private Sub HScroll1_Change()
Text1.FontSize = HScroll1.Value
Text1.Height = Text1.Height + HScroll1.Value
Text1.Width = Text1.Width + HScroll1.Value
End Sub
<b>Điều khiển Vscrollbar </b>
Tương tự Hscrollbar
</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>
Chương IV : Hằng, biến, kiểu dữ liệu
I.
Cách khai báo biến, sử dụng biến
II.
Tầm vực và thời gian sống của biến
III.
Cách định nghĩa hằng và sử dụng
</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34>
I- Biến và cách sử dụng
Là một vùng nhớ được đặt tên, dùng để lưu trữ dữ liệu
trung gian trong quá trình hoạt động
<b>Khai báo biến</b>
<i>Cú pháp : [ Dim | Private | Static | Public ] VarName As </i>
<i>DataType </i>
VD: Dim i as integer
<b>Khai báo tường minh</b>
</div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=35>
Ví dụ:
Private iNumVal As Integer
Private iAvgVal As Integer, dInputval As Double
Static sCalcAverage As Single
Dim strInputMsg As String
Lưu ý:
<i>Để được yêu cầu khai báo tường minh ta check vào mục </i>
<i>Require Variable Declaration trong mục Option</i>
<b>Quy định cách đặt tên biến:</b>
Tên phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới
Tên khơng được có dấu câu và các kí tự đặc biệt
</div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36>
Tên phải duy nhất (không trùng với tên nào) trong phạm vi hoạt
động của nó.
Tên khơng dài hơn 255 kí tự
Tên khơng phân biệt chữ hoa và chữ thường
Ví Dụ:
<i>Cách đặt tên biến không đúng</i>
1tuan
tien.cua.toi
so luong
<i>Cách đặt tên biến đúng</i>
icount, number
</div>
<span class='text_page_counter'>(37)</span><div class='page_container' data-page=37>
Lưu ý:
Bạn nên đặt tên biến kèm theo ý nghĩa của loại biến ở ký tự
đầu của tên biến
icount ‘biến kiểu integer
</div>
<span class='text_page_counter'>(38)</span><div class='page_container' data-page=38>
II - Tầm vực và thời gian sống của biến
Public: nếu biến được khai báo với từ khoá
public trong module . Pas thì sẽ có tác dụng
trong tồn chương trình
Private: nếu biến được khai báo với private
trong module .pas thì nó chỉ có tác dung
trong module.pas
</div>
<span class='text_page_counter'>(39)</span><div class='page_container' data-page=39>
<b>Biến toàn cục</b>
<i> được khai báo với từ khố public có tác dụng trong </i>
toàn CT
VD : public icount as integer
<b>Biến cấp module</b>
Được khai báo với từ khóa private, dim trong module
Chỉ được truy cập trong module
Vd: dim i as integer
private ngaythang as date
Tuy nhiên, ta có thể khai báo biến kiểu pubic trong
module. Khi đó nó sẽ được truy cập trong module và cả
ngồi module
</div>
<span class='text_page_counter'>(40)</span><div class='page_container' data-page=40>
<b>Biến cục bộ động</b>
Được khai báo trong thủ tục và có thời gian sống trùng
với thời gian sống của thủ tục
VD:
Sub PrintStr()
Dim Str As String ' Str là một biến cục bộ động.
...
End Sub
<b>Biến cục bộ tĩnh</b>
<i>Được khai báo trong thủ tục với từ khoá static và có thời </i>
gian sống như biến module
</div>
<span class='text_page_counter'>(41)</span><div class='page_container' data-page=41>
Mục đích: được sử dụng để ngăn ngừa các thủ
tục khởi tạo lại giá trị, thường được sử dụng
trong các sự kiện click chuột
</div>
<span class='text_page_counter'>(42)</span><div class='page_container' data-page=42>
III - Hằng và cách sử dụng
Hằng chứa giá trị tạm, khơng thay đổi trong
suốt q trình hoạt động
Khai báo:
[<public| private>]const <tên hằng> [As <kiểu dữ
liệu>] = <biểu thức>
VD:
Const Pi=3.1416
</div>
<span class='text_page_counter'>(43)</span><div class='page_container' data-page=43>
IV – Các kiểu dữ liệu cơ bản
1.
Kiểu số nguyên:
Gồm: Byte, Integer, Long
Phép toán: +, - ,*, / (chia lấy phần nguyên),
/ (chia lấy phần dư)
2.
Kiểu Boolean: (True /False)
3.
Kiểu số thực:
Gồm: Single, Double, Currency
Hàm làm tròn Round :
</div>
<span class='text_page_counter'>(44)</span><div class='page_container' data-page=44>
4.
Kiểu Date:
Kiểu ngày, giờ
VD:#11/11/1900#
#10/3/2005 12.20 AM#
5.
Kiểu xâu ký tự - String
Khai báo:
Độ dài cố định: Dim Name as String * 50
Không cố định: Dim Name as String
</div>
<span class='text_page_counter'>(45)</span><div class='page_container' data-page=45>
IV – Các kiểu dữ liệu cơ bản
5.
Kiểu xâu ký tự - String (tt)
Hàm thông dụng
<i>Len(str) : Lấy chiều dài chuỗi str</i>
<i>Mid(str, start, [length]): Trích chuỗi con từ chuỗi gốc</i>
<i>Left(str, [length]): Trích chuỗi con từ bên trái chuỗi str</i>
<i>Right(str, [length]): ……. phải … str </i>
InStr([start, ] string1, string2[,compare]): Tìm chuỗi con
trong chuỗi gốc - trả về vị trí tìm thấy
Start: Vị trí bắt đầu việc tìm kiếm
String1: Chuỗi để so sánh
</div>
<span class='text_page_counter'>(46)</span><div class='page_container' data-page=46>
IV – Các kiểu dữ liệu cơ bản
Compare:
0 (vbBinaryCompare): So sánh chính xác
1 (vbTextCompare): Tương đối
VD:
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP"
SearchChar = "P"
<b>MyPos = Instr(4, SearchString, SearchChar, 1) </b>
<b>MyPos = Instr(1, SearchString, SearchChar, 0) </b>
<b>MyPos = Instr(SearchString, SearchChar) </b>
</div>
<span class='text_page_counter'>(47)</span><div class='page_container' data-page=47>
IV – Các kiểu dữ liệu cơ bản
5.
Kiểu xâu ký tự - String (tt)
Str: Chuyển đổi song kiểu chuỗi
Val: Chuyển đổi sang kiểu số
6.
Kiểu Object
Chứa địa chỉ 4 byte để trỏ đến đối tượng
Cách dùng:
Dim Obj as Object
</div>
<span class='text_page_counter'>(48)</span><div class='page_container' data-page=48>
IV – Các kiểu dữ liệu cơ bản
8.
Kiểu Variant (mặc định)
Kiểu tổng quát, có thể chứa mọi kiểu khác (trừ kiểu
chuỗi có độ dài cố định)
Hàm kiểm tra kiểu: VarType hoặc TypeName
Hằng giá trị
vbEmpty 0
vbNULL 1
vbInteger 2
vbLong 3
vbSingle 4
</div>
<span class='text_page_counter'>(49)</span><div class='page_container' data-page=49>
IV – Các kiểu dữ liệu cơ bản
vbCurrency
6
vbDate
7
vbString
8
vbObject
9
vbError
10
vbBoolean
11
vbVariant
12
vbByte
17
</div>
<span class='text_page_counter'>(50)</span><div class='page_container' data-page=50>
IV – Các kiểu dữ liệu cơ bản
9.
Kiểu mảng
Là dãy các biến có cùng tên, cùng kiểu
Mảng có chiều dài cố định:
Dim Mang(14) As Integer 0 ..14
Public Mang(20) As Double 0..20
Dim Mang ( 10 to 24) As Integer 10 .. 24
Hàm Unbound: Trả về biên trên
Hàm Lbound: Trả về biên dưới
</div>
<span class='text_page_counter'>(51)</span><div class='page_container' data-page=51>
IV – Các kiểu dữ liệu cơ bản
9.
Kiểu mảng (tt)
Mảng động:
Khai báo: Dim MangDong()
Cấp phát: ReDim [Preserve] MangDong(kích thước)
Ví dụ:
ReDim MangDong(10)
</div>
<span class='text_page_counter'>(52)</span><div class='page_container' data-page=52>
IV – Các kiểu dữ liệu cơ bản
9.
Kiểu mảng (tt)
Một số tính năng khác
Sao chép mảng:
Sub ByteCopy (Old() as Byte, New() as Byte)
New = Old
End sub
Trả về một mảng từ hàm
Public Function Ham(b as Byte) as Byte()
Dim X(2) as Byte
</div>
<span class='text_page_counter'>(53)</span><div class='page_container' data-page=53>
IV – Các kiểu dữ liệu cơ bản
Hàm và thủ tục
Cú pháp thủ tục:
[Private| Public|Static] Sub <tên thủ tục>(tham số)
<lệnh>
End Sub
Cú pháp hàm:
[Private| Public|Static] Function <tên hàm>(tham số) as
<kiểu dữ liệu>
</div>
<span class='text_page_counter'>(54)</span><div class='page_container' data-page=54>
IV – Các kiểu dữ liệu cơ bản
Hàm và thủ tục (tt)
Có thể sử dụng Exit Sub / Exit Function
<i><b>Truyền giá trị - ByVal</b></i>
Sub Truyentri(
<i><b>Byval</b></i>
Ten as <kiểu dữ liệu>)
<câu lệnh>
End Sub
Truyền tham chiếu
Sub Truyenthamchieu(Ten as <kiểu dữ liệu>)
<câu lệnh>
</div>
<span class='text_page_counter'>(55)</span><div class='page_container' data-page=55>
V - Cấu trúc điều khiển
</div>
<span class='text_page_counter'>(56)</span><div class='page_container' data-page=56>
V - Cấu trúc điều khiển
1.
Cấu trúc chọn
Các biểu thức so sánh
Ký hiệu
Ý nghĩa
=
Bằng
<>
Khác
>
Lớn hơn
<
Nhỏ hơn
</div>
<span class='text_page_counter'>(57)</span><div class='page_container' data-page=57>
V - Cấu trúc điều khiển
1.
Cấu trúc chọn (tt)
a.
If … Then
Một dòng:
If <đk> Then <Cơng việc>
Nhiều dịng:
If <đk> Then
</div>
<span class='text_page_counter'>(58)</span><div class='page_container' data-page=58>
V - Cấu trúc điều khiển
1.
Cấu trúc chọn (tt)
b.
If … Then … Else
If <đk 1> Then
<khối lệnh 1>
ElseIf <đk2> Then
<khối lệnh 2>
Else
</div>
<span class='text_page_counter'>(59)</span><div class='page_container' data-page=59>
V - Cấu trúc điều khiển
<b>1.</b>
<b>Cấu trúc chọn (tt)</b>
<b>c.</b> <b>Select Case</b>
Select Case <biểu thức kiểm tra>
Case <danh sách kết quả 1>
<khối lệnh 1>
Case <danh sách kết quả 1>
<khối lệnh 1>
….
Case Else
</div>
<span class='text_page_counter'>(60)</span><div class='page_container' data-page=60>
V - Cấu trúc điều khiển
<b>1.</b>
<b>Cấu trúc chọn (tt)</b>
<b>c.</b> <b>Select Case (tt)</b>
Ví dụ:
Dim Number
Number = 8
<b>Select Case Number </b>
<b>Case 1 To 5</b>
Debug.Print "Between 1 and 5"
<b>Case 6, 7, 8 </b>
Debug.Print "Between 6 and 8"
<b>Case 9 To 10</b>
Debug.Print "Greater than 8"
<b>Case Else </b>
Debug.Print "Not between 1 and 10"
</div>
<span class='text_page_counter'>(61)</span><div class='page_container' data-page=61>
V - Cấu trúc điều khiển
<b>1.</b>
<b>Cấu trúc chọn (tt)</b>
<b>c.</b>
<b>Select Case (tt)</b>
Lưu ý: Trong cấu trúc Case không sử dụng tên biến
Không dùng Case Index >100 mà
</div>
<span class='text_page_counter'>(62)</span><div class='page_container' data-page=62>
V - Cấu trúc điều khiển
<b>2.</b>
<b>Cấu trúc lặp</b>
<b>a.</b>
<b>Do … Loop : Lặp không xác định</b>
<b>Kiểu 1: Thực hiện trong điều kiện đúng</b>
Do While <điều kiện>
<khối lệnh>
Loop
<b>Kiểu 2: Thực hiện trong điều kiện đúng</b>
Do
<khối lệnh>
</div>
<span class='text_page_counter'>(63)</span><div class='page_container' data-page=63>
V - Cấu trúc điều khiển
<b>2.</b>
<b>Cấu trúc lặp (tt)</b>
<b>a.</b>
<b>Do … Loop : (tt)</b>
<b>Kiểu 3: Thực hiện trong điều kiện sai</b>
Do Until <điều kiện>
<khối lệnh>
Loop
<b>Kiểu 4: Thực hiện trong điều kiện sai</b>
Do
<khối lệnh>
</div>
<span class='text_page_counter'>(64)</span><div class='page_container' data-page=64>
V - Cấu trúc điều khiển
<b>2.</b>
<b>Cấu trúc lặp (tt)</b>
<b>b.</b> <b>For … Next : Lặp với số lần xác định</b>
<b>For <biến đếm> =<điểm đầu> To <điểm cuối> [Step </b>
<bước nhảy>]
<khối lệnh>
<b>Next</b>
Ví dụ:
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
. . .
Next
Next
</div>
<span class='text_page_counter'>(65)</span><div class='page_container' data-page=65>
V - Cấu trúc điều khiển
<b>2.</b>
<b>Cấu trúc lặp (tt)</b>
<b>c.</b>
<b>For Each … Next : Lặp với số số phần tử </b>
<b>của tập các đối tượng/ mảng</b>
<b>For Each <phần tử> In <nhóm></b>
<khối lệnh>
Next
</div>
<span class='text_page_counter'>(66)</span><div class='page_container' data-page=66>
V - Cấu trúc điều khiển
<b>2.</b>
<b>Cấu trúc lặp (tt)</b>
<b>c.</b> <b>For Each … Next : (tt)</b>
<b>Ví dụ:</b>
Dim mang(10) As Integer
Dim i
mang(0) = 1
mang(1) = 2
mang(2) = 3
mang(3) = 4
mang(4) = 5
For Each i In mang
MsgBox i
</div>
<span class='text_page_counter'>(67)</span><div class='page_container' data-page=67>
V - Cấu trúc điều khiển
<b>2.</b>
<b>Cấu trúc lặp (tt)</b>
<b>d.</b>
<b>While …Wend: Lặp không xác định, không </b>
<b>sử dụng lệnh Exit </b>
<b>While <đk></b>
<câu lệnh>
</div>
<span class='text_page_counter'>(68)</span><div class='page_container' data-page=68>
V - Cấu trúc điều khiển
<b>3.</b>
<b>Câu lệnh thoát – Exit</b>
Lệnh
Ý nghĩa
Exit do
Lệnh thoát cho Do …
Exit For
Lệnh thoát cho For …
Exit sub
Lệnh thoát cho Sub
</div>
<span class='text_page_counter'>(69)</span><div class='page_container' data-page=69>
V - Cấu trúc điều khiển
<b>3.</b> <b>Câu lệnh thốt – Exit (ví dụ)</b>
Sub RandomLoop
Dim I, MyNum Do
For I = 1 To 1000
MyNum = Int(Rnd * 100)
Select Case MyNum
Case 17: MsgBox "Case 17"
<b>Exit For </b>
Case 29: MsgBox "Case 29"
<b>Exit Do</b>
Case 54: MsgBox "Case 54"
<b>Exit Sub </b>
End Select
Next Loop
</div>
<span class='text_page_counter'>(70)</span><div class='page_container' data-page=70>
V - Cấu trúc điều khiển
<b>4.</b>
<b>Câu lệnh Go to: Bãy lỗi</b>
<i><b>On Error Goto Loi</b></i>
</div>
<span class='text_page_counter'>(71)</span><div class='page_container' data-page=71>
VI- Tạo đối tượng trong VB
Khai báo biến đối tượng
</div>
<span class='text_page_counter'>(72)</span><div class='page_container' data-page=72>
VI- Tạo đối tượng trong VB
1.
Tạo biến đối tượng
Cú pháp:
<[Dim]/[Public]/[Private]> <tên biến> As <đối tượng>
Ví dụ:
Dim frmbieumau As Form
Dim txtInfor As TextBox
</div>
<span class='text_page_counter'>(73)</span><div class='page_container' data-page=73>
VI- Tạo đối tượng trong VB
2.
Từ khoá thường dùng
Từ khoá SET
Tham chiếu đến đối tượng chuyên biệt
Ví dụ:
Set frmBien = Form1
</div>
<span class='text_page_counter'>(74)</span><div class='page_container' data-page=74>
VI- Tạo đối tượng trong VB
2.
Từ khoá thường dùng
Từ khoá IS
Cho phép kiểm tra biến đối tượng có tham chiếu đến
đối tượng khơng
Ví dụ:
</div>
<span class='text_page_counter'>(75)</span><div class='page_container' data-page=75>
VI- Tạo đối tượng trong VB
2.
Từ khoá thường dùng
Từ khố Nothing
Giải phóng vùng nhớ đã dùng cho đối tượng
Ví dụ
Dim Afont as Font
……….
</div>
<span class='text_page_counter'>(76)</span><div class='page_container' data-page=76>
VI- Tạo đối tượng trong VB
2.
Từ khoá thường dùng
Từ khoá New
Tạo đối tượng mới từ đối tượng gốc (là lớp)
</div>
<span class='text_page_counter'>(77)</span><div class='page_container' data-page=77>
VI- Tạo đối tượng trong VB
2.
Từ khoá thường dùng
Các kiểu đối tượng tổng quát: Control, Object,
Variant
Dùng để tham chiếu đến các đối tương thuộc nhiều
kiển khác nhau
</div>
<span class='text_page_counter'>(78)</span><div class='page_container' data-page=78>
VII- Menu và cách tạo Menu
Giới thiệu
</div>
<span class='text_page_counter'>(79)</span><div class='page_container' data-page=79>
VII- Menu và cách tạo Menu
1.
Giới thiệu
Có 2 loại menu cơ bản
</div>
<span class='text_page_counter'>(80)</span><div class='page_container' data-page=80>
VII- Menu và cách tạo Menu
2.
Cách tạo menu
a.
Tạo menu dạng thả xuống
</div>
<span class='text_page_counter'>(81)</span><div class='page_container' data-page=81>
VII- Menu và cách tạo Menu
2.
Cách tạo menu
a.
Tạo menu dạng thả xuống
Các thuộc tính cơ bản
<b>Caption : là chuỗi hiển thị trên menu</b>
<b>Name : tên của thành phần</b>
<b>Shortcut: tạo phím tắt cho thành phần</b>
<b>WindowList: Hiển thị tiêu đề của form con trong form </b>
mẹ (MDI)
Checked: Thuộc tính dạng check
</div>
<span class='text_page_counter'>(82)</span><div class='page_container' data-page=82>
VII- Menu và cách tạo Menu
2.
Cách tạo menu
a.
Tạo menu dạng thả xuống
Các thuộc tính cơ bản
Tách nhóm menu: Caption =‘-’
Tạo phím chọn nhanh: thêm ký tự & trược ký tự cần tạo
</div>
<span class='text_page_counter'>(83)</span><div class='page_container' data-page=83>
VII- Menu và cách tạo Menu
2.
Cách tạo menu
a. Tạo menu dạng bật ra
Tạo trược menu theo dạng thả xuống
Tắt thuộc tính Visible của menu vừa tạo
Thiết đặt sự kiện MouseUp
Ví dụ:
Private Sub MDIForm_MouseUp(Button As Integer, Shift As
Integer, X As Single, Y As Single)
If Button = vbRightButton Then
PopupMenu mfile, vbPopupMenuLeftAlign
End If
</div>
<span class='text_page_counter'>(84)</span><div class='page_container' data-page=84>
VII- Menu và cách tạo Menu
2.
Cách tạo menu
a.
Tạo menu dạng bật ra
Các thuộc tính hiển thị:
</div>
<span class='text_page_counter'>(85)</span><div class='page_container' data-page=85>
VIII- Hộp thoại dùng chung
Hộp thông điệp (Message Box)
Hộp nhập (Input box)
Các hộp thoại thông dụng (Common Dialog)
</div>
<span class='text_page_counter'>(86)</span><div class='page_container' data-page=86>
VIII- Hộp thoại dùng chung
1.
Hộp thông điệp – Message box
Xuất thông tin, tương tác với người dùng
<i><b>MsgBox(prompt[, buttons] [, title] [, helpfile, </b></i>
<i><b>context]) </b></i>
Ví dụ:
</div>
<span class='text_page_counter'>(87)</span><div class='page_container' data-page=87>
Hằng số Giá trị Diễn giải
vbOkOnly 0 Chỉ hiển thị nút OK
vbOKCancel 1 Hiển thị 2 nút Ok và Cancel
vbAbortRetryIgnore 2 Hiển thị nút Abort, Retry, Ignore
vbYesNoCancel 3 Hiển thị các nút Yes, No, Cancel
vbYesNo 4 Hiên thị 2 nút Yes và No
</div>
<span class='text_page_counter'>(88)</span><div class='page_container' data-page=88>
<b>Hằng số</b> <b>Diễn giải</b>
vbCritical Dùng cho những thông báo lỗi thất bại khi thi
hành cơng việc nào đó
vbQuestion Dùng cho những câu hỏi yêu cầu người dùng
lựa chọn
vbExclamation Dùng cho các thơng báo của chương trình
</div>
<span class='text_page_counter'>(89)</span><div class='page_container' data-page=89>
Hằng số Giá trị Nút
vbOk 1 OK
vkCancel 2 Cancel
vbAbort 3 Abort
vbRetry 4 Retry
vbIgnore 5 Ignore
vbYes 6 Yes
</div>
<span class='text_page_counter'>(90)</span><div class='page_container' data-page=90>
VIII- Hộp thoại dùng chung
2.
Hộp nhập – Input Box
Dùng nhận thông tin
<i><b>InputBox(prompt[, title] [, default] [, xpos] [, </b></i>
<i><b>ypos] [, helpfile, context])</b></i>
<b>VD:</b>
Public Sub main()
Dim ReturnString As String
</div>
<span class='text_page_counter'>(91)</span><div class='page_container' data-page=91>
VIII- Hộp thoại dùng chung
3.
Các hợp thoại thông dụng
Mở tập tin
Lưu tập tin
Chọn màu
Chọn Font
In ấn
Trợ giúp
</div>
<span class='text_page_counter'>(92)</span><div class='page_container' data-page=92>
Hộp thoại mở và lưu tập tin
Chức năng: Mở và lưu tập tin
Ví dụ : Về hộp thoại Open
Private Sub Form_Load()
On Error GoTo ErrHander
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files(*.txt)|*.txt|
Batch Files (*.bat)|*.bat"
CommonDialog1.FilterIndex = 1
CommonDialog1.ShowOpen
Exit Sub
ErrHander: Exit Sub
CommonDialog1.ShowOpen
End Sub
</div>
<span class='text_page_counter'>(93)</span><div class='page_container' data-page=93>
Hộp thoại mở và lưu tập tin
Thuộc tính
Filter: Dạng tập tin mở/lưu
Filter index: Mục (dạng file) được chọn mặc định
</div>
<span class='text_page_counter'>(94)</span><div class='page_container' data-page=94>
Hộp thoại chọn màu
Chức năng
Cho phép chọn màu
ShowColor
Ví dụ
Private sub getcolor(){
commondialog1.showcolor
</div>
<span class='text_page_counter'>(95)</span><div class='page_container' data-page=95>
Hộp thoại Font
Chức năng
Cho phép người dùng chọn font chữ
Showfont
Thuộc tính flags: cho phép chọn loại font hiển thị
Ví dụ
Private sub getfont()
Commondialog1.showfont
lname.fontname=commondialog1.fontname
End sub
Private Sub Command1_Click()
CommonDialog1.Flags = &H3
CommonDialog1.ShowFont
</div>
<span class='text_page_counter'>(96)</span><div class='page_container' data-page=96>
Thuộc tính Giải thích
Color Lưu giữ giá trị màu được chọn
FontBold True nếu người dùng chọn chế độ đậm
(Bold) và False nếu ngựơc lại
FontItalic True nếu in nghiên và False là ngựơc lại
FontStrikeThru True nếu chọn chế độ gạch ngang các ký tự
FontUnderLine True nếu chọn chế độ gạch dưới
FontName Tuỳ ý
Max Kích cỡ lớn nhất của Font được hiển thị
Min Kích cỡ nhỏ nhất của Font được hiển thị
FontSize Kích cỡ của Font được chọn
</div>
<span class='text_page_counter'>(97)</span><div class='page_container' data-page=97>
<b>Hằng</b> <b>Giá trị</b> <b>Hiệu quả</b>
CdlCFPrinterFonts &H2 Chỉ hiển thị font máy in
CdlCFScreenFonts &H1 Chỉ hiển thị font màn hình
CdlCFBoth &H3 Chỉ hiển thị font màn hình và
font máy in
CdlCFScalableOnly &H20000 Hiển thị font tỷ lệ như font
TrueType
</div>
<span class='text_page_counter'>(98)</span><div class='page_container' data-page=98>
Hộp thoại Print
Chức năng
Thực hiện việc in ấn
ShowPrint
Một số thuộc tính thơng dụng: Copies,
FromPage, ToPage
Ví dụ
</div>
<span class='text_page_counter'>(99)</span><div class='page_container' data-page=99>
<b>Thuộc tính</b>
<b>Giải thích</b>
Copies Số bản in
FromPage Số thứ tự của trang bắt đầu
Max Số bản in tối đa cho phép
Min Số bản in tối thiểu cho phép
PrinterDefault Nếu = True thì mọi thay đổi thì được gán
lại thành thay đổi hệ thống và có ảnh
hưởng đến các ứng dụng khác
ToPage Số thứ tự của trang in cuối cùng
</div>
<span class='text_page_counter'>(100)</span><div class='page_container' data-page=100>
X. Xử lý chuột và bàn phím
<b>1. Sự kiện chuột</b>
Biểu mẫu hoặc điều khiển có thể bắt đầu sự kiện
chuột khi có con trỏ chuột đi ngang qua.
Có 3 sự kiện chuột chủ yếu , đó là:
MouseDown: Xảy ra khi người sử dụng ấn chuột
MouseUp : Xảy ra khi người sử dụng thả
một nút chuột bất kỳ
</div>
<span class='text_page_counter'>(101)</span><div class='page_container' data-page=101>
<i>Các tham số :</i>
Button: cho biết nút chuột
Shift:
Cho biết Shift , Ctrl hay Alt được ấn
X, Y :
cho biết toạ độ con trỏ chuột
<b>Sử dụng sự kiện MouseDown</b>
<b>Ví dụ mơ ta sự kiện ấn chuột</b>
Private Sub Form_MouseDown(Button As Integer, Shift As Integer,
X As Single, Y As Single)
Line (10, 10)-(X, Y) ‘vẽ đường thẳng (10,10) đến (X,Y)
End Sub
</div>
<span class='text_page_counter'>(102)</span><div class='page_container' data-page=102>
<b>Sự kiện MouseUp: </b>
<b>Ví dụ mơ ta sự kiện thả chuột</b>
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X
As Single, Y As Single)
If Button = 1 Then Print "Ban vua tha chuot trai“
If Button = 2 Then Print "Ban vua tha chuot phai“
If Button = 4 Then Print "Ban vua tha chuot giua“
End Sub
</div>
<span class='text_page_counter'>(103)</span><div class='page_container' data-page=103>
<b>Sử dụng sự kiện MouseMove</b>
Thường dùng với phương thức Line để vẽ hình
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Circle (X, Y), 50
End Sub
<b>Hiệu chỉnh con trỏ chuột</b>
Ta có thể dùng thuộc tính MousePointer để hiển thị một biểu tượng,
con trỏ màn hình hay con trỏ chuột đã được hiệu chỉnh. Dưới đây là
một số giá trị của thuộc tính MousePointer
CcDefault
CcArrow
CcCross
……..
</div>
<span class='text_page_counter'>(104)</span><div class='page_container' data-page=104>
<b>2. Sự kiện bàn phím </b>
Bàn phím cũng có 3 sự kiện:
KeyPress: khi một phím có mã ASCII bất kỳ được ấn
KeyDown: khi một phím bất kỳ được ấn
KeyUp: khi một phím bất kỳ được thả
Chỉ có những điều khiển đang có Focus mới bắt đầu sự
kiện bàn phím.
Cịn đối với biểu mẫu, nó chỉ bắt đầu được sự kiện bàn
phím mỗi khi được kích hoạt và khơng có bất kỳ điều
khiển khác có Focus.
</div>
<span class='text_page_counter'>(105)</span><div class='page_container' data-page=105>
Private Sub Text1_KeyPress(KeyAscii As Integer)
MsgBox KeyAscii
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As
Integer)
MsgBox "Keycode: " & KeyCode & "Shift: " & Shift
End Sub
<b>Shift</b> <b>Ý nghĩa</b>
1 Phím Shift
2 Phím Ctrl
4 Phím Alt
<b>KeyCode = 13</b> <b>Phím Enter</b>
<b>KeyCode = 27</b> <b>Phím Asc</b>
</div>
<span class='text_page_counter'>(106)</span><div class='page_container' data-page=106>
LẬP TRÌNH CƠ SỞ DỮ LIỆU
LẬP TRÌNH VỚI ADO
</div>
<span class='text_page_counter'>(107)</span><div class='page_container' data-page=107>
ADO (ActiveX Data Object)
ADO là gì?
Mơ hình ADO
Tham chiếu ADO trong VB
</div>
<span class='text_page_counter'>(108)</span><div class='page_container' data-page=108>
Tổng quan về phương thức truy cập
dữ liệu
<b>Client Application</b>
<b>ADO</b>
<b>OLE DB</b>
<b>ODBC</b>
Relational Data
SQL Server
Jet
Oracle
Non – Relational
Data
Email
Text
</div>
<span class='text_page_counter'>(109)</span><div class='page_container' data-page=109>
<b>1. ADO là gì ?</b>
ADO là giao diện lập trình truy xuất cơ sở dữ liệu
được phát triễn bởi Microsoft, ADO nằm bên trên
OLE DB, sử dụng những phương thức do OLE DB
cung cấp để truy xuất dữ liệu.
OLE DB là một giao diện lập trình cơ sở dữ liệu ở
mức hệ thống.
Một số phiên bản OLE DB:
Microsoft OLE DB Provider for ODBC
Microsoft OLE DB Provider for SQL Server
Microsoft OLE DB Provider for Microsoft Jet
Microsoft OLE DB Provider for Oracle
…….
</div>
<span class='text_page_counter'>(110)</span><div class='page_container' data-page=110>
Mơ hình
đối
tượng
ADO
</div>
<span class='text_page_counter'>(111)</span><div class='page_container' data-page=111>
<b>Đối tượng của ADO</b>
Connection, command, Recordset: là 3 đối tượng chủ yếu
của mô hình đối tượng này
<b>Connection: Dùng kết nối cơ sở dữ liệu, làm nhiệm vụ kiểm </b>
soát giao dịch.
Connection có thể gắn liền với đối tượng Recordset hoặc
Command
<b>Command : Thực hiện lệnh. </b>
<b>Các hành động: Update, Insert, Delete và các câu lệnh truy </b>
<b>vấn</b>
<b>Recordset: Chứa một tập hợp kết quả được trả về từ dữ liệu </b>
nguồn
<b>Errors: Chứa thông tin liên quan đến lỗi gây bởi một trong </b>
những đối tượng trên mơ hình ADO
</div>
<span class='text_page_counter'>(112)</span><div class='page_container' data-page=112>
<b>Tham chiếu ADO vào Visual Basic</b>
Chọn Project / Reference/ Chọn Microsoft ActiveX
Data Objects 2.7 Library ( Sử dụng cho trường
hợp SQL Server)
Chọn Project / Components/Chọn Microsoft ADO
Data Control 6.0 (OLE DB )
</div>
<span class='text_page_counter'>(113)</span><div class='page_container' data-page=113>
Đối tượng Connection
Thuộc tính:
CommandTimeout: Thời gian chờ để nhận kết quả thực thi
câu lệnh Execute
ConnectionString: Chỉ định chuỗi kết nối CSDL
Các thông số của ConnectionString:
Provider: SQLOLEDB dùng cho SQL Server
Data Source: Tên của Server
Initial Catalog: Tên của CSDL
UserID, Password: Tài khoản và mật khẩu đăng nhập vao CSDL
Provider=SQLOLEDB.1;Persist Security Info=False;User
ID=sa;Initial Catalog=Northwind;Data Source=NVLOT
ConnectionTimeout: Thời gian chờ để nhận kết quả kết nối.
Mặc định là 15 giây
Cursorlocation: Cho biết đối tượng Recordset được tạo phía
</div>
<span class='text_page_counter'>(114)</span><div class='page_container' data-page=114>
Đối tượng Connection
DefaultDatabase: Tên CSDL SQL server cần kết nối
Provider: Chỉ định Data provider nào được sử dụng
State: Trả về trạng thái nối kết
Phương thức:
BeginTrans: Khởi tạo một giao dịch
Cancel: Ngừng thực thi câu lệnh Open hoặc Execute
Close: Đóng đối tượng Connection và ngắt nối kết
CommitTrans: Lưu lại tất cả những thay đổi được thực
hiện trong quá trình thực hiện giao dịch
Execute: thực thi một câu truy vấn, câu SQL, thủ tục lưu
trữ nội
Open: Thiết lập kết nối với SQL Server qua
ConnectionString
</div>
<span class='text_page_counter'>(115)</span><div class='page_container' data-page=115>
Đối tượng Connection
Dim adoconnection As New ADODB.Connection
Dim adocommand As New ADODB.Command
With adoconnection
.ConnectionString = "Provider=SQLOLEDB.1;Persist Security
Info=False;User ID=sa;Initial Catalog=tes;Data Source=(local)"
.Open
.BeginTrans
End With
With adocommand
.ActiveConnection = adoconnection
.CommandType = adCmdText
.CommandText = "Insert sinhvien(ma,ten) values(4," & “Cong" & ") "
.Execute
End With
</div>
<span class='text_page_counter'>(116)</span><div class='page_container' data-page=116>
Đối tượng Recordset
Phương thức:
Addnew: Thêm vào Recordset một mẫu tin mới
Cancel: Hủy bỏ thực thi phương thức Open
CancelBatch: Hủy bỏ những cập nhật sắp xảy ra trong một
Recordset
Clone: Tạo một bản sao của Recordset
Close: Đóng Recordset và đóng kết nối với CSDL
Delete: Xóa mẫu tin hiện tại
GetRows: Nhận về nhiều mẫu tin đưa vào một mảng
GetString: Chuyển dữ liệu trong một Recordset thành chuỗi
Move: Di chuyển con tro dòng đi bao nhiêu mẫu tin
</div>
<span class='text_page_counter'>(117)</span><div class='page_container' data-page=117>
Đối tượng Recordset
MoveNext: Di chuyển con trỏ dòng sang mẫu tin tiếp theo
MovePrevious: Di chuyển con trỏ dòng về mẫu tin trước đó
NextRecordset: Trả về Recordset kết tiếp
Open: Mở một Recordset dựa trên ActiveConncection và
Source
Requery: Thực thi lại câu Query để là tươi
Resync: Làm tươi lại dữ liệu trong Recordset
Update: Lưu lại các thay đổi trên Recordset
UpdateBatch: Lưu lại những thay đổi trong một con trỏ
</div>
<span class='text_page_counter'>(118)</span><div class='page_container' data-page=118>
Đối tượng Recordset
Dim adoRS As New ADODB.Recordset
With adoRS
.ActiveConnection = "Provider=SQLOLEDB.1;Persist Security
Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=(local)"
.Source = “Select EmployeeID, Lastname, FirstName From Employees"
.Open
End With
While adoRS.Fields.Count > 0
If (Not adoRS.BOF) And (Not adoRS.EOF) Then
Debug.Print adoRS.Fields("FirstName")
Debug.Print adoRS.Fields("LastName")
End If
</div>
<span class='text_page_counter'>(119)</span><div class='page_container' data-page=119>
Đối tương Command
Phương thức:
Cancel: Hủy bỏ thực thi câu lệnh Execute
Execute: thực thi câu lệnh trong thuộc tính ComandText
Thuộc tính:
ActiveConnection:Chuỗi nối kết đến CSDL
CommandText: Câu lệnh cần thực hiện
CommandTimeout: Số giây mà đối tượng Command chờ
kết quả trả về
CommandType: Loai câu lệnh Command
Name: Tên đối tượng Command
State: Trạng thái của đối tượng Command Đóng, mở,
</div>
<span class='text_page_counter'>(120)</span><div class='page_container' data-page=120>
Trình bày dữ liệu trên DataGrid
Project Components Microsoft DataGrid Control
6.0
Project Components Microsoft ADO Data Control
6.0
<b>ADO</b>
<b>(ADODC1)</b>
<b>DataGrid</b>
</div>
<span class='text_page_counter'>(121)</span><div class='page_container' data-page=121>
Adodc1.ConnectionString =
"Provider=SQLOLEDB.1;Persist Security
Info=False;User ID=sa;Initial
Catalog=Northwind;Data Source=(local)"
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from Employees“
Set adoRS.DataSource = Adodc1
</div>
<span class='text_page_counter'>(122)</span><div class='page_container' data-page=122></div>
<span class='text_page_counter'>(123)</span><div class='page_container' data-page=123>
Dim sql, strcon As String
strcon = "Provider=SQLOLEDB.1;Persist Security Info=False;User
ID=sa;Initial Catalog=tes;Data Source=(local)"
sql = "Insert into sinhvien(mssv,hoten,phai) values('" & txtmssv.Text & "','"
& txthoten.Text & "','"
If Nam.Value = True Then
sql = sql & "Nam')"
Else
sql = sql & "Nu')"
End If
With adocommand
.ActiveConnection = strcon
.CommandText = sql
.Execute
End With
Adodc1.Refresh
DBGrid.Refresh
</div>
<span class='text_page_counter'>(124)</span><div class='page_container' data-page=124>
Dim sql, strcon As String
strcon = "Provider=SQLOLEDB.1;Persist Security Info=False;User
ID=sa;Initial Catalog=tes;Data Source=(local)"
sql = "Update sinhvien set hoten='" & txthoten.Text & "' where
mssv='" & txtmssv.Text & "'"
With adocommand
.ActiveConnection = strcon
.CommandText = sql
.Execute
End With
Adodc1.Refresh
DBGrid.Refresh
</div>
<span class='text_page_counter'>(125)</span><div class='page_container' data-page=125>
Tom tắt kết nối ADO
Có thể sử dụng cách lệnh sau để kết nối và
thực thi với cơ sở dữ liệu SQL Server /
Access
Khai báo biến
Dim Conn, Rst, gsCon
Khởi tạo gsCon
gsCon=“chuỗi Provider”
Khởi tọa kết nối
</div>
<span class='text_page_counter'>(126)</span><div class='page_container' data-page=126>
Khởi tạo kết nối bảng
Set Rst=CreateObject(“ADODB.Recordset”)
Hoặc R as New ADODB.Recordset
Tạo kết nối
Conn.Open gsConn
Thực thi phát biểu Insert/Update/Delete
Conn.Execute “Delete from…..”
Tạo kết nối với bảng csdl ứng với kết nối Conn
Rst.Open “Select * from ….” , Conn
Thêm dữ liệu vào bảng
Rst.AddNew
</div>
<span class='text_page_counter'>(127)</span><div class='page_container' data-page=127>
Lấy dữ liệu
Biến=Rst(“Tên cột”)
Biến =Rst(“số thứ tự côt”)
Di chuyển trên bảng
Rst.MoveFirst
Rst.MoveLast
Rst.MoveNext
Rst.MovePrevious
Kiểm tra
Rst.EOF, Rst.BOF
</div>
<span class='text_page_counter'>(128)</span><div class='page_container' data-page=128>
Crystal Report
Chức năng:
Cho phép in mẫu báo cáo ra màn hình, máy in,
excel, word…
</div>
<span class='text_page_counter'>(129)</span><div class='page_container' data-page=129>
Crystal Report
</div>
<span class='text_page_counter'>(130)</span><div class='page_container' data-page=130>
Crystal Report
Nguồn dữ
liệu <sub>Microsoft </sub>
SQL
Server
Thông tin
đăng nhập
Microsoft SQL
</div>
<span class='text_page_counter'>(131)</span><div class='page_container' data-page=131></div>
<span class='text_page_counter'>(132)</span><div class='page_container' data-page=132></div>
<span class='text_page_counter'>(133)</span><div class='page_container' data-page=133></div>
<span class='text_page_counter'>(134)</span><div class='page_container' data-page=134>
Crystal Report
Sau khi thiết kế song <tên Report>.<rpt>
Sử dụng điều khiển Crviewer Control
Project Components Crystal Report Viewer
Control
Crystal Report 8.5 ActiveX Designers Design and
</div>
<span class='text_page_counter'>(135)</span><div class='page_container' data-page=135></div>
<span class='text_page_counter'>(136)</span><div class='page_container' data-page=136>
Private Sub Form_Load()
CRViewer1.EnableExportButton = True
Dim appReport As New CRAXDDRT.Application
Dim csReport As CRAXDDRT.Report
Set csReport = appReport.OpenReport(App.Path &
"\Report2.rpt")
csReport.Database.LogOnServer "pdssql.dll", “(local)",
"tes", "sa", ""
CRViewer2.ReportSource = csReport
CRViewer2.ViewReport
End Sub
Mã lệnh hiển
thị hộp thoại
</div>
<span class='text_page_counter'>(137)</span><div class='page_container' data-page=137>
<b>Xây dựng, đăng ký và sử dụng tập tin DLL</b>
DLL – Dynamic Link Library là thự viện liên kết
động chứa các phương thức và thuộc tính có thể
dùng lại
Xây dựng tập tin dll
File New Project ActiveX DLL
Đặt tên cho Project
Mục Instancing:
Private: Chỉ được phép tạo đối tượng trong dự án chứa đối
tượng
PublicNotCreatable: Cho phép các ứng dụng khác sử dụng
đối tượng, nhưng không cho phép các ứng dụng khác tạo
chúng
MultiUse:Tạo tuỳ ý đối tượng
Global MultiUse:Tương tự MultiUse, trở thành một phần
</div>
<span class='text_page_counter'>(138)</span><div class='page_container' data-page=138>
Tên lớp
Tên Project
</div>
<span class='text_page_counter'>(139)</span><div class='page_container' data-page=139>
<b>Xây dựng, đăng ký và sử dụng tập tin DLL</b>
Khai báo các phương thức và thuộc tính cho lớp
Lưu tập tin lại
Biên dịch:
Project Properties Component chọn Binary
Compatibility
<i>File Make <Tên file>.DLL Lưu vào thư mục </i>
System32
Đăng ký tập tin DLL
</div>
<span class='text_page_counter'>(140)</span><div class='page_container' data-page=140>
<b>Xây dựng, đăng ký và sử dụng tập tin DLL</b>
Sử dụng tập tin DLL
Tạo Project mới
Project References Chọn Project chứa tập
tin DLL
Khai báo đối tượng và sử dụng
Private Sub Command1_Click()
Dim s
Set s = CreateObject("BG.TEST")
MsgBox s.Giaithua(6)
</div>
<!--links-->