สมัครสมาชิก
 

ฟอร์มค้นหาหลายๆเงื่อนไข



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

26 ก.ย. 62 , 16:07:57
อ่าน 136 ครั้ง

Eik Q Sang

ฟอร์มค้นหาหลายๆเงื่อนไข
« เมื่อ: 26 ก.ย. 62 , 16:07:57 »
รบกวนสอบถามฟอร์มค้นหาครับ ผมอยากได้ฟอร์มค้นหาแบบหลายๆเงื่อนไขตามรูปน่ะครับ คือ จะค้นหา เฉพาะรหัสลูกค้า แล้วแสดงข้อมูลออกมา หรือจะค้นหาจากทุกฟิลด์แล้วแสดงข้อมูลออกมาน่ะครับ ไม่ทราบว่าต้องทำตรงไหนอย่างไรบ้างครับ ถ้ามีไฟล์ตัวอย่างก็จะดีมากครับ ขอบคุณมากครับผม


 

26 ก.ย. 62 , 22:37:35
ตอบกลับ #1

OddyWriter

: ฟอร์มค้นหาหลายๆเงื่อนไข
« ตอบกลับ #1 เมื่อ: 26 ก.ย. 62 , 22:37:35 »
ไฟล์ตัวอย่างครับ
นะคะ (ไม่ใช่นะค่ะ) สวัสดีค่ะ (ไม่ใช่สวัสดีคะ)

คะ/ค่ะ ถึงเวลาวาระแห่งชาติหรือยัง
 
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang, apirak

27 ก.ย. 62 , 11:44:41
ตอบกลับ #2

PNR

: ฟอร์มค้นหาหลายๆเงื่อนไข
« ตอบกลับ #2 เมื่อ: 27 ก.ย. 62 , 11:44:41 »
เพิ่มเติมต่อจากอาจารย์อีกหน่อยนะครับ

สมมุติตารางชื่อ Table1
Field ชื่อ  CusID,CusName,DocNumber,DocAddDate
Textbox ชื่อ txtFindCusID / txtFindCusName /  txtFindDocNum / txtFindDocAddDate
Form ในการค้นหา ชื่อ frmSearchCustomer
โค๊ด: [Select]
Private Sub Command40_Click()
Dim StrFilter1, StrFilter2, StrFilter3, StrFilter4 As String
Dim GroupFilter As String

'กำหนดเงื่อนไขให้กับตัวแปรว่าถ้ามีข้อมูลจะนำ Where Clause นี้มาต่อประโยคใน Sql
If Not IsNull(Me.txtFindCusID) Then
StrFilter1 = "(((Table1.CusID)=[forms]![frmSearchCustomer]![txtFindCusID])"
End If
If Not IsNull(Me.txtFindCusName) Then
StrFilter2 = "(((Table1.CusName)=[forms]![frmSearchCustomer]![txtFindCusName])"
End If
If Not IsNull(Me.txtFindDocNum) Then
StrFilter3 = "(((Table1.DocNumber)=[forms]![frmSearchCustomer]![txtFindDocNum])"
End If
If Not IsNull(Me.txtFindDocAddDate) Then
StrFilter4 = "(((Table1.DocAddDate)=[forms]![frmSearchCustomer]![txtFindDocAddDate])"
End If

'นำเงื่อนไขที่ได้จากด้านบน มาต่อประโยคกัน
GroupFilter = IIf(StrFilter1 = "", "", StrFilter1) & IIf(StrFilter2 = "", "", StrFilter2) & IIf(StrFilter3 = "", "", StrFilter3) & IIf(StrFilter4 = "", "", StrFilter4)

'ใช้ Replace เพื่อใช้ And ต่อเงื่อนไขใน Where Clause
GroupFilter = Replace(GroupFilter, ")(((", ") and ((")

'นำประโยคที่ได้มากำหนด RecordSource
If IsNull(Me.txtFindCusID) And IsNull(Me.txtFindCusName) And IsNull(Me.txtFindDocAddDate) And IsNull(Me.txtFindDocNum) Then
Me.RecordSource = "Select * from table1;"
Else
Me.RecordSource = "Select * from table1 where " & GroupFilter & ");"
End If
End Sub

ข้อดีคือ  สามารถเลือกค้นหาข้อมูลได้ทุก textbox ที่อยากค้นและ เราใช้การสร้าง RecordSource แค่อันเดียว เพราะ Sql ที่ได้มาจากการสร้างเงื่อนไขค้นหาด้านบนไว้หมดแล้ว
« แก้ไขครั้งสุดท้าย: 27 ก.ย. 62 , 11:54:59 โดย PNR »
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: prajak, Eik Q Sang, apirak

27 ก.ย. 62 , 15:55:31
ตอบกลับ #3

Eik Q Sang

: ฟอร์มค้นหาหลายๆเงื่อนไข
« ตอบกลับ #3 เมื่อ: 27 ก.ย. 62 , 15:55:31 »
ขอบคุณมากครับผม

 


บอร์ดเรียนรู้ Access สำหรับคนไทย