bagpacker2010 โพสต์ 2018-10-10 11:48:25

สอบถามวิธีการ set format เพิ่ม 0 ในข้อความ string

ขอสอบถามเรื่องวิธีการเพิ่ม เลข 0 ในข้อความหน่อยครับ

ตัวอย่างข้อมูล เกี่ยวกับป้ายทะเบียนรถ
ระบกำหนดให้ใส่ข้อมูลลง database ได้ 7 ตัวอักษร ถ้าไม่ไม่ครบ 7 ตัวอักษรก็ให้ใส่ 0 ข้างหน้า แต่ว่าข้อมูลที่ได้รับมามีดังนี้

ข้อมูลตัวอย่าง         
1กข-1234 => 1กข1234
กข-123   => 0กข0123
กข-12      => 0กข0012

ต้องสร้าง function แบบไหนคับ ถึงจะเติม 0 ก่อนหน้า string และตรงกลาง string.



bagpacker2010 โพสต์ 2018-10-12 14:40:48

ได้แล้วครับ ใช้ mid(string,start,length) สำหรับเชค

thongkorn โพสต์ 2018-10-15 19:01:14

อาจจะมาตอบให้ช้าไปสักนิด แต่คิดว่าคงมีประโยชน์ให้กับคนอื่นๆด้วยล่ะกันครับ ...
    Dim Sample As String
    '// ค่าทดสอบ
    'Sample = "1กข-1234"
    'Sample = "กข-123"
    Sample = "กข-12"
    'Sample = "กข12"
    '// หาเครื่องหมาย - ... หากเจอ InStr จะรีเทิร์นค่ากลับมากกว่า 0
    If InStr(Sample, "-") > 0 Then
      Dim sArr() As String
      '// แยกชุดข้อมูลออกจากกัน
      sArr = Split(Sample, "-")
      
      '// ข้อมูลชุดแรกต้องการ 3 หลัก
      '// ไม่ต้องทดสอบเงื่อนไขก็ใช้การเรียงต่อ "000" & "กข" = "000กข"
      '// จากนั้นให้นับจากทางขวามา 3 หลัก ก็จะได้ "0กข"
      sArr(0) = Right$("000" & sArr(0), 3)
      '// ข้อมูลชุดสองต้องการ 4 หลัก
      sArr(1) = Right$("0000" & sArr(1), 4)
    Else
      '// หาเครื่องหมาย - ไม่พบ
      MsgBox "Not Found - Sign!!!"
      Exit Sub
    End If
    '// คำตอบ
    MsgBox sArr(0) & sArr(1)



bagpacker2010 โพสต์ 2018-10-22 11:40:03

แก้ไขครั้งสุดท้ายโดย bagpacker2010 เมื่อ 2018-10-22 12:23

ขอบคุณครับอาจารย์ ผมใช้select เล่นซะยาวเลยSub CheckNumberPlateFormat()

Select Case Len(NumberPlateOriginal)
Case Is = 2
NumberPlateConverted = "00" & Mid(NumberPlateOriginal, 1, 1) & "000" & Mid(NumberPlateOriginal, 2, 1)
Case Is = 3

    Select Case Mid(NumberPlateOriginal, 2, 1)
    Case "-"
    NumberPlateConverted = "00" & Mid(NumberPlateOriginal, 1, 1) & "000" & Mid(NumberPlateOriginal, 3, 1)
    Case "1"
    NumberPlateConverted = "00" & Mid(NumberPlateOriginal, 1, 1) & "00" & Mid(NumberPlateOriginal, 2, 2)
    Case "2"
    NumberPlateConverted = "00" & Mid(NumberPlateOriginal, 1, 1) & "00" & Mid(NumberPlateOriginal, 2, 2)
    Case "3"
    NumberPlateConverted = "00" & Mid(NumberPlateOriginal, 1, 1) & "00" & Mid(NumberPlateOriginal, 2, 2)
    Case "4"
    NumberPlateConverted = "00" & Mid(NumberPlateOriginal, 1, 1) & "00" & Mid(NumberPlateOriginal, 2, 2)
    Case "5"
    NumberPlateConverted = "00" & Mid(NumberPlateOriginal, 1, 1) & "00" & Mid(NumberPlateOriginal, 2, 2)
    Case "6"
    NumberPlateConverted = "00" & Mid(NumberPlateOriginal, 1, 1) & "00" & Mid(NumberPlateOriginal, 2, 2)
    Case "7"
    NumberPlateConverted = "00" & Mid(NumberPlateOriginal, 1, 1) & "00" & Mid(NumberPlateOriginal, 2, 2)
    Case "8"
    NumberPlateConverted = "00" & Mid(NumberPlateOriginal, 1, 1) & "00" & Mid(NumberPlateOriginal, 2, 2)
.
.
.
.
.
ที่มาของเรื่องนี้นื่องจาก ข้อมูลป้ายทะเบียนรับมาจากหน้าเว็บที่ user กรอก บางครั้งก็รูปแบบแตกต่างกัน (เนื่องจากไม่ได้กำหนด format การกรอกข้อมูลไว้ตั้งแต่ต้น)
ผมบอกข้อมูลตัวอย่างไปไม่ครบ ขาดไปอีกอย่างคือ บางที user กรอกมา "กข12" เราก็ต้องมาแปลงให้เป็น "0กข0012"
ก่อนนำส่งข้อมูลของอีกโปรแกรมนึง





หน้า: [1]
ดูในรูปแบบกติ: สอบถามวิธีการ set format เพิ่ม 0 ในข้อความ string