Thay Đổi Giá Trị Một Phần Tử Trong Collection

đâu trong Colletion. Ta cũng có thể truy cập vào một phần tử thông qua chỉ số thứ tự của nó trong Collection giống như đối với mảng.

Ngược lại với mảng khi ta đã thêm một phần tử vào Collection ta chỉ có thể đọc mà không thay đổi được phần tử này. Ta chỉ có thể thay đổi giá trị của nó bằng cách xóa phần tử cũ và thêm phần tử mới.

Trước khi sử dụng thì Collection phải được tạo ra. Giống như với các đối tượng một Collection phải được khai báo sau đó tạo ra như đoạn lệnh sau:

Dim EmployeeNames As Collection Set EmployeeNames = New Collection

Hoặc ta có thể khai báo như sau:

Dim EmployeeNames As New Collection

Để thêm một phần tử vào Collection ta sử dụng phương thức Add với hai tham số là giá trị mà ta muốn thêm và chuỗi mã khóa (key) kết hợp với nó. Ví dụ, bổ sung vào Collection Employee phần tử John Smith có key = “Marketing” ta sử dụng phương thức Add như sau:

EmployeeNames.Add "John Smith", "Marketing"

Thông thường phương thức Add sẽ chèn thêm một phần tử vào cuối nhưng ta có thể xác định vị trí cần lưu trữ phần tử bằng cách sử dụng tham số before hoặc after.

' Chèn thêm giá trị này vào sau phần tử đầu tiên trong Collection.

EmployeeNames.Add "Anne Lipton", "Sales"

' Chèn giá trị mới này vào trước phần tử vừa tạo

EmployeeNames.Add "Robert Douglas", ,"Sales"


2.24.2. Truy xuất giá trị trong Collection

Để truy xuất vào một giá trị trong Collection ta sử dụng phương thức Item . Đây là phương thức ngầm định của Collection vì thế ta có thể bỏ qua. Các phần tử có thể được đọc thông qua chỉ số hoặc thông qua chuỗi mã khóa của chúng.

Ví dụ:

' All the following statements print "Anne Lipton". Print EmployeeNames.Item("Sales")

Print EmployeeNames.Item(1) Print EmployeeNames("Sales") Print EmployeeNames(1)

Để lấy số phần tử trong Collection sử dụng phương thức Count, nó trả về số phần tử trong Collection.

Ví dụ:

' In ra phần tử cuối cùng của Retrieve EmployeeNames collection.

Print EmployeeNames.Item(EmployeeNames.Count)


2.24.3. Xoá một giá trị trong Collection

Phương thức Remove được sử dụng để loại bỏ một phần tử ra khỏi Collection, phương thức này chấp nhận cả chỉ số hoặc chuỗi mã khóa.

Ví dụ:

EmployeeNames.Remove "Marketing" Sub RemoveAllItems(col As Collection)

Do While col.Count col.Remove 1

Loop End Sub

Chú ý:Collection không cho phép gỡ bỏ tất cả các phần tử một lúc, vì vậy để gỡ bỏ tất cả các phần tử ta phải sử dụng phương pháp lặp.

2.24.4. Thay đổi giá trị một phần tử trong Collection

Để thay đổi giá trị của một phần tử trước tiên ta phải xóa nó ra khỏi Collection sau đó thêm một phần tử mới.

Ví dụ:

Sub ReplaceItem(col As Collection, index As Variant, newValue As Variant) ' Loại bỏ phần tử.

col.Remove index ' Sau đó thêm mới.

If VarType(index) = vbString Then

' Thêm một phần tử mới với cùng chuỗi mã khóa. col.Add newValue, index

Else

' Thêm một phần tử mới ở cùng một vị trí

„ (không có chuỗi mã khóa). col.Add newValue, , index

End If End Sub

2.25. Bản ghi


2.25.1. Khai báo kiểu bản ghi

Bản ghi là kiểu dữ liệu cho phép chúng ta có thể khai báo nhiều loại thông tin với các kiểu dữ liệu khác nhau trong một biến. Cú pháp khai báo kiểu bản ghi:

Type <tên kiểu dữ liệu>

<thành phần 1> As <kiểu dữ liệu 1>

<thành phần 2> As <kiểu dữ liệu 2>

. . .

<thành phần n> As <kiểu dữ liệu n> End Type

Ví dụ:

Type HocSinh HoTen As String

NgaySinh As Date End Type

2.25.2. Khai báo biến bản ghi

Sau khi khai báo kiểu bản ghi, ta sử dụng kiểu dữ liệu đó để khai báo biến, mảng bản ghi giống như khai báo các biến thông thường khác. Cú pháp khai báo biến bản ghi:

Public/Private/Dim Tên_biến As Tên_kiểu_bản_ghi

Ví dụ:

Dim x As Hocsinh Public Ds( ) As Hocsinh

2.25.2. Sử dụng biến bản ghi

Chúng ta có thể truy cập các thành phần (trường) trong một biến bản ghi theo cú pháp: <biến> . <thành phần>

hoặc:

With <biến>

. <thành phần> End With

Ví dụ:

Dim Hs1, Hs2 As HocSinh

HS1. HoTen = “Nguyễn Văn Minh” Hs1. NgaySinh = #5/5/1985#

With HS2

. HoTen = “Trần Thắng”

. NgaySinh = #9/8/1985# End With

Chúng ta cũng có thể gán hai biến bản ghi cùng kiểu cho nhau.

Ví dụ:

HS2 = Hs1


2.26. Tệp tin

Tệp tin là một dãy các byte được tổ chức lưu trữ trên bộ nhớ ngoài. Khi ứng dụng truy cập đến tệp tin, nó xem các byte như là các kí tự, bản ghi, số nguyên, chuỗi v.v…Ta có thể gọi tệp tin là tệp

2.26.1. Phân loại tệp tin

Dựa trên phương pháp truy xuất tệp tin có thể phân tệp tin thành 3 loại: Tệp tin truy xuất tuần tự, tệp tin truy xuất ngẫu nhiên, tệp tin truy xuất nhị phân.

Tệp tin truy xuất tuần tự là tệp tin mà khi truy xuất ứng dụng sẽ truy xuất từ đầu tệp tin theo từng dòng văn bản.

Tệp tin truy xuất ngẫu nhiên là tệp tin mà khi truy xuất ứng dụng có thể truy xuất tại bất kỳ vị trí nào trong tệp tin mà không phải truy xuất tuần tự từ đầu tệp tin theo từng khối dữ liệu có kích thước cố định.

Tệp tin truy xuất nhị phân là tệp tin mà khi truy xuất ứng dụng có thể truy xuất tại bất kỳ vị trí nào trong tệp tin mà không phải truy xuất tuần tự từ đầu tệp tin theo từng byte dữ liệu. Tệp tin truy nhập nhị phân là một trường hợp riêng của tệp tin truy xuất ngẫu nhiên.

Trước khi truy xuất một tệp tin, ta cần khai báo một biến tệp tin có kiểu số nguyên, nó sẽ nhận một giá trị nguyên dương mà windows cung cấp khi tệp tin được mở, dùng để nhận diện tệp tin và làm việc với tệp tin. Số nguyên dương này được gọi là số hiệu tệp tin và không được trùng với số hiệu của một tệp tin đang được mở khác. Khai báo biến tệp tin theo cú pháp:

Public/Private/Dim Biến_tệp As Byte

Ví dụ:

Dim f As Byte

Ta có thể dùng hàm freefile để gán giá trị cho biến tệp tin tránh việc trùng số hiệu tệp tin.

f = freefile( )


2.26.2. Thủ tục truy xuất tệp tin

a) Mở tệp tin

Đối với tệp tin truy xuất tuần tự

Mở tệp tin để đọc: Open Tên_tệp For Input As #Biến_tệp

Mở tệp tin để ghi: Open Tên_tệp For Output As #Biến_tệp

Mở tệp tin để ghi bổ sung vào cuối:

Open Tên_tệp For Append As #Biến_tệp

Đối với tệp tin truy xuất ngẫu nhiên

Open Tên_tệp For Random As #Biến_tệp Len = Kích_thước_khối

Thông thường mỗi khối dữ liệu là một bản ghi. Vì vậy, để xác định kích thước khối dữ liệu mỗi lần đoc/ghi vào tệp ta dùng hàm Len(Biến_bản_ghi).

Ví dụ:

Open “ds.dat” For Random As #f Len = Len(x) ‟x là một biến kiểu bản ghi

Đối với tệp tin truy xuất nhị phân

Open Tên_tệp For Binary As #Biến_tệp

b) Ghi dữ liệu vào tệp tin

Đối với tệp tin truy xuất tuần tự

Print #Biến_tệp, Nội dung cần ghi vào tệp

Đối với tệp tin truy xuất ngẫu nhiên

Put #Biến_tệp, vị trí bản ghi, biến bản ghi

Đối với tệp tin truy xuất nhị phân

Put #Biến_tệp, vị trí byte dữ liệu, biến

c) Đọc dữ liệu từ tệp tin

Đối với tệp tin truy xuất tuần tự

Input(số ký tự cần đọc, biến tệp): Đọc một số ký tự tính từ vị trí hiện hành của con trỏ tệp và trả về các ký tự đọc được.

Line Input #Biến_tệp, biến: Đọc một dòng văn bản và lưu vào biến nhớ

Đối với tệp tin truy xuất ngẫu nhiên

Get #Biến_tệp, vị trí bản ghi, biến bản ghi : Đọc một bản ghi và lưu vào biến nhớ.

Đối với tệp tin truy xuất nhị phân

Get #Biến_tệp, vị trí byte dữ liệu, biến_nhớ: Đọc số byte dữ liệu bằng kích thước của biến_nhớ.

d) Đóng tệp tin

Close #Biến_tệp

Ví dụ: Viết chương trình mở tệp tin dsts.dat chứa danh sách thí sinh, trong đó thông tin về mỗi sinh viên gồm: Số báo danh, họ và tên, tuổi và điểm thi. Form Danh sách thí sinh có dạng:

Yêu cầu Lập trình cho các nút lệnh để duyệt danh sách bổ sung sửa xóa 1

Yêu cầu: Lập trình cho các nút lệnh để duyệt danh sách, bổ sung, sửa, xóa thông tin về thí sinh.

Bước 1. Thiết kế form bằng cách đưa vào các điều khiển: Label, TextBox, Commandbutton, sau đó xác lập vị trí, kích thước cho các điều khiển cho phù hợp.

Bước 2. Thiết lập giá trị cho một số thuộc tính cho các điều khiển theo bảng:


TT

Điều khiển

Thuộc tính

Giá trị

Ghi chú

1

Form

Name

Form1


Caption

Danh sách thí sinh

2

CommandButton

Name

cmdfirst


Caption

Về đầu

3

CommandButton

Name

cmdpre


Caption

Về trước

4

CommandButton

Name

cmdadd


Caption

Thêm

5

CommandButton

Name

cmdedit


Caption

Sửa

6

CommandButton

Name

cmddel


Caption

Xóa

7

CommandButton

Name

cmdnext


Caption

Về sau

8

CommandButton

Name

cmdlast


Caption

Về cuối

9

TextBox

Name

txtsbd


10

TextBox

Name

txtten


11

TextBox

Name

txttuoi


12

TextBox

Name

txtdiem


Có thể bạn quan tâm!

Xem toàn bộ 248 trang tài liệu này.

Label

Caption

Số báo danh


14

Label

Caption

Họ và tên


15

Label

Caption

Tuổi


16

Label

Caption

Điểm thi


13


Bước 3. Từ menu hệ thống chọn Project/Add Module để bổ sung vào Project hiện hành Module1, sau đó gò vào đó phần khai báo cấu trúc bản ghi thisinh như sau:

Type thisinh

sbd As String * 5 hoten As String * 30 tuoi As Byte

diem As Double End Type

Bước 4. Mở cửa sổ Code của Form1 và gò vào các dòng lệnh sau:

Dim n As Byte, i As Byte, f As Byte Dim x As thisinh

Private Sub ht(x As thisinh) txtsbd.Text = x.sbd txtten.Text = x.hoten txttuoi.Text = x.tuoi txtdiem.Text = x.diem

End Sub

„-----------------------------------------------------------------------------------------

Private Sub nhap(ByRef x As thisinh) x.sbd = txtsbd.Text

x.hoten = txtten.Text x.tuoi = Val(txttuoi.Text)

x.diem = Val(txtdiem.Text) End Sub

„-----------------------------------------------------------------------------------------

Private Sub cmdadd_Click()

If cmdadd.Caption = "Thªm" Then txtsbd.Text = ""

txtten.Text = "" txttuoi.Text = ""

txtdiem.Text = "": txtsbd.SetFocus cmdadd.Caption = "L•u"

Else

n = n + 1 Call nhap(x) i = n

Put #f, i, x cmdadd.Caption = "Thªm"

End If End Sub

„-----------------------------------------------------------------------------------------

Private Sub cmddel_Click() Dim g As Byte, j As Byte Dim traloi As Byte

traloi = MsgBox("Ban muon xoa ban ghi nay", vbYesNo + vbQuestion, "Xóa dữ liệu")

If traloi = 6 Then g = FreeFile()

Open "tam.dat" For Random As #g Len = Len(x) For j = 1 To i - 1

Get #f, j, x Put #g, j, x

Next

For j = i + 1 To n Get #f, j, x

Put #g, j, x Next

Close f Close g

Kill "dsts.dat"

Name "tam.dat" As "dsts.dat" n = n - 1

f = FreeFile()

Open "dsts.dat" For Random As #f Len = Len(x) If n > 0 Then

If i > n Then i = 1 Get #f, i, x

Call ht(x) End If

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 16/07/2022