Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Form lọc dữ liệu
#11
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

Mã PHP:
Private Sub cmdXuatExcel_Click()
DoCmd.OutputTo acOutputForm"sfrmtimkiem"acFormatXLS, , True
End Sub 


Nhờ anh xem giúp em. Trân trọng cảm ơn anh
Chữ ký của huuduy.duy Xin chào, mình là huuduy.duy, Tham gia http://thuthuataccess.com/forum từ ngày 24-06 -13.
ღღღღღTài sản của huuduy.duy (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#12
(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

Cảm ơn bài ôngke ở phía trên, tôi theo dõi mục này vài ngày rồi hôm nay cũng chia sẽ 1 bài cơ bản thôi. Không có gì phức tạp cả.

Ý 1: Gõ vài từ và hiện list gần giống với từ đã gõ
Cho là Combox của bạn có tên: cboMaNV
=> Bạn chèn code này vào sự kiện KeyPress như sau
Mã PHP:
Private Sub cboMaNV_KeyPress(KeyAscii As Integer)
Me.cboMaNV.Dropdown
End Sub 

Ý nghĩa là: Khi bạn gõ 1 ký tự, nó sẽ tự động dò trong list combobox và thả thực đơn của ký tự liên quan gần đúng nhất, gõ càng nhiều ký tự thì sẽ thu hẹp giống như kiểu lọc ra những từ gần đúng như bạn gõ.

Ý 2: Nếu gõ từ mà kg có trong list thì báo cho hay

Xem chi tiết link này: Có 3 cách làm: [Hỏi] Cách không cho nhập chỉ cho chọn trong combobox của access

Thân mến!
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 huuduy.duy
#13
(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

Mã PHP:
Private Sub cmdXuatExcel_Click()
DoCmd.OutputTo acOutputForm"sfrmtimkiem"acFormatXLS, , True
End Sub 
Nhờ anh xem giúp em. Trân trọng cảm ơn anh

Em tim được trên Internet được đoạn code xuất sang Excel, thấy hay post lên chia sẻ cho những bạn cần.

Mã PHP:
Public Function Send2Excel(frm As FormOptional 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(strSheetName34)
   End If
   xlWSh.Activate
   xlWSh
.Range("A1").Select


   For Each fld In rst
.Fields
       ApXL
.ActiveCell fld.Name
       ApXL
.ActiveCell.Offset(01).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
.DescriptionvbExclamationErr.Number
   Exit 
Function
End Function 

Mã PHP:
Call Send2Excel(Me"SheetNameHereInQuotes"
Mã PHP:
Call Send2Excel(Forms!YourFormNameHere"SheetNameInQuotes"

Mã PHP:
'if code is on the main form:
Call Send2Excel(Me.SubformControl.Form, "SheetNameInQuotes") 

Mã PHP:
'if code is on a completely different form:

Call Send2Excel(Forms!YourMainFormName.SubformControl.Form, "SheetNameInQuotes") 
Chữ ký của huuduy.duy Xin chào, mình là huuduy.duy, Tham gia http://thuthuataccess.com/forum từ ngày 24-06 -13.
ღღღღღTài sản của huuduy.duy (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan , ongke0711
#14
(17-08-16, 12:43 AM)ongke0711 Đã viết:
(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 StringstrSQL As String
   Dim lngLen 
As Long
   Const conJetDate 
"\#mm\/dd\/yyyy\#"
   
   If Not IsNull
(Me.txtHoTenThen
       dieukienloc 
dieukienloc "[tbNhanvien.Tennhanvien] LIKE '*" Me.txtHoTen "*' AND "
   End If
   
   If Not IsNull
(Me.cboBoPhanThen
       dieukienloc 
dieukienloc "[tbMaBophan.TenBophan] LIKE '" Me.cboBoPhan "' AND "
   End If
   
   If Not IsNull
(Me.txtLyDoThen
       dieukienloc 
dieukienloc "[LyDo] LIKE '*" Me.txtLyDo "*' AND "
   End If
   
   Select 
Case Me.fraThoiGian.Value
       Case 1
           If Not IsNull
(Me.cboThangThen
               dieukienloc 
dieukienloc "Month([BatDau]) = " Me.cboThang " AND "
           End If
       Case 2
           If Not IsNull
(Me.cboQuyThen
               dieukienloc 
dieukienloc "(Month([BatDau])+2)\3 = " Me.cboQuy " AND "
           End If
       Case 3
           If Not IsNull
(Me.txtTuNgayThen
               dieukienloc 
dieukienloc "[BatDau] >= " Format(Me.txtTuNgayconJetDate) & " AND "
           End If
           If Not IsNull(Me.txtDenNgayThen
               dieukienloc 
dieukienloc "[BatDau] < " Format(Me.txtDenNgayconJetDate) & " 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$(dieukienloclngLen)
       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.
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)
HIện tại, em thêm code cho sự kiện double click để xoa nội dung cboBophan 
Mã PHP:
Private Sub cboBoPhan_DblClick(Cancel As Integer)
Me.cboBoPhan Null
Call Loc
End Sub 
Em Cảm ơn
Chữ ký của huuduy.duy Xin chào, mình là huuduy.duy, Tham gia http://thuthuataccess.com/forum từ ngày 24-06 -13.
ღღღღღTài sản của huuduy.duy (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#15
Bạn dùng Union query cho cboBoPhan.
Mã PHP:
SELECT tbMabophan.TenBophantbMabophan.MaBophan
FROM tbMabophan
UNION
SELECT   
'<Tất cả>','ALL' FROM tbMabophan
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 huuduy.duy
#16
(20-08-16, 10:07 AM)ongke0711 Đã viết: Bạn dùng Union query cho cboBoPhan.
Mã PHP:
SELECT tbMabophan.TenBophantbMabophan.MaBophan
FROM tbMabophan
UNION
SELECT   
'<Tất cả>','ALL' FROM tbMabophan

Nếu vậy thì em phải chỉnh đoạn code
Mã PHP:
 
------------
If 
Not IsNull(Me.cboBoPhanThen
      dieukienloc 
dieukienloc "[tbMaBophan.TenBophan] LIKE '" Me.cboBoPhan "' AND "
End If 

thành 
Mã PHP:
 
------------
If 
Not IsNull(Me.cboBoPhanThen
      dieukienloc 
dieukienloc "[tbMaBophan.TenBophan] LIKE '" Me.cboBoPhan "' AND "
ElseIf Me.cboBoPhan "T?t c?" Then
      dieukienloc 
dieukienloc "[tblMabophan.TenBophan] LIKE '*"  "' AND "
End If 

vậy đúng không anh, sao mà nó không ra kết quả.
Nhờ anh xem giúp em
Trân trọng cảm ơn!
Chữ ký của huuduy.duy Xin chào, mình là huuduy.duy, Tham gia http://thuthuataccess.com/forum từ ngày 24-06 -13.
ღღღღღTài sản của huuduy.duy (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#17
- Code VBA không hiểu tiếng Việt có dấu nên khi bạn code như trên nó không hiểu.
- Để cho nhanh, bạn đổi chữ "Tất cả" thành "Tat ca" trong query.
- Code:
Mã PHP:
If Not IsNull(Me.cboBoPhanThen
      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 
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 huuduy.duy , maidinhdan


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Tự động hiện Form khi loading hết thời gian ChiMai 1 37 02-12-16, 08:59 PM
Bài mới nhất: ongke0711
Photo [Hỏi] Mở Form trên access 2007 báo lỗi jason 5 187 22-11-16, 09:23 AM
Bài mới nhất: jason
  Query hiện lên trên form? feeling 4 162 09-11-16, 09:49 PM
Bài mới nhất: toancvp
  [Help] Chỉnh giúp Form thống kê hoanghai902 2 124 28-10-16, 06:15 PM
Bài mới nhất: hoanghai902
  [Help] Dòng chữ chạy trên form báo đến ngày sinh nhật tronghieu9792 1 121 20-10-16, 09:30 AM
Bài mới nhất: lamvankhanh

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ơ