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