matran241091 > 03-05-20, 12:52 PM
Xuân Thanh > 03-05-20, 01:16 PM
(03-05-20, 12:52 PM)matran241091 Đã viết: Mình đang có 1 cơ sở dữ liệu về thông tin nhân viên, trong đó có 1 trường là MASONV
bây giờ mình muốn lập 1 form (hoặc report) trong đó có MASONV (có thể đánh tay vào )
khi mình đánh MASONV vào thì thông tin của form sẽ thay đổi
Ai rành chỉ mình với
thuyyeu99 > 03-05-20, 01:33 PM
matran241091 > 04-05-20, 11:12 AM
(03-05-20, 01:16 PM)Xuân Thanh Đã viết:Mình mới tập sử dụng access , bạn chỉ kĩ hơn cho mình được không(03-05-20, 12:52 PM)matran241091 Đã viết: Mình đang có 1 cơ sở dữ liệu về thông tin nhân viên, trong đó có 1 trường là MASONV
bây giờ mình muốn lập 1 form (hoặc report) trong đó có MASONV (có thể đánh tay vào )
khi mình đánh MASONV vào thì thông tin của form sẽ thay đổi
Ai rành chỉ mình với
Dùng hàm Dloookup mà làm
Ví dụ : txtHoten = Dlookup("Hoten","tblNhanvien", "MasoNV = txtMaso")
txtHoten và txtMaso là tên các textbox trên form. MasoNV và Hoten là các trường của tblNhanvien
tranthanhan1962 > 04-05-20, 06:00 PM
yamakashi2003 > 05-05-20, 10:43 AM
(04-05-20, 06:00 PM)tranthanhan1962 Đã viết: Cách dễ nhất đây. Cũng có thể lấy form nhập dữ liệu nhân viên sử dụng cũng được. Không cần phải tạo thêm query hoặc sub form gì cả. Nếu rảnh thì copy form nhập liệu thành một form khác, form này chỉ để xem mà không cho nhập, sửa.Set rs = Me.Recordset.Clone
Trên form tạo thêm một textbox đặt tên là TIMMASONV hoặc tên gì đó cũng được , quan trọng là có tên để viết code.
Tạo đoạn code như sau:
Private Sub TIMMASONV_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[MASONV] = '" & Me![TIMMASONV] & "'"
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
Khi gõ đúng MASONV tự động form sẽ chạy đến record nhân viên đó. Để dễ dàng hơn có thể thay textbox bằng combobox dùng danh sách combobox để chọn
tranthanhan1962 > 05-05-20, 11:29 AM
(05-05-20, 10:43 AM)yamakashi2003 Đã viết: Set rs = Me.Recordset.CloneThay vì khai báo hàng loạt các kiểu biến, CSDL, bảng...rồi gán biến là table cụ thể, với lệnh Dim rs As Object và Set rs = Me.Recordset.Clone bạn gán biến rs làm trực tiếp với table liên kết là record source của form.
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
Bac ơi cho em hỏi ở 2 dòng code này,
.clone, .EOF, .Bookmark có nghĩa gì ạ
Em xin cảm ơn
yamakashi2003 > 05-05-20, 11:52 AM
(05-05-20, 11:29 AM)tranthanhan1962 Đã viết:Em cám ơn bác(05-05-20, 10:43 AM)yamakashi2003 Đã viết: Set rs = Me.Recordset.CloneThay vì khai báo hàng loạt các kiểu biến, CSDL, bảng...rồi gán biến là table cụ thể, với lệnh Dim rs As Object và Set rs = Me.Recordset.Clone bạn gán biến rs làm trực tiếp với table liên kết là record source của form.
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
Bac ơi cho em hỏi ở 2 dòng code này,
.clone, .EOF, .Bookmark có nghĩa gì ạ
Em xin cảm ơn
Đã set biến rs là bảng làm recordsource của form. Thì:
rs.BOF: record đầu tiên của table.
Rs.EOF: record cuối cùng của table
Bookmark: Đánh dấu, rs.Bookmark => record trên table được đánh dấu. Me.Bookmark => record trên form được đanh dấu
Có thể dịch như thế này.
Private Sub TIMMASONV_AfterUpdate() <thủ tục riêng của form textbox TIMMASONV sau khi thay đổi>
Dim rs As Object <đặt biến rs có kiễu đối tượng>
Set rs = Me.Recordset.Clone <gán biến rs là bảng làm recordsource của form>
rs.FindFirst "[MASONV] = '" & Me![TIMMASONV] & "'" <tìm trong rs record có giá trị của field MASONV bằng với giá trị textbox TIMMASONV trên form>
If Not rs.EOF Then Me.Bookmark = rs.Bookmark <tìm liên tục trên bảng cho đến record cuối cùng và nếu tìm thấy thì đánh dấu vị trí của nó, và đó cũng là vị trí record của form>
End Sub
Vì vậy có thể thay thế textbox bằng combobox để khi bấm vào danh sách nó sẽ tìm ngay tránh việc gõ sai mã nó sẽ không tìm được.
tranthanhan1962 > 05-05-20, 12:07 PM
(05-05-20, 11:52 AM)yamakashi2003 Đã viết: Em cám ơn bácDịch vậy cũng đúng, nhưng mà chính xác là nó chưa phải thì cứ tìm chừng nào phải thì nghỉ. Ngôn ngữ máy mà. Đoạn mà này khi biên dịch cho CPU chỉ còn là 01,10...
Em lại dịch ra câu: If Not rs.EOF Then
Ra là: Nếu không phải record cuối cùng thì ............. nên chằng hiểu gì
ongke0711 > 05-05-20, 12:13 PM
(05-05-20, 11:52 AM)yamakashi2003 Đã viết:Trích dẫn:Có thể dịch như thế này.
Private Sub TIMMASONV_AfterUpdate() <thủ tục riêng của form textbox TIMMASONV sau khi thay đổi>
Dim rs As Object <đặt biến rs có kiễu đối tượng>
Set rs = Me.Recordset.Clone <gán biến rs là bảng làm recordsource của form>
rs.FindFirst "[MASONV] = '" & Me![TIMMASONV] & "'" <tìm trong rs record có giá trị của field MASONV bằng với giá trị textbox TIMMASONV trên form>
If Not rs.EOF Then Me.Bookmark = rs.Bookmark <tìm liên tục trên bảng cho đến record cuối cùng và nếu tìm thấy thì đánh dấu vị trí của nó, và đó cũng là vị trí record của form>
End Sub
Em lại dịch ra câu: If Not rs.EOF Then
Ra là: Nếu không phải record cuối cùng thì ............. nên chằng hiểu gì