Page 1 of 1
ขออนุญาตสอบเรื่องกรเขียนคำสั่งค้นหาในฟอร์ม ค้นหาได้เพียงบางรายการ
Posted: Wed Oct 11, 2023 2:37 am
by 9KiTTi
ผมสร้างฟอร์มเพื่อค้นหาจาก id แล้วแสดงข้อมูลที่ค้นหาพบ แต่ไม่สามารถค้นหาได้ทุก id ถึงแม้จะมีรายการอยู่ โดยตัวอักษรสีแดงจะไม่สามารถค้นหาเจอ รบกวนแนะนำวิธีแก้ไขด้วยครับ ขอบพระคุณครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim RecordRow As Long
Dim RecordRange As Range
On Error Resume Next
RecordRow = Application.Match(CLng(TextBox1.Value), Range("Table1[id]"), 0)
Set RecordRange = Range("Table1").Cells(1, 1).Offset(RecordRow - 1, 0)
If Err.Number <> 0 Then
ErrorLabel.Visible = True
On Error GoTo 0
Exit Sub
End If
On Error GoTo 0
ErrorLabel.Visible = False
TextBox2.Value = RecordRange(1, 1).Offset(0, 1).Value
End Sub
Re: ขออนุญาตสอบเรื่องกรเขียนคำสั่งค้นหาในฟอร์ม ค้นหาได้เพียงบางรายการ
Posted: Wed Oct 11, 2023 5:50 am
by snasui

คอลัมน์ ID มีทั้ง Data Type ที่เป็น Number และ Text การค้นหาจะต้องค้นหาทั้งสองรูปแบบ ปกติควรกำหนด Data Type ของคอลัมน์ใด ๆ ให้เป็นรูปแบบเดียวเท่านั้น การทำงานกับข้อมูลจะต้องคำนึงถึงสิ่งนี้เป็นสำคัญครับ
ตัวอย่างการปรับ Code ให้หาได้ทั้ง Text และ Number (ซึ่งไม่แนะนำ)
Code: Select all
Private Sub CommandButton1_Click()
Dim RecordRow As Long, mText As Long, mNum As Long
Dim RecordRange As Range
ErrorLabel.Visible = False
On Error Resume Next
mText = Application.Match(TextBox1.Value, Range("Table1[id]"), 0)
mNum = Application.Match(CLng(TextBox1.Value), Range("Table1[id]"), 0)
RecordRow = Application.Max(mText, mNum)
TextBox2.Text = ActiveSheet.Cells(RecordRow, "b").Value
If RecordRow = 0 Then
ErrorLabel.Visible = True
End If
' Set RecordRange = Range("Table1").Cells(1, 1).Offset(RecordRow - 1, 0)
' If Err.Number <> 0 Then
'
' ErrorLabel.Visible = True
' On Error GoTo 0
' Exit Sub
'
' End If
'
On Error GoTo 0
'ErrorLabel.Visible = False
' TextBox2.Value = RecordRange(1, 1).Offset(0, 1).Value
End Sub
Re: ขออนุญาตสอบเรื่องกรเขียนคำสั่งค้นหาในฟอร์ม ค้นหาได้เพียงบางรายการ
Posted: Wed Oct 11, 2023 11:38 am
by 9KiTTi
snasui wrote: Wed Oct 11, 2023 5:50 am

คอลัมน์ ID มีทั้ง Data Type ที่เป็น Number และ Text การค้นหาจะต้องค้นหาทั้งสองรูปแบบ ปกติควรกำหนด Data Type ของคอลัมน์ใด ๆ ให้เป็นรูปแบบเดียวเท่านั้น การทำงานกับข้อมูลจะต้องคำนึงถึงสิ่งนี้เป็นสำคัญครับ
ตัวอย่างการปรับ Code ให้หาได้ทั้ง Text และ Number (ซึ่งไม่แนะนำ)
Code: Select all
Private Sub CommandButton1_Click()
Dim RecordRow As Long, mText As Long, mNum As Long
Dim RecordRange As Range
ErrorLabel.Visible = False
On Error Resume Next
mText = Application.Match(TextBox1.Value, Range("Table1[id]"), 0)
mNum = Application.Match(CLng(TextBox1.Value), Range("Table1[id]"), 0)
RecordRow = Application.Max(mText, mNum)
TextBox2.Text = ActiveSheet.Cells(RecordRow, "b").Value
If RecordRow = 0 Then
ErrorLabel.Visible = True
End If
' Set RecordRange = Range("Table1").Cells(1, 1).Offset(RecordRow - 1, 0)
' If Err.Number <> 0 Then
'
' ErrorLabel.Visible = True
' On Error GoTo 0
' Exit Sub
'
' End If
'
On Error GoTo 0
'ErrorLabel.Visible = False
' TextBox2.Value = RecordRange(1, 1).Offset(0, 1).Value
End Sub
ปรับแก้ code ตามที่อาจารย์แนะนำแล้วครับ แต่ข้อมูลที่แสดงผลออกมาไม่ตรง ที่ textbox2 จะแสดงผลขึ้นแถว 1 แถว ไม่ตรงกับ id ที่ค้นหาครับ
Re: ขออนุญาตสอบเรื่องกรเขียนคำสั่งค้นหาในฟอร์ม ค้นหาได้เพียงบางรายการ
Posted: Wed Oct 11, 2023 12:07 pm
by snasui

ควรฝึก Debug ให้เป็นครับ
กรณีนี้ค่า RecordRow มันน้อยไป 1 ลำดับ วิธีแก้คือบวกค่า 1 เข้าไปก็จะได้คำตอบครับ
Re: ขออนุญาตสอบเรื่องกรเขียนคำสั่งค้นหาในฟอร์ม ค้นหาได้เพียงบางรายการ
Posted: Wed Oct 11, 2023 3:25 pm
by 9KiTTi
ขอบพระคุณครับอาจารย์ ขอกลับฝึกเรื่อง debug ครับ