ต้องการแยกตัวเลขบัตรประชาชนครับ



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

13 ก.พ. 62 , 12:30:07
อ่าน 444 ครั้ง

Anupap

  • สมาชิกไท.Access
  • กระทู้: 4

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

ผมบันทึกเลขบัตรประจำตัวประชาชน 13 หลัก ในฟิลด์ IDcard ต้องการทำรายงาน

โดยแยกตัวเลขทั้ง 13 หลัก ใส่ตามช่องที่กำหนดไว้ครับ



ต้องทำยังไงครับ ขอบคุณอาจารย์ล่วงหน้าครับ

 

13 ก.พ. 62 , 13:49:55
ตอบกลับ #1

Un

: ต้องการแยกตัวเลขบัตรประชาชนครับ
« ตอบกลับ #1 เมื่อ: 13 ก.พ. 62 , 13:49:55 »
เอาง่ายๆ เลย
ตัวแรก Left([IDcard],1) ตัวที่ 2 MID([IDcard],2,1) ตัวที่ 3 MID([IDcard],3,1)..........ตัวสุดท้าย Right([IDcard],1)

 

13 ก.พ. 62 , 14:59:24
ตอบกลับ #2

ปิ่นณรงค์

: ต้องการแยกตัวเลขบัตรประชาชนครับ
« ตอบกลับ #2 เมื่อ: 13 ก.พ. 62 , 14:59:24 »
ขอเพิ่มเติมอีก 1 รูปแบบนะครับ
ข้อดีคือ ไม่ว่ารูปแบบของเลขบัตรประชาชน จะเป็นแบบ มี - กั้น เช่น 1-2345-67891-23-4
หรือจะแบบมีเฉพาะตัวเลข 1234567891234 ก็ตาม ตัวเลขที่ระบุลองในช่องก็จะแสดงได้ตรงครับ
อาจจะยากกว่าหน่อยนะครับ ลองศึกษาดู

ที่ตัวรายงาน กำหนดให้แสดง เลขบัตรประชาชน โดยดึงเลขบัตรประชาชน(PID) มาจาก ID ของ Record นั้น
ส่วนชื่อ textbox ทั้ง 13 อันนั้นผมตั้งชื่อว่า P1 ถึง P13
โค๊ด: [Select]
Private Sub Report_Load()
If Not IsNull(DLookup("PID", "Table1", "ID =" & Me.ID & "")) Then
Dim myPID As String
Dim i As Integer
myPID = onlyDigits(DLookup("PID", "Table1", "ID =" & Me.ID & ""))
For i = 1 To 13
If Not IsNull(myPID) Then
Me("P" & i) = Mid(myPID, i, 1)
End If
Next
End If
End Sub

ที่ Module สร้าง Function ไว้ใช้งานได้หลายๆที่
โค๊ด: [Select]
Function onlyDigits(s As String) As String  'สร้าง Fuction ให้เก็บค่าเฉพาะตัวเลขไว้ครับ
    Dim retval As String
    Dim i As Integer
    retval = ""
    For i = 1 To Len(s)
        If Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= "9" Then
            retval = retval + Mid(s, i, 1)
        End If
    Next
    onlyDigits = retval
End Function

ตัวอย่างด้านล่างคับ ถ้าจะใช้แค่ตัวรายงานดู Code จากตัวรายงานได้เลยครับ ใช้การ Dlookup จาก Record มาแสดง เลย
« แก้ไขครั้งสุดท้าย: 13 ก.พ. 62 , 15:55:21 โดย ปิ่นณรงค์ »
:love: :grin:
 


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