ตรวจเลขที่มันสลับตำแหน่งกัน 2 และ 3 ตำแหน่ง ใช้คิวรี่น่าจะได้



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

16 มี.ค. 64 , 22:31:55
อ่าน 260 ครั้ง

SakDa

กรณีเลข 2 ตัว และ เลข 3 ตัว ที่มันสลับตำแหน่งกัน ผมจะใช้การแยกทีละตัวด้วยคิวรี่ได้ ทีนี้ถ้าจะเอาไปตรวจกับเฉลยว่ามีเลขเหมือนกันไหม จะทำอย่างไรดีครับ ผมค้นเจอในบอร์ด อาจารย์ไชยา มีอยู่ 1 คนถาม มีความสงสัยในการหาคำตอบ

 

17 มี.ค. 64 , 07:15:34
ตอบกลับ #1

PNR

ถ้าใช่วิธีง่ายๆ มีตัวอย่าง 2 แบบ
ในการตรวจเช็คก็คือ เช็คว่ามีตัวเลขเหล่านี้ทั้ง 3 ตัวหรือไม่ (เหมือนเช็คว่าใช่ตัวสลับหรือไม่  :shout:)

ถ้าใช้ textbox ในการตรวจสอบ 2 textbox ก็จะใช้โค้ดแบบนี้
สมมุติ textbox ใช้ในการกรอก ชื่อ InputTextbox
textbox ที่แสดงตัวเลขเริ่มต้นไว้ตรวจสอบชื่อ  targetTextbox
โค๊ด: [Select]
Dim InputNum, TargetNum As Long
Dim Num1, Num2, Num3, Num4, Num5, Num6 As Integer
Dim Digit1, Digit2, Digit3 As Long

InputNum = Trim(Me.InputTextbox)
TargetNum = Trim(Me.targetTextbox)
Digit1 = Left(InputNum, 1)
Digit2 = Mid(InputNum, 2, 1)
Digit3 = Right(InputNum, 1)

Num1 = Digit1 & Digit2 & Digit3
Num2 = Digit1 & Digit3 & Digit2
Num3 = Digit3 & Digit2 & Digit1
Num4 = Digit3 & Digit1 & Digit2
Num5 = Digit2 & Digit1 & Digit3
Num6 = Digit2 & Digit3 & Digit1

If Num1 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
ElseIf Num2 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
ElseIf Num3 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
ElseIf Num4 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
ElseIf Num5 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
ElseIf Num6 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
Else
MsgBox "ท่านไม่ถูกรางวัล้"
End If


ส่วนถ้าจะนำไปใช้กับคิวรี่ให้ทำแบบนี้

1.นำโค้ดนี้ไปวางใน Module
โค๊ด: [Select]
Public Function MyCheck(FieldTarget As Integer, FieldInput As Integer) As String
Dim InputNum, TargetNum As Long
Dim Num1, Num2, Num3, Num4, Num5, Num6 As Integer
Dim Digit1, Digit2, Digit3 As Long
Dim Result As String
InputNum = Trim(FieldInput)
TargetNum = Trim(FieldTarget)
Digit1 = Left(InputNum, 1)
Digit2 = Mid(InputNum, 2, 1)
Digit3 = Right(InputNum, 1)

Num1 = Digit1 & Digit2 & Digit3
Num2 = Digit1 & Digit3 & Digit2
Num3 = Digit3 & Digit2 & Digit1
Num4 = Digit3 & Digit1 & Digit2
Num5 = Digit2 & Digit1 & Digit3
Num6 = Digit2 & Digit3 & Digit1

If Num1 = TargetNum Then
Result = "ท่านถูกรางวัล"

ElseIf Num2 = TargetNum Then
Result = "ท่านถูกรางวัล"

ElseIf Num3 = TargetNum Then
Result = "ท่านถูกรางวัล"

ElseIf Num4 = TargetNum Then
Result = "ท่านถูกรางวัล"

ElseIf Num5 = TargetNum Then
Result = "ท่านถูกรางวัล"

ElseIf Num6 = TargetNum Then
Result = "ท่านถูกรางวัล"
Else
Result = "ท่านไม่ถูกรางวัล"
End If
MyCheck = Result
End Function

2.สมมุติตารางมี Field F1 คือฟิลล์ผลออก
                    Field F2 คือฟิลล์ที่เราระบุ
SQL ก็จะได้แบบนี้
โค๊ด: [Select]
SELECT IIf(Not IsNull([F2]),Mycheck([F1],[F2]),Null) AS ตรวจ, *
FROM Table1;


เวลาเรียกใช้ฟังชั้น ก็ให้ใส่ ตรวจ: IIf(Not IsNull([F2]),Mycheck([F1],[F2]),Null) เข้าไปครับ

พอดีผมไม่ค่อยเข้าใจโจทย์ที่ท่านอธิบาย ถ้าตอบไม่ตรงประเด็นต้องขออภัยด้วยนะครับ
« แก้ไขครั้งสุดท้าย: 18 มี.ค. 64 , 08:38:29 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa


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