Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Phương thức findfirst
#41
3/Vấn đề thứ 3:
Bạn chỉ cấn xóa điều kiện sau ở thủ tục LoadData:
Mã:
If .Recordset.BOF And .Recordset.EOF Then Exit Sub

Việc  "Đưa cả loaddata và savedata lên module" thì mình thấy không khả thi vì rất khó để dùng chung cho tất cả các form, hơn nữa code cũng không gọn hơn được bao nhiêu (Đối với ADO hay .Net thì khác, ta có thể xây dựng module hoặc Class để kết nối dữ liệu...)

Demo theo yêu cầu 014  :
FindRecord7.rar
Chữ ký của MTNQ Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn
#42
(17-06-18, 03:11 PM)MTNQ Đã viết: ...
Việc  "Đưa cả loaddata và savedata lên module" thì mình thấy không khả thi vì rất khó để dùng chung cho tất cả các form, hơn nữa code cũng không gọn hơn được bao nhiêu (Đối với ADO hay .Net thì khác, ta có thể xây dựng module hoặc Class để kết nối dữ liệu...)

Tôi thấy bạn MTNQ đã có dùng cái code ListAllControls thì cũng theo cách đó biến tấu chút thành cái hàm LoadData() cho Unbound Form luôn. Tôi dùng Recordset AddNew, Edit để xử lý chứ chưa ngâm cứu dùng câu lệnh SQL để thêm mới, sửa.
Tôi hay dùng code này để Load Data cho unbound form (trong hàm tôi đặt tên là GetRecord()), cũng như Edit, Save. Có một qui ước là phải đặt tên các Control trong Form theo kiểu: txt (chk, cbo, img) + Tên Field.

- Hàm load dữ liệu cho Form:

Mã PHP:
Function GetRecord(rs As DAO.Recordsetfrm As Form)
   Dim fld As Field
   Dim ctl 
As control
   For Each fld In rs
.Fields
       For Each ctl In frm
.Controls
           If ctl
.Name "txt" fld.Name Or ctl.Name "cbo" fld.Name Or ctl.Name "chk" fld.Name Then
               ctl 
rs.Fields("" fld.Name "").Value
           ElseIf ctl
.Name "img" fld.Name Then
               On Error Resume Next
               ctl
.Picture CStr(rs.Fields("" fld.Name "").Value)
           End If
       Next
   Next
End 
Function 

- Lưu record mới: (nếu là chỉnh sửa thì đổi thành rs.Edit)

Mã PHP:
Function AddRecord(rs As DAO.Recordsetfrm As Form)
   Dim fld As Field
   Dim ctl 
As control
   rs
.AddNew
   For Each fld In rs
.Fields
       For Each ctl In frm
.Controls
           If ctl
.Name "txt" fld.Name Or ctl.Name "cbo" fld.Name Or ctl.Name "chk" fld.Name Then
               rs
.Fields("" fld.Name "").Value ctl
           End 
If
       Next
   Next
   rs
.Update
End 
Function 
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] Làm sao ghi giờ khi mở form và nút lệnh thực hiện ghi giờ khi kết thúc form tronghieu9792 2 1,043 25-01-16, 11:30 AM
Bài mới nhất: tronghieu9792
  [Hỏi] [Hep]honglv157_Tạo công thức tính trung bình của các tiêu chí đánh giá GV maidinhdan 14 3,214 15-07-15, 09:51 AM
Bài mới nhất: maidinhdan
  [Hỏi] Có ai mắc lôi tìm kiếm theo điều kiện trên office 2007 không thực hiện lệnh applyfite quanghoasla 0 661 29-11-14, 11:30 PM
Bài mới nhất: quanghoasla
  [Help] Nhờ hướng dẫn công thức trên Forms DoquangLam 3 1,285 08-04-14, 04:55 PM
Bài mới nhất: DoquangLam
  [Hỏi] Gọi thực hiện 1 Private Sub trên Form này từ Form khác. Minh Tiên 10 3,226 25-01-14, 04:54 PM
Bài mới nhất: Minh Tiên

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line