รบกวนสอบถามการรันเลขครับ
กระทู้เก่าบอร์ด อ.Yeadram

 1,079   6
URL.หัวข้อ / URL
รบกวนสอบถามการรันเลขครับ

ผมจัดทำทะเบียนซองเอกสาร โดยจัดเก็บซองตามตู้
ซึ่งตู้มี 30 ตู้
ใน 1 ตู้เอกสาร มี 5 ชั้น
ในแต่ละชั้นจัดเก็บได้ 120 ซอง
เช่น
1/1/1                     หมายถึง ตู้ 1 ชั้น 1 ลำดับที่ 1
1/1/2                     หมายถึง ตู้ 1 ชั้น 1 ลำดับที่ 2
ไปจนถึง
1/1/120                 หมายถึง ตู้ 1 ชั้น 1 ลำดับที่ 120

พอรันถึงเลข 120 ให้ขึ้นชั้นใหม่เป็น

1/2/1                     หมายถึง ตู้ 1 ชั้น 2 ลำดับที่ 1
1/2/2                     หมายถึง ตู้ 1 ชั้น 2 ลำดับที่ 2
ไปจนถึง
1/2/120                 หมายถึง ตู้ 1 ชั้น 2 ลำดับที่ 120

เมื่อรันถึง
1/5/120
ก็ให้ขึ้นตู้ใหม่เป็น
2/1/1

ถ้าหากต้องการรันข้อมูลแบบนี้สามารถทำได้ไหม อย่างไรบ้างครับ ขอบคุณมากครับ

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

1 @R21581
ลองเขียนฟังก์ชั่นประมาณนี้

Function AutoID(ID As String) As String
    Dim IDKey() As String
    Dim i As Integer
    IDKey = Split(ID, "/")
    If IDKey(2) + 1 > 120 Then
        IDKey(2) = 1
        If IDKey(1) + 1 > 5 Then
            IDKey(1) = 1
            If IDKey(0) + 1 > 30 Then
               IDKey(0) = 30
               IDKey(1) = 5
               IDKey(2) = 120
            Else
               IDKey(0) = IDKey(0) + 1
            End If
        Else
            IDKey(1) = IDKey(1) + 1
        End If
    Else
        IDKey(2) = IDKey(2) + 1
    End If
    AutoID = IDKey(0) & "/" & IDKey(1) & "/" & IDKey(2)
End Function

ปรับใช้ดูครับ

ไฟล์ตัวอย่าง
2 @R21595
ขอบพระคุณมากครับผม
3 @R21598
Private Sub Form_Load()
    Me.RecordSource = "SELECT * FROM Table1 WHERE Cabinet LIKE '" & Text0 & "*';"
    DoCmd.GoToRecord , , acLast
    Me.Text0 = "1/1/1"
End Sub

Private Sub cmd_Click()
    Me.Text0 = AutoID(Me.Text0)
    DoEvents
End Sub

Function AutoID(ID As String) As String
    Dim IDKey() As String
    Dim i As Integer
    IDKey = Split(ID, "/")
    If IDKey(2) + 1 > 120 Then
        IDKey(2) = 1
        If IDKey(1) + 1 > 5 Then
            IDKey(1) = 1
            If IDKey(0) + 1 > 30 Then
               IDKey(0) = 30
               IDKey(1) = 5
               IDKey(2) = 120
            Else
               IDKey(0) = IDKey(0) + 1
            End If
        Else
            IDKey(1) = IDKey(1) + 1
        End If
    Else
        IDKey(2) = IDKey(2) + 1
    End If
    AutoID = IDKey(0) & "/" & IDKey(1) & "/" & IDKey(2)
End Function

ผมลองรันแล้วเวลาเปิดหน้าฟอร์มมา มันไม่อ้างอิงที่เรคคอร์ดสุดท้ายครับ แต่มันเริ่มต้นที่ 1/1/1 ใหม่อ่ะคับ รบกวนดูให้หน่อยคับว่าผิดตรงไหนครับผม ขอบคุณมากครับผม
4 @R21600
คือคุณต้องหาค่าเลขมากสุดให้ได้ก่อนครับ แล้วนำเลขนั้นมาใส่ในฟังก์ชั่นที่ให้ไป มันจะคำนวณเพิ่มค่าตามเงื่อนไข
สำคัญคือคุณต้องหาค่าสูงสุดให้ได้ ซึ่งจากรูปแบบเลขที่คุณต้องการ คงต้องเขียนฟังก์ชันการหาค่า Max อีก ลองโหลดตัวอย่างไปดูอีกครั้งครั้งครับ ลองศึกษาดู
ตัวอย่าง
5 @R21606
ขอบคุณมากครับผม
6 @R21608
ได้ความรู้ดีครับ ผมมือใหม่ เพิ่งเข้ามาเรียนรู้ครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2863s