Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Về sự khác nhau trong câu lệnh nạp bản ghi cho Unbound form
#1
Nhờ các anh em trong diễn đàn giải thích giùm về cách viết câu lệnh nạp record từ table cho Unbound form. Mình thấy có 2 cách nhưng không biết nó khác nhau như thế nào? điểm tốt/ xấu của mỗi cách viết? (Do tự học lung tung nên có những cái cơ bản mình chưa thông  007 ).
Lấy record: rs.Fields("Tên Field").Value  VS  rs!Tên Field (cách này hay sử dụng)

Ví dụ:
Public Sub NapBanGhi()
    Dim sSQL As String
    If IsNull(Me.OpenArgs) = False Then
        sSQL = "SELECT * FROM tblBangCap WHERE [Ma] = " & Me.OpenArgs
        Set db = CurrentDb
        Set rs = db.OpenRecordset(sSQL, dbOpenDynaset)
......................................................................
Cách 1:        
        Me.txtMa = rs.Fields("Ma").Value
        Me.txtTen = rs.Fields("Ten").Value
        Me.txtGhiChu = rs.Fields("GhiChu").Value
......................................................................
Cách 2:
        Me.txtMa = rs!Ma
        Me.txtTen = rs!Ten
        Me.txtGhiChu = rs!GhiChu
.....................................................................
        
rs.Close
        db.Close
        Set rs = Nothing
        Set db = Nothing
    End If
End Sub
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
#2
(22-12-15, 08:44 PM)ongke0711 Đã viết: Nhờ các anh em trong diễn đàn giải thích giùm về cách viết câu lệnh nạp record từ table cho Unbound form. Mình thấy có 2 cách nhưng không biết nó khác nhau như thế nào? điểm tốt/ xấu của mỗi cách viết? (Do tự học lung tung nên có những cái cơ bản mình chưa thông  007 ).
Lấy record: rs.Fields("Tên Field").Value  VS  rs!Tên Field (cách này hay sử dụng)

Ví dụ:
Public Sub NapBanGhi()
    Dim sSQL As String
    If IsNull(Me.OpenArgs) = False Then
        sSQL = "SELECT * FROM tblBangCap WHERE [Ma] = " & Me.OpenArgs
        Set db = CurrentDb
        Set rs = db.OpenRecordset(sSQL, dbOpenDynaset)
......................................................................
Cách 1:        
        Me.txtMa = rs.Fields("Ma").Value
        Me.txtTen = rs.Fields("Ten").Value
        Me.txtGhiChu = rs.Fields("GhiChu").Value
......................................................................
Cách 2:
        Me.txtMa = rs!Ma
        Me.txtTen = rs!Ten
        Me.txtGhiChu = rs!GhiChu
.....................................................................
        
rs.Close
        db.Close
        Set rs = Nothing
        Set db = Nothing
    End If
End Sub

Không khác nhau đâu. Mặc định không viết được Access hiểu là "một chuỗi" tương ứng là .Value ( kể cả Me.txtMa cũng cần thêm .Value <=> Me.txtMa..Value)

Đây là kiểu khai báo na ná khai báo tường minh một biến thôi.
Tốt nhất chúng ta nên sử  dụng đầy đủ cú pháp là hay nhất, vì sao phải làm như vậy: Để tránh các phiên bản Access kế tiếp ra đời nếu có thay đổi về cấu trúc nó vẫn đọc được các hàm lệnh ta thao tác.
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn ongke0711 , Minh Tiên , Noname
#3
nếu form cố định,ít thay đổi thì bạn có thể dùng rs(0),rs(1)...
sử dụng cách này chạy nhanh nhất!
Chữ ký của hieuvn Xin chào! Mình là hieuvn, thành viên của Thủ Thuật Access tham gia ngày Oct 2010.
Reply
Những người đã cảm ơn Noname , ongke0711 , maidinhdan
#4
(24-12-15, 11:57 AM)hieuvn Đã viết: nếu form cố định,ít thay đổi thì bạn có thể dùng rs(0),rs(1)...
sử dụng cách này chạy nhanh nhất!

Ý bạn hieuvn là rs.Fields(0),.. phải không? Cảm ơn! ý kiến của bạn cũng đúng mục tiêu của mình là cho nhanh và nhẹ... 007  
Mình đang dùng cách kiểm tra các control trên form có thỏa đk không rồi tự động gán record cho control đó (textbox). Khi chạy form sẽ search hết các controls trên form để tìm ra textbox cần gán nên chưa biết nó có chậm lắm không? Form của mình chỉ có 3 field nên không cảm nhận nhanh chậm hehe.
- Cách này mình làm để đỡ mất công khi: Recordset có thêm Field, Form có thêm textbox thì khỏi phải vô code add thêm dòng "Me.txtFieldMoi.Value = rs.Fields("FieldMoi").Value"
- Nếu form có nhiều textbox thì cũng đỡ phải add cả chục dòng code trên. 
- Cách này bắt buộc phải đặt Textbox.Name theo qui ước: "txt" + tên Field.
- Nhược điểm là 2 vòng lặp For..Next chắc sẽ làm chậm đi chút 007 .

Mã PHP:
Public Sub GetRecord(db As DAO.Databasers 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 Then
               ctl
.Value rs.Fields("" fld.Name "").Value
           End 
If
       Next
   Next
   
   rs
.Close
   db
.Close
   Set rs 
Nothing
   Set db 
Nothing
End Sub 
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
#5
ko hay
Chữ ký của tt1212 Present Nhận viết phần mềm, hỗ trợ viết phần mềm, hợp tác viết phần mềm trên nên Microsoft Access mọi phiên bản Liên hệ: Mr Đức -989276236. Email: Tantriviet.vnn@gmail.com website:http://www.tantrivietsoft.com/
Reply
Những người đã cảm ơn
#6
Bạn tt1212 có cách hay thì chia sẽ để học hỏi nhé.
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
  [Hỏi] Việc set thuộc tính OnClick trong Code toancvp 5 228 31-10-16, 10:14 AM
Bài mới nhất: toancvp
  [Help] Thiết kế form nhập và lưu trữ dữ liệu theo yêu cầu brianhuynh 16 621 20-10-16, 10:54 PM
Bài mới nhất: brianhuynh
  [Hỏi] Cách loại bỏ icon Filter trên Datasheet Form có nguồn là Query. toancvp 2 97 19-10-16, 08:53 PM
Bài mới nhất: toancvp
  [Help] Nhờ tạo form lưu hóa đơn nhập, hóa đơn xuất, hàng nhập hàng xuất không cần tính tồn laxx_xxal 1 127 22-09-16, 02:35 PM
Bài mới nhất: Nguyen Hoang Diep
  [Hỏi] Cách đưa chức năng compact & repair vào form toancvp 6 486 24-08-16, 12:19 AM
Bài mới nhất: paulsteigel

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ơ