สอบถามต้องการทำรูปแบบเลขที่เอกสารแบบauto
กระทู้เก่าบอร์ด อ.Yeadram

 733   4
URL.หัวข้อ / URL
สอบถามต้องการทำรูปแบบเลขที่เอกสารแบบauto

สอบถามครับ ผมได้ศึกษาและดูตัวอย่างการ Run เลขที่ เอกสาร Auto ในบอร์ดนี้แล้ว สามารถทำเป็นรูปแบบ yy-mm-xxx และเพิ่มขึ้นได้ แต่ความต้องการเพิ่มเติมคือ เมื่อเลือกCombo box เช่า A1 A2 จะไปเพิ่ม ค่า รูปแบบเป็น A1-yy-mm-xx1 และเลขก็จะrunปกติ เมือเลือก Combo เป็น A2 ก็จะเป็น A2-yy-mm-xx1 ผมลองดูในบอร์ดมีตัวอย่างแต่ลองเขียน Code ตามก็ไม่ได้ผลลัพธ์ตามต้องการ คือเลขที่ยอม Auto เพิ่มให้ รบกวนใครตย ฐานข้อมูลนี้บ้าง อยากได้ตัวอย่างมาแกะและทำตาม ขอบคุณมากครับ supachaisun At gmail.com

4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R23273
Private Sub cmdNewma_Click()
MsgBox "â»Ãá¡ÃÁ¡ÓÅѧà¾ÔèÁ¢éÍÁÙÅãËÁè."


Dim strDate As String
Dim intNum As Integer, intMax As Integer
Dim strSuffix As String


strSuffix = Deptref.Value
strDate = Format(Date, "yymm")
strDate = Right(bYear(Date), 2) & Format(Date, "mm")


If Me.ID = "" Or IsNull(Me.ID) Then
        If IsNull(DMax("Val(Mid([ID],8))", "Ma-Cases", "Left([ID],4) = '" & strDate & " '")) Then
            Me.ID = strSuffix & "-" & strDate & "-" & "001"
            Debug.Print "1"
        Else
            intMax = DMax("Val(Mid([ID],8))", "Ma-Cases", "Left([ID],4) = '" & strDate & " '")
            intMax = intMax + 1
            Me.ID = strSuffix & "-" & strDate & "-" & Format(intMax, "000")
            Debug.Print "1"
        End If
        End If
      
End Sub
code ส่วนใหญ่ดูจากในบอร์ดนี้นะครับ ตัวแปร Deptref.Value คือ ค่าใน
Combo box มันได้แค่ xx-xxxx-xx1 ครับ แล้วต่อจากนั้นไม่เพิ่มให้ ไม่ทราบว่าผมต้องทำอย่างไรครับ ขอบคุณครับ
2 @R23275
โค้ดที่คุณแสดง กับความต้องการ(เท่าที่เข้าใจ) พออ่านๆไปแล้วยิ่งสับสนและขัดแย้งกัน เลยไม่รู้ว่าที่ต้องการเป็นอย่างไรกันแน่ เอาเป็นว่า ถ้าเลือกคอมโบค่าอะไร ก็เอาค่านั้นเป็นตัวนำหน้า (prefix ไม่ใช่ suffix) ตามด้วยปี 2 หลัก(จากฟังก์ชั่น bYear ซึ่งเข้าใจว่าคงจะเป็นปีพ.ศ.) ตามด้วยเดือนปัจจุบัน 2 หลัก ตามด้วยค่าตัวเลข 3 หลักรันต่อเนื่องกันไป ค่าตัวเลขนี้ขึ้นกับทั้งค่าของคอมโบ และปี และเดือนด้วย ตัวอย่างลำดับเหตุการณ์ของผลลัพธ์ที่สร้างออกมาอาจเป็น A1-6004-001, A2-0604-001, A1-6004-002, A2-0604-002 ถ้าอย่างนี้ โค้ดก็จะเป็น

Private Sub cmdNewma_Click()
MsgBox "â»Ãá¡ÃÁ¡ÓÅѧà¾ÔèÁ¢éÍÁÙÅãËÁè."

Dim intMax as Variant
Dim strWhere as String

If Me.ID = "" Or IsNull(Me.ID) Then
   strWhere = Me.Deptref + "-" + Right(bYear(Date), 2) + Format(Date, "mm")
   intMax = DMax("ID", "Ma-Cases", "ID Like '" + strWhere + "*' ")
   If isnull(intMax) then
      Me.ID = strWhere + "-001"
   Else
      Me.ID = strWhere + "-" + Format$(intMax, "000")
   End If
End If

End Sub

โค้ดไม่ได้ทดสอบนะ คุณลองทดสอบผลลัพธ์ดูอีกทีว่าถูกต้องไหม
3 @R23276
แก้ไข : ต้องเป็น

   Else
      Me.ID = strWhere + "-" + Format$(Val(Right(intMax,3)) + 1, "000")
   End If
4 @R23277
ขอบคุณมากครับ เขียนผิดเขียนถูกครับ เคยเขียนแบบไม่ได้ใช่ Code ที่ซับซ้อนนะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3138s