Tạo form tìm kiếm đơn giản trong access (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

dinhhe213

Thành viên mới
Tham gia
21/11/08
Bài viết
6
Được thích
1
Bây giờ tôi có một tệp tin CSDL bao gồm các trường Mã, Tên, Địa Chỉ, DT, ... Nói chung là chỉ một bảng thôi. Tôi muốn tạo 1 form kiểu như thế này
anhs.png

1Combo box load xuống khi không muốn gõ. 1 Subform hiện lên danh sách trong có mã trong combo. Một nút kìm kiếm, một nút thoát. Nút tìm kiếm có mục đích tìm khi không click vào combo mà tự gõ mã.

Có ai làm được chỉ giùm tui chi tiết chút nha. Cảm ơn nhiều!!
 
Bây giờ tôi có một tệp tin CSDL bao gồm các trường Mã, Tên, Địa Chỉ, DT, ... Nói chung là chỉ một bảng thôi. Tôi muốn tạo 1 form kiểu như thế này

1Combo box load xuống khi không muốn gõ. 1 Subform hiện lên danh sách trong có mã trong combo. Một nút kìm kiếm, một nút thoát. Nút tìm kiếm có mục đích tìm khi không click vào combo mà tự gõ mã.

Có ai làm được chỉ giùm tui chi tiết chút nha. Cảm ơn nhiều!!

Tạo 1 query
Mã:
SELECT Table1.STT, Table1.NGÀY, Table1.TÊN, Table1.[MA MAY], Table1.[MA KH]
FROM Table1
WHERE (((Table1.[MA KH]) Like [forms]![form1]![loc]));

Tạo form có tên là Form1

Trên form thiết kế các object như sau:

-Subform có tên: KH

-Combobox: loc
RowSource:

Mã:
SELECT Table1.[MA KH], Table1.TÊN
FROM Table1
GROUP BY Table1.[MA KH], Table1.TÊN;
Code cho Combo

Mã:
Private Sub loc_AfterUpdate()
Forms!form1.KH.SourceObject = "Query.Query1"

End Sub

-CommandButton: cmdTatCa, caption: Tất Cả

Mã:
Private Sub cmdTatCa_Click()
loc = "*"
Forms!form1.KH.SourceObject = "Query.Query1"

End Sub

-CommandButton: cmdThoat, caption: Thoát

Mã:
Private Sub cmdThoat_Click()
On Error GoTo Err_cmdThoat_Click


    DoCmd.Close

Exit_cmdThoat_Click:
    Exit Sub

Err_cmdThoat_Click:
    MsgBox Err.Description
    Resume Exit_cmdThoat_Click
    
End Sub

Code cho form

Mã:
Private Sub Form_Load()
loc = "*"
Forms!form1.KH.SourceObject = "Query.Query1"
End Sub
 

File đính kèm

A ơi! Làm Query thế này hay bị lỗi quá. Không biết nhưng mà e làm bị lỗi hoài cứ xoá đi làm lại nhiều lần quá. Nó báo lỗi thế này
loi.png

Thật ra e ko chỉ làm lọc mỗi mã đâu, e còn lọc thêm ngày tháng, tên và nhiều nữa. E lấy code của a làm mẫu nhưng mà nó báo lỗi nhiều quá ko làm được. Có cách nào khắc phục ko a?
Cho e hỏi thêm: Nếu mình cho lọc ngay trong table thì có được không?
 
Lần chỉnh sửa cuối:
Theo tôi đề nghị, bạn không cần phải làm thêm nút Tìm kiếm.
Bạn chỉ cần áp dụng cách thiết kế Master - Detail của Access là được.

Giả sử cái combo box của bạn có tên là cboMAMAY.
Bạn chọn cái subform, mở cửa sổ Properties ra, vào cái thẻ Data, chọn:
Link Master Fields: cboMAMAY
Link Child Fields: MAMAY

Vậy là OK rồi. Mỗi khi có sự thay đổi nội dung combo box, nó sẽ thay đổi dữ liệu trong subform
 
A ơi! Làm Query thế này hay bị lỗi quá. Không biết nhưng mà e làm bị lỗi hoài cứ xoá đi làm lại nhiều lần quá. Nó báo lỗi thế này
loi.png

Thật ra e ko chỉ làm lọc mỗi mã đâu, e còn lọc thêm ngày tháng, tên và nhiều nữa. E lấy code của a làm mẫu nhưng mà nó báo lỗi nhiều quá ko làm được. Có cách nào khắc phục ko a?
Cho e hỏi thêm: Nếu mình cho lọc ngay trong table thì có được không?

Bạn gửi cái file của bạn lên mình sẽ xem giúp, có thể sẽ không dùng phương pháp cũ để lọc.
 
Xem file mẫu này cũng hay nè bạn :)
 

File đính kèm

Em là thành viên mới của GPE ạ. Bữa rồi trong lúc làm Chương trình cho công ty, em vào xem topic của các anh ạ
Em áp dụng như file Access anh gửi nhưng không hiêu sao báo lỗi và không chạy được

Đây là đoạn codes

Private Sub Command23_Click()
' Update the record source
Me.frmsubDulieuKhachhangXK.Form.RecordSource = "SELECT * FROM QryCIFXK " & BuildFilter
(đây là chỗ bị báo lỗi method not found ạ)

' Requery the subform
Me.frmsubDulieuKhachhangXK.Requery
End Sub
Private Function BuildFilter() As Variant
Dim varWhere As Variant
varWhere = Null ' Main filter

If Me.Chinhanh_filter > 0 Then
varWhere = varWhere & "[Chi_Nhanh] = " & Me.Chinhanh_filter & " AND "
End If
If Me.Khachhang_filter > "" Then
varWhere = varWhere & "[Khach_Hang] LIKE """ & Me.Khachhang_filter & "*"" AND "
End If
If Me.CIF_filter > "" Then
varWhere = varWhere & "[CIF] LIKE """ & Me.CIF_filter & "*"" AND "
End If
If Me.Taikhoan_filter > "" Then
varWhere = varWhere & "[Tai_Khoan] LIKE """ & Me.Taikhoan_filter & "*"" AND "
End If
If Me.Bieuphi_filter > "" Then
varWhere = varWhere & "[Bieu_Phi] LIKE """ & Me.Bieuphi_filter & "*"" AND "
End If
If Me.Ghichu_filter > "" Then
varWhere = varWhere & "[Ghi_Chu] LIKE """ & Me.Khachhang_filter & "*"" AND "
End If

BuildFilter = varWhere
End Function

Em đã kiểm tra hết mà không hiểu sai ở đâu. Mong các anh giúp em. Em cảm ơn nhìu.
 
Đây là file Access của em ạ
 

File đính kèm

Đây là file Access của em ạ

1. Tham chiếu subform sai: (xem lại subform Name # subform label) cái bạn đang tham chiếu là subform label , bạn cần biết chính xác subform name
2. Câu query của bạn viết nhìn vào chả hiểu ráo: theo minh hiểu là bạn dùng cấu trúc
Select * from Query{source} Where Col1 = "xxx" and col2 = "yyy"
Tuy nhiên mình thấy bạn định nghĩa varWhere không biết có giống Where ? giống thì mới xét tiếp, nếu không thì exit sub mà debug là vừa
Phải hiểu được cấu trúc của câu SQL kia mới viết được điều kiện mà bạn viết là BuildFilter()
---------------
Đúng hơn hãy viết cái sub nhìn cho rõ ràng dễ hiểu, kiểu:
Mã:
dim strSQl as string
if condition (1) then
strSQL= " " 
else if condition (2) then
strSQl=" "
end if
Forms!Form_main!Form_sub.form.recordSource = strSQL
Forms!Form_main!Form_sub.form.recordSource.Requery
 
- Em đã sửa lại cái Subform Name rùi ạ. Nhưng lại nảy sinh vấn đề. Nó bào lỗi cái từ FROM ở trong câu lệnh:
Me.frmsubDulieuKhachhangXK.Form.RecordSource = "SELECT * FROM QryCIFXK " & BuildFilter. Lỗi FROM syntax error.
- Cái BuildFilter em tham khảo chỗ file Access của anh TranThanhPhong. Em muốn lọc dữ liệu theo nhiều điều kiện. Nếu lọc dữ liệu theo một điều kiện thì em có thể tạo Query cho DataSource của Subform được mà. Mà em thấy Query trong cho Form chỉ lọc theo một điều kiện thôi phải không ạ.
- Chú thích cái codes của em là 1 cai sub với 1 cái function ạ
Cái Function này là :

Private Function BuildFilter() As Variant
Dim varWhere As Variant
varWhere = Null ' Main filter

If Me.Chinhanh_filter > 0 Then
varWhere = varWhere & "[Chi_Nhanh] = " & Me.Chinhanh_filter & " AND "
End If
If Me.Khachhang_filter > "" Then
varWhere = varWhere & "[Khach_Hang] LIKE """ & Me.Khachhang_filter & "*"" AND "
End If
If Me.CIF_filter > "" Then
varWhere = varWhere & "[CIF] LIKE """ & Me.CIF_filter & "*"" AND "
End If
If Me.Taikhoan_filter > "" Then
varWhere = varWhere & "[Tai_Khoan] LIKE """ & Me.Taikhoan_filter & "*"" AND "
End If
If Me.Bieuphi_filter > "" Then
varWhere = varWhere & "[Bieu_Phi] LIKE """ & Me.Bieuphi_filter & "*"" AND "
End If
If Me.Ghichu_filter > "" Then
varWhere = varWhere & "[Ghi_Chu] LIKE """ & Me.Khachhang_filter & "*"" AND "
End If

BuildFilter = varWhere
End Function

Cái Varwhere chính là Where trong cấu trúc mà anh nói đấy ạ
Select * from Query{source} Where ...... Còn cái BuildFilter chính là các điều kiện sau Where.
Em cảm ơn sự giúp đỡ của anh nhiều lắm.
 
ặc, ncxn nói lần nữa nhé:
1. tham chiếu sai (vì sao thì là ncxn đã mở file bạn xem rồi nên mới biết nó sai)
Cụ thể: sub của bạn có tên fm_x_y_z gì đó -> cái này do lúc bạn tạo main/subform theo wizard bạn đã đặt tên cho nó nên access hiểu theo tên này
Tham chiếu trong VBA làm ơn viết đầy đủ nếu chưa hiểu, theo cấu trúc sau:
Forms!Form_main!Form_sub.form.<exp> (<exp> là control hoặc thuộc tính có thể sử dụng trên subform)
2. Đã nó đọc cái câu SQL của bạn muốn mệt cả người, đã chỉ thì không chịu đọc , copy cái code người ta mà lại chả hiểu mô tê gì ráo
Ví dụ nhé, khi bạn click sẽ chạy câu này
SELECT * FROM QryCIFXK & BuildFilter()
tiếp nó tìm BuildFilter()
Cái if đầu tiền: nếu chỉ chọn lọc chi nhánh thôi thì SQL của bạn nó ra thế này
SELECT * FROM QryCIFXK Where [Chi_Nhanh] = '& Me.Chinhanh_filter' AND
-> Dư chữ AND , mới bước đầu tiền đã lỗi rồi thì nói gì tới các bước tiếp theo?
 
Em đã sửa lại cái Subform Name rồi mà. Em đã sửa cái Subform Name ngay trên Main form la fm_CIF_XK. Nên nó không báo lỗi về Form nữa.
Thứ hai là em thấy cái Codes gốc của anh TranThanhPhong ý, câu lệnh :
varWhere = varWhere & "[Chi_Nhanh] = " & Me.Chinhanh_filter & " AND "
Từ "And" cho phép lọc dữ liệu với nhiều điều kiện, em nghĩ vậy.
Anh có thể nói rõ ra cho em biết tại sao trong file Access của anh Phong, codes chạy được mà của em không chạy được. Hiện tại, ngoài lỗi Subform Name em đã sửa, em vẫn chưa hiểu lỗi gì nữa. Kể cả khi em đã sửa lại đường dẫn Form giống như của anh, nó vẫn báo lỗi Clause FROM. Em nghĩ không phải nó báo lỗi cái BuildFilter mà nó báo lỗi cai Query ý |||||.
Hì, cảm ơn anh nhìu, cơ mà anh đừng nóng với em nha +-+-+-+.
Em attach file vào rùi.
 

File đính kèm

mình hỏi 1 chút nhé:
1.Bạn có thể diễn giải điều bạn muốn lọc(tìm kiếm) bằng ngôn ngữ viết không?
2.Nếu diễn giải được bằng ngôn ngữ viết rồi, bạn hãy viết một câu SQL hoàn chỉnh cho điều kiện lọc đó không?
-- --- --
Chú ý:
Hãy quên đi cái code của người đi trước nhé (đừng có lấy cái của họ áp vào mà mình không hiểu!)
Tìm hiểu kỹ SQL trước khi làm nhé
bạn đừng attach file thêm nữa (nhiều file chỉ cùng 1 vấn đề), nếu mình muốn làm thay cho bạn thì mình đã làm rồi,ỏw đây mình muốn bạn phải hiểu được những gì mình làm, tránh câu hỏi như thế này:
"Tại sao code đó của anh kia thì chạy được mà em làm chạy không được?"
-- ---- ----
 
mình hỏi 1 chút nhé:
1.Bạn có thể diễn giải điều bạn muốn lọc(tìm kiếm) bằng ngôn ngữ viết không?
2.Nếu diễn giải được bằng ngôn ngữ viết rồi, bạn hãy viết một câu SQL hoàn chỉnh cho điều kiện lọc đó không?
-- --- --
Chú ý:
Hãy quên đi cái code của người đi trước nhé (đừng có lấy cái của họ áp vào mà mình không hiểu!)
Tìm hiểu kỹ SQL trước khi làm nhé
bạn đừng attach file thêm nữa (nhiều file chỉ cùng 1 vấn đề), nếu mình muốn làm thay cho bạn thì mình đã làm rồi,ỏw đây mình muốn bạn phải hiểu được những gì mình làm, tránh câu hỏi như thế này:
"Tại sao code đó của anh kia thì chạy được mà em làm chạy không được?"
-- ---- ----


Tất nhiên là em biết em muôn lọc dữ liệu gì, và theo những điều kiện gì.
Thứ hai là, nếu em viết được codes để lọc thì em đã không phải đi tham khảo của anh TranThanhPhong. Và hơn nữa, em tham khảo thì em cũng phải biết tại sao em không thể áp dụng được codes của anh Phong được. Có những khác biệt gì. Và nếu trong trường hợp file của em thì em phải làm thế nào. Nếu em có thể tự trả lời hết các câu hỏi thì em đã không hỏi các anh, những người có kinh nghiệm làm gì cả.
Em hiểu những cái anh đưa ra, nhưng VD như codes này :
if condition (1) then
strSQL= " "
else if condition (2) then
strSQl=" "
end if
thì câu lệnh có lẽ sẽ phức tạp, vì em muốn lọc dữ liệu theo các criteria khác nhau. Với hơn 2 conditions thì câu lênh if sẽ phức tạp. Trong khi đó, file của anh Tran Thanh Phong làm được điều đó. Cái gì hay của người khác em nghĩ là nên học hỏi, và áp dụng nểu thấy thích hợp. Nếu không anh Phong share cho mọi người làm gì ạ?
Nếu anh có thể giải thích cụ thể hơn em phải sửa ra sao, em xin cảm ơn.
 
mình hỏi 1 chút nhé:
1.Bạn có thể diễn giải điều bạn muốn lọc(tìm kiếm) bằng ngôn ngữ viết không?
2.Nếu diễn giải được bằng ngôn ngữ viết rồi, bạn hãy viết một câu SQL hoàn chỉnh cho điều kiện lọc đó không?
-- --- --
Chú ý:
Hãy quên đi cái code của người đi trước nhé (đừng có lấy cái của họ áp vào mà mình không hiểu!)
Tìm hiểu kỹ SQL trước khi làm nhé
bạn đừng attach file thêm nữa (nhiều file chỉ cùng 1 vấn đề), nếu mình muốn làm thay cho bạn thì mình đã làm rồi,ỏw đây mình muốn bạn phải hiểu được những gì mình làm, tránh câu hỏi như thế này:
"Tại sao code đó của anh kia thì chạy được mà em làm chạy không được?"
-- ---- ----

Em đã hỏi và được nghe giải thích cụ thể rồi ạ. Dù sao cũng cảm ơn anh rất nhìu.:hug:
 
Tất nhiên là em biết em muôn lọc dữ liệu gì, và theo những điều kiện gì.
Thứ hai là, nếu em viết được codes để lọc thì em đã không phải đi tham khảo của anh TranThanhPhong. Và hơn nữa, em tham khảo thì em cũng phải biết tại sao em không thể áp dụng được codes của anh Phong được. Có những khác biệt gì. Và nếu trong trường hợp file của em thì em phải làm thế nào. Nếu em có thể tự trả lời hết các câu hỏi thì em đã không hỏi các anh, những người có kinh nghiệm làm gì cả.
Em hiểu những cái anh đưa ra, nhưng VD như codes này :
if condition (1) then
strSQL= " "
else if condition (2) then
strSQl=" "
end if
thì câu lệnh có lẽ sẽ phức tạp, vì em muốn lọc dữ liệu theo các criteria khác nhau. Với hơn 2 conditions thì câu lênh if sẽ phức tạp. Trong khi đó, file của anh Tran Thanh Phong làm được điều đó. Cái gì hay của người khác em nghĩ là nên học hỏi, và áp dụng nểu thấy thích hợp. Nếu không anh Phong share cho mọi người làm gì ạ?
Nếu anh có thể giải thích cụ thể hơn em phải sửa ra sao, em xin cảm ơn.

1. không phải hiểu và muốn mà là phát biểu thành ngôn ngữ viết (mình nói có khó hiểu không nhỉ): phát biểu thành ngôn ngữ viết rất có lợi đối với những ai muốn học tiếp!
2. Cách phát biểu của mình và của TranThanhPhong là hoàn toàn giống nhau về ý nghĩa -> thế mà bạn bảo bạn hiểu, còn nói là nó phức tạp !? thiệt tình mình viết mấy bài trong topic này hy vọng bạn hiểu (và bạn gì hum bữa yêu cầu lập form tìm kiếm gì đó cũng đọc các bài này).
3. Đến đây thậm chí mình nghi ngờ bạn có đọc các bài viết của mình mà có một chút gì đọng lại hay không (vì những thứ mà bạn sai minh viết đã in đậm lên cả rồi)
4. Thôi thì giải thích tại sao bạn sai bằng cái code của TranThanhPhong Vậy!

Mình chú thích vì sao bạn làm không được trong đó! Nhớ đọc cho kỹ
' *************************************
'
' Search Form Example
' by gromit
' 12-26-05
'
' You are free to adapt this for your own use
'
' *************************************

Option Compare Database
Option Explicit

Private Sub btnClear_Click()
Dim intIndex As Integer
'Đây là thủ tục làm cho các ô tìm kiếm trở về trống trơn , khi mở form lên ta gọi nó hoặc muốn trở về trạng thái ban đầu.
' Clear all search items
Me.txtFirstName = ""
Me.txtLastName = ""
Me.txtMaxAge = ""
Me.txtMinAge = ""
Me.cmbCompany = 0
Me.cmbCountry = 0

' De-select each item in Color List (multiselect list)
For intIndex = 0 To Me.lstFavColor.ListCount - 1
Me.lstFavColor.Selected(intIndex) = False
Next

End Sub

Private Sub btnSearch_Click()

' Update the record source: Soucre của subform được gán bằng câu lệnh SQL (phần trong ngơặoc kép và function BuildFilter
Me.frmsubClients.Form.RecordSource = "SELECT * FROM qryClientData " & BuildFilter

' Requery the subform : Cái này để load lại dữ liệu của subform
Me.frmsubClients.Requery
End Sub


Private Sub Form_Load()

' Clear the search form: trạng thái mặt định
btnClear_Click

End Sub

Private Function BuildFilter() As Variant
'Định nghĩa các biến dạng tùy ý
Dim varWhere As Variant
Dim varColor As Variant
Dim varItem As Variant
Dim intIndex As Integer

varWhere = Null ' Main filter: Dạng dữ liệu NULL
varColor = Null ' Subfilter used for colors

' Check for LIKE First Name
' Phát biểu đoạn 1(cái này mình yêu cầu bạn phát biểu đó): Nếu ô tìm kiếm theo FirstName có dữ liệu nhập vào thì hãy chọn các dòng trong query nguồn với điều kiện (Where) thỏa mãn: cột firstName phải chứa chuỗi vừa nhập vào
' Phát biểu thành SQL: SELECT * FROM qryClientData Where [FirstName] LIKE "Me.txtFirstName *" AND (Dấu * đại diện chuỗi ký tự sau đó, và dư Chữ AND nên gây lỗi) tuy nhiên chữ And đã được sử lý phía dưới!
If Me.txtFirstName > "" Then
varWhere = varWhere & "[FirstName] LIKE """ & Me.txtFirstName & "*"" AND "
End If

' Check for LIKE Last Name
' Kế tiếp chữ AND phía trên nối vào nếu có dữ liệu nhập vào và vẫn dư chữ AND
If Me.txtLastName > "" Then
varWhere = varWhere & "[LastName] LIKE """ & Me.txtLastName & "*"" AND "
End If

' Check for min Age
If Me.txtMinAge > "" Then
varWhere = varWhere & "[Age] > " & Me.txtMinAge & " AND "
End If

' Check for max Age
If Me.txtMaxAge > "" Then
varWhere = varWhere & "[Age] < " & Me.txtMaxAge & " AND "
End If

' Check for CompanyID
If Me.cmbCompany > 0 Then
varWhere = varWhere & "[CompanyID] = " & Me.cmbCompany & " AND "
End If

' Check for CountryID
If Me.cmbCountry > 0 Then
varWhere = varWhere & "[CountryID] = " & Me.cmbCountry & " AND "
End If

' Check for Colors in multiselect list
For Each varItem In Me.lstFavColor.ItemsSelected
varColor = varColor & "[FavColor] = """ & _
Me.lstFavColor.ItemData(varItem) & """ OR "

Next

' Test to see if we have subfilter for colors...
If IsNull(varColor) Then
' do nothing
Else
' strip off last "OR" in the filter :
If Right(varColor, 4) = " OR " Then
varColor = Left(varColor, Len(varColor) - 4)
End If

' Add some parentheses around the subfilter
varWhere = varWhere & "( " & varColor & " )"
End If

' Check if there is a filter to return...
If IsNull(varWhere) Then
varWhere = ""
Else
varWhere = "WHERE " & varWhere

' strip off last "AND" in the filter Ở đây người ta xử lý chữ AND dư thừa phía sau câu truy vấn: bạn sai do thiếu chỗ này
If Right(varWhere, 5) = " AND " Then
varWhere = Left(varWhere, Len(varWhere) - 5)
End If
End If

BuildFilter = varWhere

End Function

Trong này có thêm màu mè gì đó chắc là bạn không cần nhỉ
 
/-*+/ Em đã thêm phần xử lý chữ AND nên codes đã hoạt động rồi ạ.
 
Chào các bạn.
Mình cũng dựa vào đoạn code trên để tạo 1 form tìm kiếm và đã thành công với tìm theo tên người, tuy nhiên khi mình làm thêm tìm theo ngày tháng thì báo lỗi.
Nhờ các bạn cho giúp mình đoạn code tìm ngày tháng để tham khảo.
Thanks các bạn đã quan tâm
 
Đây là điều hay gặp, điều kiện lọc trên Form có thể từ TextBox, Combo, DTPicker...rất có thể nó chưa phải kiểu dữ liệu Date như trong Recordset. Vậy bạn nên dùng hàm ngày tháng để chuyển đổi sang dạng Date và đưa vào SQL. Như vậy việc so sánh mới chuẩn xác và chắc bạn sẽ có kết quả như yêu cầu.
 
Bạn domfootwear có cách nào khác để khắc phục đc trường hợp cùng tìm tên và ngày ko vậy ?
 
Bạn domfootwear có cách nào khác để khắc phục đc trường hợp cùng tìm tên và ngày ko vậy ?
Vậy cái lỗi đó là gì và cái đoạn code của bạn như thế nào? Nếu được bạn gửi demo bằng access 2003, mình sẽ giúp nếu không quá khả năng của mình.
Thân
 
Chào Dinhhe213,
Tôi có bài toán giống bạn, muốn sử dụng combo. Cho hỏi bạn đã giải quyết được vấn đề chưa? Xin chỉ giáo. Cảm ơn
 
Em đã hỏi và được nghe giải thích cụ thể rồi ạ. Dù sao cũng cảm ơn anh rất nhìu.:hug:

Bạn ơi cho mình hỏi chút nhé, mình cũng gặp vấn đề giống y chang như bạn, đang áp dụng bài mẫu của anh Tran Thanh Phong, cũng bị báo lỗi từa lưa, bạn có kinh nghiệm đi trước có thể chỉ giúp mình không?

' Update the record source
Me.Fsubsearchvendor.Form.RecordSource = "SELECT * FROM Qsubsearchvendor " & BuildFilter

' Requery the subform
Me.Fsubsearchvendor.Requery
End Sub
Private Function BuildFilter() As Variant
Dim varWhere As Variant

varWhere = Null ' Main filter

' Check for LIKE Vendor Name
If Me.txtvendor > "" Then
varWhere = varWhere & "[Supplier] LIKE """ & Me.txtvendor & "*"" AND "
End If

' Check for LIKE Detail
If Me.txtdetail > "" Then
varWhere = varWhere & "[detail-pmt] LIKE """ & Me.txtdetail & "*"" AND "
End If

' strip off last "AND" in the filter
If Right(varWhere, 5) = " AND " Then
varWhere = Left(varWhere, Len(varWhere) - 5)
End If


BuildFilter = varWhere



End Function
 
Bạn ơi cho mình hỏi chút nhé, mình cũng gặp vấn đề giống y chang như bạn, đang áp dụng bài mẫu của anh Tran Thanh Phong, cũng bị báo lỗi từa lưa, bạn có kinh nghiệm đi trước có thể chỉ giúp mình không?

' Update the record source
Me.Fsubsearchvendor.Form.RecordSource = "SELECT * FROM Qsubsearchvendor " & BuildFilter

' Requery the subform
Me.Fsubsearchvendor.Requery
End Sub
Private Function BuildFilter() As Variant
Dim varWhere As Variant

varWhere = Null ' Main filter

' Check for LIKE Vendor Name
If Me.txtvendor > "" Then
varWhere = varWhere & "[Supplier] LIKE """ & Me.txtvendor & "*"" AND "
End If

' Check for LIKE Detail
If Me.txtdetail > "" Then
varWhere = varWhere & "[detail-pmt] LIKE """ & Me.txtdetail & "*"" AND "
End If

' strip off last "AND" in the filter
If Right(varWhere, 5) = " AND " Then
varWhere = Left(varWhere, Len(varWhere) - 5)
End If


BuildFilter = varWhere



End Function

nó báo lỗi gì ?
Cái txt kia vì sao so sánh >"" ?
 
Mình tìm được lỗi rồi, mình copy thiếu 1 đoạn của trip off last AND, ok rồi, cảm ơn diễn đàn
 
Xin hỏi cả nhà lệnh Hightlight màu vàng cho kết quả tìm kiếm được trong access
 
BẠN bio87 oi. mình cũng đã thu lam rui. van đề ở đây là các Form của bạn chứa những ID giống nhau VD: [ma1]=[ma2]='01'; vay nen no se bao loi o dong nay:Me.frmsubDulieuKhachhangXK.Form.RecordSource = "SELECT * FROM QryCIFXK " & BuildFilter, nen du lieu khong duoc xu ly,bai cua minh cung khong the xu ly duoc .!
 
Mình đã dựa bài của anh Phong để làm nhưng không hiểu sao ID của table là kiểu text thì combox cứ luôn hỏi lại 2 lần kiểu text mới ra được. Ví dụ: ID table Dơnvị của mình là STP thì khi mình nhấn nút tìm kiếm nó bảo mình phải nhập lại 2 lần "STP" thì nó mới hiện ra kết quả tìm kiếm cho mình. Mong các bạn hãy giải đáp giúp mình. Thanks!
 
Mình thử vô table xóa đi mã nhân viên của 1 số nhân viên (để null), thì khi nhấn tìm kiếm là "*" thì không hiện những nhân viên không có mã. Khi field có 1 record trống thì cách tìm này trở nên mất tác dụng vì không thể hiện lên hết tất cả các giá trị. Mình thử tìm kiếm các diễn đàn nhưng không ai trả lời được mình. Rất mong nhận được giúp đỡ từ các cao thủ.
 
Mình thử vô table xóa đi mã nhân viên của 1 số nhân viên (để null), thì khi nhấn tìm kiếm là "*" thì không hiện những nhân viên không có mã. Khi field có 1 record trống thì cách tìm này trở nên mất tác dụng vì không thể hiện lên hết tất cả các giá trị. Mình thử tìm kiếm các diễn đàn nhưng không ai trả lời được mình. Rất mong nhận được giúp đỡ từ các cao thủ.

Nếu trống thì bạn cho nó điều kiện lọc là isnull
 
Tạo 1 query
Mã:
SELECT Table1.STT, Table1.NGÀY, Table1.TÊN, Table1.[MA MAY], Table1.[MA KH]
FROM Table1
WHERE (((Table1.[MA KH]) Like [forms]![form1]![loc]));

Tạo form có tên là Form1

Trên form thiết kế các object như sau:

-Subform có tên: KH

-Combobox: loc
RowSource:

Mã:
SELECT Table1.[MA KH], Table1.TÊN
FROM Table1
GROUP BY Table1.[MA KH], Table1.TÊN;
Code cho Combo

Mã:
Private Sub loc_AfterUpdate()
Forms!form1.KH.SourceObject = "Query.Query1"

End Sub

-CommandButton: cmdTatCa, caption: Tất Cả

Mã:
Private Sub cmdTatCa_Click()
loc = "*"
Forms!form1.KH.SourceObject = "Query.Query1"

End Sub

-CommandButton: cmdThoat, caption: Thoát

Mã:
Private Sub cmdThoat_Click()
On Error GoTo Err_cmdThoat_Click


    DoCmd.Close

Exit_cmdThoat_Click:
    Exit Sub

Err_cmdThoat_Click:
    MsgBox Err.Description
    Resume Exit_cmdThoat_Click
    
End Sub

Code cho form

Mã:
Private Sub Form_Load()
loc = "*"
Forms!form1.KH.SourceObject = "Query.Query1"
End Sub
sao em làm theo nhưng ko dc vậy anh ơi em thay tên table mà hok dc anh xem giúp em với http://www.mediafire.com/?5xb3ikiw94we9qw làm ơn gửi qua mail : duongtinh070391@gmail.com giúp em với nhế
 
Mình làm form tìm kiếm dựa trên đoạn code trên và đã thành công, tuy nhiên trong form tìm kiếm của mình có cả điều kiện dùng checkbox, mình đã thử vài đoạn code nhưng không đc. Bạn @Hai Lúa Miền Tây có thể hướng dẫn dùm mình đc ko ?
 
Mình làm form tìm kiếm dựa trên đoạn code trên và đã thành công, tuy nhiên trong form tìm kiếm của mình có cả điều kiện dùng checkbox, mình đã thử vài đoạn code nhưng không đc. Bạn @Hai Lúa Miền Tây có thể hướng dẫn dùm mình đc ko ?
Bạn gửi cái file yêu cầu của bạn lên đây nhé.
 
Bạn gửi cái file yêu cầu của bạn lên đây nhé.
Mình làm theo ví dụ này, có thêm checkbox lập gia đình. Trong form tìm kiếm khi checkbox lapGD = true thì sẽ lọc ra những thành viên đã có gd, khi checkbox = false thì hiện ra đầy đủ như bình thường. Bạn xem giúp mình nhé.
Cám ơn bạn
File của mình đây
 
Screenshot (2).jpgsao mình làm nó k thể kết nối các form với nhau được vậy
 
Lần chỉnh sửa cuối:
Nếu trống thì bạn cho nó điều kiện lọc là isnull

bạn nói cụ thể được không? thêm vào chỗ nào?
mình sử dụng đoạn code của bạn thanhphong nhưng nó vẫn chưa hoàn hảo lắm
vd: mã nv là B002, mình nhập B hay B0 thì nó tìm được chứ nhập B02 hay 002 thì nó không tìm được
có cách nào hoàn thiện đoạn code trên không bạn?
 

Bài viết mới nhất

Back
Top Bottom