dinh_trong_hoa > 08-07-14, 09:22 PM
paulsteigel > 09-07-14, 09:04 AM
dinh_trong_hoa > 09-07-14, 06:42 PM
(09-07-14, 09:04 AM)paulsteigel Đã viết: Giải thích một cách nôm na thì có thể hiểu cách tham chiếu đến đối tượng trên một Form/ Report như sau:
Form/Report là một loại đối tượng trong đó nó có chứa các điều khiển. Quy tắc chung trong cách tham chiếu là
[Tên Form/Report][.!][Đối tượng]
Quy tắc này có ý nghĩa là
Gọi [Form] + [Tên Đối tượng con]
Giống như dạng tìm địa chỉ thì phải có tên phố/ Ngõ/ Ngách....
Tùy thuộc vào việc ta đứng ở đâu để gọi tham chiếu, nhưng cú pháp chung đều có dạng như vậy. Khi đang xét thủ tục trong nội bộ Form/Report, ta có thể sử dụng thêm cú pháp.
Ví dụ có một Textbox là txtMahang, bạn có thể sử dụng cách tham chiếu:
Trường hợp này ta có thể sử dụng như sau:
Me.Controls("txtMahang") Hoặc Me.txtMahang hoặc gọi trực tiếp txtMahang
[Me] chính là từ khóa để trỏ về đối tượng Form/Report bạn đang làm việc
Nhưng khi bạn tham chiếu từ ngoài, cú pháp bắt buộc phải tuân thủ cấu trúc bôi đậm ở trên
Giả sử Form/Report có tên là FrmInput, bạn có thể sử dụng các dạng sau:
Forms("frmInput").Controls("txtMahang")
FrmInput!txtMahang
....
Nhưng không thể dùng Me.Control.... được vì bạn đã đứng ở ngoài form.
Một lưu ý, là khi bạn tham chiếu như vậy, bắt buộc Form/Report phải đã được tải vào bộ nhớ nếu không sẽ có lỗi xảy ra (trước đó bạn phải thực hiện việc tải Form/Report đó rồi).
Bình thêm:
Khi lập trình với Access, tôi thường tránh tham chiếu dạng này vì rất dễ xảy ra lỗi và việc truy tìm lỗi thường khó khăn. Nếu bắt buộc phải có việc chuyển số liệu giữa các form, tôi thường sử dụng một biến toàn cục hoặc lưu kết quả vào CSDL để truy cập lại.
Điều này có lợi khi bạn phải thay đổi tên Form/Report vì không phải kiểm tra lại tham chiếu bạn đã làm trước đó trong Code.
Riêng đối với tham chiếu nội bộ trong form thì tôi chỉ sử dụng [Me] khi phải thao tác trực tiếp với thuộc tính của Form/Report, ví dụ:
With Me
.InsideHeight=....
.Caption=....
End With
Hoặc khi sử dụng để duyệt qua các điều khiển trên form để thực hiện tác vụ nào đó, chẳng hạn
With Me
For i=1 to .Controls.Count
......
Next i
End With
Còn khi tham chiếu đến điều khiển thì đơn giản là gọi tên trực tiếp của đối tượng đó.
Xin thưa thớt vài câu như vậy
paulsteigel > 09-07-14, 07:03 PM
Form1.Ctrl1.Text = "Hello"
Form1!Ctrl1.Text = "Hello"
Form1.Controls.Item("Ctrl1").Text = "Hello"
Form1!Ctrl1.Text = "Hello"
Form1.Ctrl1.Text = "Hello"