-
RE: Xin giúp đỡ về VBA Access !
ongke0711 > 10-07-16, 10:26 PM
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à đó. -
RE: Xin giúp đỡ về VBA Access !
vocan > 11-07-16, 04:55 PM
(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! -
RE: Xin giúp đỡ về VBA Access !
ongke0711 > 11-07-16, 10:45 PM
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 String, dieukienloc 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.
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