huuduy.duy > 17-08-16, 11:19 PM
Private Sub cmdXuatExcel_Click()
DoCmd.OutputTo acOutputForm, "sfrmtimkiem", acFormatXLS, , True
End Sub
maidinhdan > 17-08-16, 11:22 PM
(15-08-16, 11:26 PM)huuduy.duy Đã viết: Chào các anh chị
Trên diễn đàn em có tìm được code tìm gợi ý nội dung cần tìm trong combobox, về áp dụng.
Nhưng cho em hỏi có cách nào khi click vô combobox thì sẽ hiện ra danh sách nội dung không (hiện tại phải gõ vài từ thì nó mới hiện ra) ý của em muốn là khi click vào thì sẽ hiện ra danh sách và gõ ký tự gợi ý sẽ hiện ra nội dung gần đúng.
đồng thời xử lý lỗi khi chọn sai nội dung và chọn lại nội dung khác, hoặc hủy bỏ
Tải file
Trân trọng cảm ơn
Private Sub cboMaNV_KeyPress(KeyAscii As Integer)
Me.cboMaNV.Dropdown
End Sub
huuduy.duy > 19-08-16, 12:07 AM
(17-08-16, 11:19 PM)huuduy.duy Đã viết: Cám ơn anh rất nhiều.
Anh cho em hỏi thêm, em muốn xuất dữ liệu lọc được ở subform như ở bài #8 sang excel bằng lệnh sau, nhưng kết quả không là nó ra toàn bộ record của subform chứ không như kết quả sau khi lọc, và bị lỗi Font
Nhờ anh xem giúp em. Trân trọng cảm ơn anhMã PHP:Private Sub cmdXuatExcel_Click()
DoCmd.OutputTo acOutputForm, "sfrmtimkiem", acFormatXLS, , True
End Sub
Public Function Send2Excel(frm As Form, Optional strSheetName As String)
' frm is the name of the form you want to send to Excel
' strSheetName is the name of the sheet you want to name it to
Dim rst As DAO.Recordset
Dim ApXL As Object
Dim xlWBk As Object
Dim xlWSh As Object
Dim fld As DAO.Field
Const xlCenter As Long = -4108
Const xlBottom As Long = -4107
On Error GoTo err_handler
Set rst = frm.RecordsetClone
Set ApXL = CreateObject("Excel.Application")
Set xlWBk = ApXL.Workbooks.Add
ApXL.Visible = True
Set xlWSh = xlWBk.Worksheets("Sheet1")
If Len(strSheetName) > 0 Then
xlWSh.Name = Left(strSheetName, 34)
End If
xlWSh.Activate
xlWSh.Range("A1").Select
For Each fld In rst.Fields
ApXL.ActiveCell = fld.Name
ApXL.ActiveCell.Offset(0, 1).Select
Next
rst.MoveFirst
xlWSh.Range("A2").CopyFromRecordset rst
xlWSh.Range("1:1").Select
' This is included to show some of what you can do about formatting.
'You can comment out or delete
' any of this below that you don't want to
'use in your own export.
With ApXL.Selection.Font
.Name = "Arial"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
End With
ApXL.Selection.Font.Bold = True
With ApXL.Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With
' selects all of the cells
ApXL.ActiveSheet.Cells.Select
' does the "autofit" for all columns
ApXL.ActiveSheet.Cells.EntireColumn.AutoFit
' selects the first cell to unselect all cells
xlWSh.Range("A1").Select
rst.Close
Set rst = Nothing
Exit Function
err_handler:
DoCmd.SetWarnings True
MsgBox Err.Description, vbExclamation, Err.Number
Exit Function
End Function
Call Send2Excel(Me, "SheetNameHereInQuotes")
Call Send2Excel(Forms!YourFormNameHere, "SheetNameInQuotes")
'if code is on the main form:
Call Send2Excel(Me.SubformControl.Form, "SheetNameInQuotes")
'if code is on a completely different form:
Call Send2Excel(Forms!YourMainFormName.SubformControl.Form, "SheetNameInQuotes")
huuduy.duy > 20-08-16, 06:52 AM
(17-08-16, 12:43 AM)ongke0711 Đã viết:Cho em hỏi, em muốn thêm chữ Tất cả trong cboBophan để tìm tất cả các bộ phận kết hợp với các điều kiện còn lại thì làm như thế nào. (Không bấm delete để xóa nội dung cboBophan)(16-08-16, 09:03 PM)huuduy.duy Đã viết: 1 / Anh cho em hỏi, theo như file này thì tổng số Record bảng việc riêng là 11, trong đó
Tháng 5 có 1 trường hợp
Tháng 6 có 5 trường hợp
Tháng 7 có 5 trường hợp
Nhưng khi lọc theo cboThang, thì trường hợp chọn tháng 6 để lọc kết quả chỉ ra có 4 record, thiếu 1 trường hợp
Như vậy thì bị lỗi gì vậy anh, nhờ anh xem giúp.
2/ Trường em muốn tìm nhanh trong combobox khi gõ 1 vài ký gợi ý, thì làm như thế nào vậy anh( ở bài #6 ).
Nhờ anh giúp đỡ
Trân trọng cảm ơn
1. Lỗi Record không hiển thị của tháng 6 là do trường [LyDo] của record đó đang là rỗng => câu lệnh của điều kiện lọc hiện tại sai, chưa tính đến trường hợp trường dữ liệu là NULL. Lỗi này cũng xảy ra cho các record khác nếu các trường [HoTen], [BoPhan]... có giá trị NULL.
Bạn sửa code của Sub Loc() như bên dưới.
Mã PHP:Sub Loc()
Dim dieukienloc As String, strSQL As String
Dim lngLen As Long
Const conJetDate = "\#mm\/dd\/yyyy\#"
If Not IsNull(Me.txtHoTen) Then
dieukienloc = dieukienloc & "[tbNhanvien.Tennhanvien] LIKE '*" & Me.txtHoTen & "*' AND "
End If
If Not IsNull(Me.cboBoPhan) Then
dieukienloc = dieukienloc & "[tbMaBophan.TenBophan] LIKE '" & Me.cboBoPhan & "' AND "
End If
If Not IsNull(Me.txtLyDo) Then
dieukienloc = dieukienloc & "[LyDo] LIKE '*" & Me.txtLyDo & "*' AND "
End If
Select Case Me.fraThoiGian.Value
Case 1
If Not IsNull(Me.cboThang) Then
dieukienloc = dieukienloc & "Month([BatDau]) = " & Me.cboThang & " AND "
End If
Case 2
If Not IsNull(Me.cboQuy) Then
dieukienloc = dieukienloc & "(Month([BatDau])+2)\3 = " & Me.cboQuy & " AND "
End If
Case 3
If Not IsNull(Me.txtTuNgay) Then
dieukienloc = dieukienloc & "[BatDau] >= " & Format(Me.txtTuNgay, conJetDate) & " AND "
End If
If Not IsNull(Me.txtDenNgay) Then
dieukienloc = dieukienloc & "[BatDau] < " & Format(Me.txtDenNgay, conJetDate) & " AND "
End If
End Select
lngLen = Len(dieukienloc) - 5
If lngLen <= 0 Then
MsgBox "Khong co dieu kien loc du lieu", vbInformation, "Thông báo"
strSQL = "SELECT B_ViecRieng.Manhanvien, tbNhanvien.Tennhanvien, tbMabophan.TenBophan, B_ViecRieng.SoNgayNghi, B_ViecRieng.BatDau, B_ViecRieng.KetThuc, B_ViecRieng.LyDo, B_ViecRieng.MaNhanVienDuyet1, B_ViecRieng.MaNhanVienDuyet2, B_ViecRieng.MaNhanVienDuyet3, B_ViecRieng.GhiChu " & _
"FROM (tbMabophan INNER JOIN tbNhanvien ON tbMabophan.MaBophan = tbNhanvien.MaBophan) INNER JOIN B_ViecRieng ON tbNhanvien.MaNhanvien = B_ViecRieng.Manhanvien"
Me.sfrmTimKiem.Form.RecordSource = strSQL
Exit Sub
Else
dieukienloc = Left$(dieukienloc, lngLen)
strSQL = "SELECT B_ViecRieng.Manhanvien, tbNhanvien.Tennhanvien, tbMabophan.TenBophan, B_ViecRieng.SoNgayNghi, B_ViecRieng.BatDau, B_ViecRieng.KetThuc, B_ViecRieng.LyDo, B_ViecRieng.MaNhanVienDuyet1, B_ViecRieng.MaNhanVienDuyet2, B_ViecRieng.MaNhanVienDuyet3, B_ViecRieng.GhiChu " & _
"FROM (tbMabophan INNER JOIN tbNhanvien ON tbMabophan.MaBophan = tbNhanvien.MaBophan) INNER JOIN B_ViecRieng ON tbNhanvien.MaNhanvien = B_ViecRieng.Manhanvien " & _
"WHERE " & dieukienloc
Me.sfrmTimKiem.Form.RecordSource = strSQL
End If
End Sub
2. Trường hợp vừa gõ tìm kiếm trực tiếp trong combobox, vừa click để hiển thị bình thường thì tôi chưa làm được.
Private Sub cboBoPhan_DblClick(Cancel As Integer)
Me.cboBoPhan = Null
Call Loc
End Sub
ongke0711 > 20-08-16, 10:07 AM
SELECT tbMabophan.TenBophan, tbMabophan.MaBophan
FROM tbMabophan
UNION
SELECT '<Tất cả>','ALL' FROM tbMabophan;
huuduy.duy > 20-08-16, 10:25 AM
(20-08-16, 10:07 AM)ongke0711 Đã viết: Bạn dùng Union query cho cboBoPhan.
Mã PHP:SELECT tbMabophan.TenBophan, tbMabophan.MaBophan
FROM tbMabophan
UNION
SELECT '<Tất cả>','ALL' FROM tbMabophan;
------------
If Not IsNull(Me.cboBoPhan) Then
dieukienloc = dieukienloc & "[tbMaBophan.TenBophan] LIKE '" & Me.cboBoPhan & "' AND "
End If
------------
If Not IsNull(Me.cboBoPhan) Then
dieukienloc = dieukienloc & "[tbMaBophan.TenBophan] LIKE '" & Me.cboBoPhan & "' AND "
ElseIf Me.cboBoPhan = "T?t c?" Then
dieukienloc = dieukienloc & "[tblMabophan.TenBophan] LIKE '*" & "' AND "
End If
ongke0711 > 20-08-16, 05:43 PM
If Not IsNull(Me.cboBoPhan) Then
If Me.cboBoPhan = "Tat ca" Then
dieukienloc = dieukienloc & "[tblMabophan.TenBophan] LIKE '*" & "' AND "
Else
dieukienloc = dieukienloc & "[tbMaBophan.TenBophan] LIKE '" & Me.cboBoPhan & "' AND "
End If
End If