Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Xin giúp đỡ về VBA Access !
#11
1. Gán data cho subform: Bạn sử dụng Link Master/Child field
- Theo file của bạn, cái subform SF_TimChiTietPhieuNhap sẽ link với Main form thông qua Master field là 1 textbox thể hiện [Mã Phiếu Nhập]. Vd textbox này đặt tên là txtMaPN
- Để tạo cái textbox trên main form cập nhật [Mã PN] khi click vào Phiếu nhập trong subform bạn dùng code sau: trong event Click của textbox [MaPN] trong subform (copy cho cả 3 subform)
Mã PHP:
Private Sub MaPN_Click()
   Me.Parent!txtMaPN Me.MaPN
End Sub 

2. Thay vì bạn thiết kế 3 subform trên main form, bạn có thể chỉ cần vẽ 1 subform sau đó ở mỗi sự kiện sẽ thay đổi Source Object của subform này tương ứng với 3 subform đã tạo. 
VD: vẽ 1 subform tổng đặt tên là sfmTong
- Khi Tìm theo Ngày tháng click thì
     Me.sfmTong.SourceObject = "SF_PNtheoNgayThang"
- Khi Tìm theo Nhân viên
     Me.sfmTong.SourceObject = "SF_PNtheoNV"

Một cách khác nữa là bạn chỉ cần thiết kế 1 subform, khi thay đổi điều kiện tìm kiếm thì thay đổi RecordSource của sbuform theo điều kiện tương ứng.
Form tìm kiếm kiểu này thì trên diễn đàn rất nhiều bài hay lắm đó. Bạn tìm và tham khảo đi. 
Gợi ý của tôi là bạn làm lại cái form tìm kiếm chỉ cần 1 subform và kết hợp với cái subform chi tiết là được rồi. Cách của bạn làm hiện tại hơi rườm rà đó. 
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 maidinhdan , vocan
#12
(10-07-16, 10:26 PM)ongke0711 Đã viết: 1. Gán data cho subform: Bạn sử dụng Link Master/Child field
- Theo file của bạn, cái subform SF_TimChiTietPhieuNhap sẽ link với Main form thông qua Master field là 1 textbox thể hiện [Mã Phiếu Nhập]. Vd textbox này đặt tên là txtMaPN
- Để tạo cái textbox trên main form cập nhật [Mã PN] khi click vào Phiếu nhập trong subform bạn dùng code sau: trong event Click của textbox [MaPN] trong subform (copy cho cả 3 subform)
Mã PHP:
Private Sub MaPN_Click()
   Me.Parent!txtMaPN Me.MaPN
End Sub 

2. Thay vì bạn thiết kế 3 subform trên main form, bạn có thể chỉ cần vẽ 1 subform sau đó ở mỗi sự kiện sẽ thay đổi Source Object của subform này tương ứng với 3 subform đã tạo. 
VD: vẽ 1 subform tổng đặt tên là sfmTong
- Khi Tìm theo Ngày tháng click thì
     Me.sfmTong.SourceObject = "SF_PNtheoNgayThang"
- Khi Tìm theo Nhân viên
     Me.sfmTong.SourceObject = "SF_PNtheoNV"

Một cách khác nữa là bạn chỉ cần thiết kế 1 subform, khi thay đổi điều kiện tìm kiếm thì thay đổi RecordSource của sbuform theo điều kiện tương ứng.
Form tìm kiếm kiểu này thì trên diễn đàn rất nhiều bài hay lắm đó. Bạn tìm và tham khảo đi. 
Gợi ý của tôi là bạn làm lại cái form tìm kiếm chỉ cần 1 subform và kết hợp với cái subform chi tiết là được rồi. Cách của bạn làm hiện tại hơi rườm rà đó. 

Cảm ơn bạn đã giúp đỡ !
Mình có tìm kiếm trên diễn đàn , và định làm theo hướng làm 1 subform có recordsoure thay đổi theo điều kiện  nhưng làm hoài vẫn bị báo lỗi hix
bạn xem giúp mình sai chỗ nào với , và cách viết như vậy có đúng không

https://drive.google.com/file/d/0BwUQpIi...sp=sharing

Mã:
Private Sub Timphieu_Click()

Dim strsql1, strsql2, strsql3 As String
Set strsql1 = "SELECT T_Nhap.MaPN, T_Nhap.NgayNhap, T_Nhap.MaNV, T_NV.TenNV FROM T_NV INNER JOIN T_Nhap ON T_NV.MaNV = T_Nhap.MaNV WHERE T_Nhap.MaNV='" & [Forms]![F_Quanlyphieunhap]![nvn] & "'"
Set strsql2 = "SELECT T_Nhap.MaPN, T_Nhap.NgayNhap, T_Nhap.MaNV, T_NV.TenNVFROM T_NV INNER JOIN T_Nhap ON T_NV.MaNV = T_Nhap.MaNV WHERE T_Nhap.NgayNhap>='" & [Forms]![F_Quanlyphieunhap]![tn] & "' And (T_Nhap.NgayNhap)<='" & [Forms]![F_Quanlyphieunhap]![dn] & "'"
''Set strsql3 = "SELECT T_Nhap.MaPN, T_Nhap.NgayNhap, T_Nhap.MaNV, T_NV.TenNV FROM T_NV INNER JOIN T_Nhap ON T_NV.MaNV = T_Nhap.MaNV WHERE (T_Nhap.MaPN)='" & [Forms]![F_Quanlyphieunhap]![nvn] & "' AND T_Nhap.NgayNhap)>='" & [Forms]![F_Quanlyphieunhap]![tn] & "' And T_Nhap.NgayNhap<='" & [Forms]![F_Quanlyphieunhap]![dn] & "'"

If TK = "Nhan vien Nhap" Then
Me.SF_timkiemphieunhap.Form.RecordSource = strsql1
Else
If TK = "Ngay Thang" Then
Me.SF_timkiemphieunhap.Form.RecordSource = strsql2
Else
If TK = "NV Nhap-Ngay Thang" Then
Me.SF_timkiemphieunhap.Form.RecordSource = strsql3
End If
End If
End If
Me.SF_timkiemphieunhap.Form.Requery

End Sub

Thứ 2 , làm sao để hiện thị được chi tiết phiếu nhập khi mình ấn bên SF_timkiemphieunhap , hoặc sự kiện click một nút thì bên SF_chitietphieunhap se hiện thị thông tin tại vi trị con tro ở SF_timkiemphieunhap
Cảm ơn nhiều!
Chữ ký của vocan vocan,gia nhập Thủ Thuật Access từ 14-05 -16.
Reply
Những người đã cảm ơn
#13
1. Câu lệnh SQL tìm kiếm của bạn sai ở từ "Set": Set strsql11=...
- "SET" chi dùng khi gán biến cho 1 đối tượng (Object). Vd: Set db = CurrentDb.
- Câu lệnh SQL cho 3 trường hợp này giống nhau gần hết chỉ khác phần điều kiện WHERE. Do vậy để rút gọn thì bạn chỉ cần thêm 1 biến điều kiện (vd: Dim dieukienloc as String) và thay đổi nó tùy theo từng trường hợp tìm kiếm.
- Bạn chú ý chỗ phần bẫy lỗi khi textbox [nhân viên nhập] hoặc textbox [Từ ngày] [Đến ngày]. Nếu các textbox này để trống sẽ báo lỗi câu lệnh SQL khi bấm [Tìm kiếm].

Mã PHP:
Private Sub Timphieu_Click()

   Dim strSQL As Stringdieukienloc As String
   Select 
Case Me.TK
       Case 1 
'Tim theo nhan vien nhap'
           dieukienloc "T_Nhap.[MaNV]='" Me.nvn "'"
       Case 2 'Tim theo ngay thang'
           dieukienloc "[NgayNhap] BETWEEN #" Me.tn "# AND #" Me.dn "#"
       Case 3 ' Tim theo NV + Ngay thang'
           If IsNull(Me.tn) Or Me.tn "" Or IsNull(Me.dn) Or Me.dn "" Then
               MsgBox 
"Ban phai nhap thong tin [Tu ngay], [Den ngay]"vbCritical"Thông báo"
               Me.tn.SetFocus
               Exit Sub
           End 
If
           dieukienloc "T_Nhap.[MaNV]='" Me.nvn "' AND [NgayNhap] BETWEEN #" Me.tn "# AND #" Me.dn "#"
   End Select
   
   strSQL 
"SELECT T_Nhap.*, T_NV.TenNV " _
           
"FROM T_NV INNER JOIN T_Nhap ON T_NV.MaNV = T_Nhap.MaNV " _
           
"WHERE " dieukienloc

   Me
.SF_timkiemphieunhap.Form.RecordSource strSQL

End Sub 

- Bạn phải ngâm cứu lại cách sử dụng combobox cơ bản (về cách tạo Row Source dạng Value list, Table/Query). Nó rất quan trọng vì form sử dụng nó rất nhiều.
[Hình: combo.png]


2. Làm sao hiển thị chi tiết Phiếu Nhập khi click bên subform tìm kiếm: Bạn không đọc kỹ bài post trước, tôi đã hướng dẫn là bạn ngâm cứu cách dùng link master/child field giữa Main form và Sub form.

File demo của bạn đây: http://www.mediafire.com/download/nxxonv..._DV1.accdb
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 vocan , maidinhdan


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Tránh xung đột dữ liệu trong access quocdung9999 16 1,689 23-11-16, 11:13 AM
Bài mới nhất: quocdung9999
  Summary bằng VBA trong MS Access. MinhnHang 6 316 08-11-16, 08:36 AM
Bài mới nhất: MinhnHang
  Cần giúp đỡ chuyển số có thập phân ra chữ ledangvan 12 632 07-11-16, 03:56 PM
Bài mới nhất: maidinhdan
  [Hỏi] Số Thứ Tự Theo Nhóm Hàng Hóa Trong Access pherotao 2 144 02-11-16, 03:05 PM
Bài mới nhất: pherotao
  [Help] Truy vấn ngày phát sinh gần nhất trong access cuuvinh 4 225 21-09-16, 05:01 PM
Bài mới nhất: cuuvinh

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ơ