snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Access and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่างเพิ่มเติม)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
devapathbz
Member
Posts: 4 Joined: Sun Sep 27, 2020 3:58 pm
Excel Ver: 365
#1
Post
by devapathbz » Sun Sep 27, 2020 9:31 pm
Code: Select all
GCriteria = " Like '*" & txtSearchString & "'*"
Form_frmCustomers.RecordSource = "select * from Customers where " & GCriteria
หลังจากกด Search ที่ฟอร์มแล้วจะขึ้นหน้าค้นหามาให้ครับ เช่นใส่ RO เข้าไปสิ่งที่ผมต้องการคือเหมือนเป็นการค้นหาคำว่า RO จากทุก Field มาแสดงในหน้า Display แต่เกิด Error ตามภาพครับ รบกวนขอความรู้หน่อยนะครับ ขอบคุณมากครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#2
Post
by snasui » Sun Sep 27, 2020 10:34 pm
ตัวอย่างการปรับ Code ครับ
Code: Select all
Dim sqlStr As String
'Other code
GCriteria = " Like '*" & txtSearchString & "*'"
sqlStr = "Select * From Customers Where "
sqlStr = sqlStr & "CustomerID " & GCriteria
sqlStr = sqlStr & " OR CompanyName " & GCriteria
sqlStr = sqlStr & " OR ContactName " & GCriteria
sqlStr = sqlStr & " OR ContactTitle " & GCriteria
'...
Form_frmCustomers.RecordSource = sqlStr
ต้องการให้ Seach Fileld ไหนก็ต้องใส่เข้าไปด้วย ถ้าต้องการ Search ทุก Field ก็ต้องเขียนให้ครบทุก Field ด้านบนนี้ยกตัวอย่างมาแค่ 4 Fields เท่านั้น
กรุณาสังเกตการใส่เครื่องหมาย
'
ว่าวางในตำแหน่งไหนเพื่อไม่ให้ Syntax Error ครับ
devapathbz
Member
Posts: 4 Joined: Sun Sep 27, 2020 3:58 pm
Excel Ver: 365
#3
Post
by devapathbz » Mon Sep 28, 2020 10:52 am
ขอบคุณมากครับ ตอนนี้ Code ไม่ Error แล้วครับ แต่หลังกด Search มี Popup "Enter Parameter Value" ขึ้นมาแทน แบบนี้เกิดจากอะไรหรอครับ
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#4
Post
by snasui » Mon Sep 28, 2020 2:00 pm
กรุณาโพสต์ Code ที่ปรับแก้แล้วมาด้วยจะได้ทราบว่าเขียนอะไรไปแบบไหน อย่างไรครับ
การที่ขึ้นกล่องข้อความนั้นปกติคือคีย์ Field ในเครื่องหมายก้ามปู ทำให้กลายเป็น Criteria ที่ผู้ใช้ต้องคีย์เข้าไปเอง แต่ถ้าให้เดาตามกล่องโต้ตอบที่จับภาพมา คือ คีย์ Filed ที่ไม่มีอยู่จริง Filed ที่มีอยู่จริงคือตามภาพครับ
You do not have the required permissions to view the files attached to this post.
devapathbz
Member
Posts: 4 Joined: Sun Sep 27, 2020 3:58 pm
Excel Ver: 365
#5
Post
by devapathbz » Mon Sep 28, 2020 2:35 pm
Code ที่มีการแก้ Update ไปครับ และแนบ File มาเพิ่มหลังแก้มาให้ด้วยครับ
ขอบคุณครับ
Code: Select all
Private Sub Command32_Click()
Dim SqlStr As String
If Len(TxtSearch) = 0 Or IsNull(TxtSearch) = True Then
MsgBox "You must enter a search string."
Else
GCriteria = " Like '*" & TxtSearch & "*'"
SqlStr = "Select * From KnowledgeList Where "
SqlStr = SqlStr & "TxtTitleName " & GCriteria
SqlStr = SqlStr & "TxtDesc" & GCriteria
SqlStr = SqlStr & "TxtSource" & GCriteria
SqlStr = SqlStr & "TxtCategory" & GCriteria
Form_Display.RecordSource = SqlStr
End If
End Sub
Last edited by
devapathbz on Mon Sep 28, 2020 2:40 pm, edited 1 time in total.
devapathbz
Member
Posts: 4 Joined: Sun Sep 27, 2020 3:58 pm
Excel Ver: 365
#6
Post
by devapathbz » Mon Sep 28, 2020 2:40 pm
snasui wrote: Mon Sep 28, 2020 2:00 pm
กรุณาโพสต์ Code ที่ปรับแก้แล้วมาด้วยจะได้ทราบว่าเขียนอะไรไปแบบไหน อย่างไรครับ
การที่ขึ้นกล่องข้อความนั้นปกติคือคีย์ Field ในเครื่องหมายก้ามปู ทำให้กลายเป็น Criteria ที่ผู้ใช้ต้องคีย์เข้าไปเอง แต่ถ้าให้เดาตามกล่องโต้ตอบที่จับภาพมา คือ คีย์ Filed ที่ไม่มีอยู่จริง Filed ที่มีอยู่จริงคือตามภาพครับ
เข้าใจแล้วครับ พอดีเมื่อกี้ไม่เห็นรูปที่อาจารย์แนบมา ตอนนี้แก้ไขได้แล้วครับ ใช้งานได้ตามที่ต้องการทุกอย่างเลยครับ
ขอบคุณอาจารย์อีกครั้งครับ