การ run number โดยไม่ใช้ autonumber



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

27 มิ.ย. 61 , 17:48:04
อ่าน 603 ครั้ง

siri

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

  • ขอบคุณ ไท.Access

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

การ run number โดยไม่ใช้ autonumber
« เมื่อ: 27 มิ.ย. 61 , 17:48:04 »
รบกวนสอบถามนะคะ มือใหม่มากๆ ต้องการ การ run number โดยไม่ใช้ autonumber จุดประสงค์เพื่อให้ข้อมูลซ้ำกันได้ แต่ต้องการให้แสดงค่าเริ่มต้นเมื่อเพิ่มระเบียนใหม่ ต้องการให้ไปเอาค่า number ในระเบียนสุดท้ายมา + 1 ตรง sub on click ต้องกำหนดอย่างไรคะ หรือมีวิธีอื่นแบบไหน รบกวนผู้รู้ด้วยนะคะ เพิ่งหัดทำครั้งแรกค่ะ ความรู้งูๆปลาๆมากๆ
« แก้ไขครั้งสุดท้าย: 27 มิ.ย. 61 , 17:54:19 โดย siri »

 

28 มิ.ย. 61 , 10:33:30
ตอบกลับ #1

ปิ่นณรงค์

: การ run number โดยไม่ใช้ autonumber
« ตอบกลับ #1 เมื่อ: 28 มิ.ย. 61 , 10:33:30 »
รบกวนสอบถามนะคะ มือใหม่มากๆ ต้องการ การ run number โดยไม่ใช้ autonumber จุดประสงค์เพื่อให้ข้อมูลซ้ำกันได้ แต่ต้องการให้แสดงค่าเริ่มต้นเมื่อเพิ่มระเบียนใหม่ ต้องการให้ไปเอาค่า number ในระเบียนสุดท้ายมา + 1 ตรง sub on click ต้องกำหนดอย่างไรคะ หรือมีวิธีอื่นแบบไหน รบกวนผู้รู้ด้วยนะคะ เพิ่งหัดทำครั้งแรกค่ะ ความรู้งูๆปลาๆมากๆ

ฟอร์มที่จะสร้างเป็นแบบไหนครับ
อันนี้เป็นตัวอย่าง การสร้าง Running Number แทน AutoID นะครับ
ใช้การค้นหาค่าส่าสุดจากตารางเป้าหมายแล้วนำมา+1 เมื่อกดเปลี่ยนระเบียนใหม่

คำสั่งบน Module
โค๊ด: [Select]
Function getDigits(s As String) As String
    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
    getDigits = retval
End Function


คำสั่งที่ปุ่ม CommandBotton ที่ใช้กดเพื่อขึ้นระเบียนใหม่

โค๊ด: [Select]
Private Sub AddNewRecord_Click()
DoCmd.GoToRecord , , acNewRec
If Me.NewRecord = True Then
    Dim strOldID As String
    Dim lngCurrentNumber As Long
    Dim lngNextNumber As Long
   
    If IsNull(DLast("[NO]", "tblDATA")) Then
    Me.No = "1"
    Else
    strOldID = DLast("[NO]", "tblDATA")
    Debug.Print strOldID
   
    lngCurrentNumber = getDigits(strOldID)
    Debug.Print lngCurrentNumber
    lngNextNumber = lngCurrentNumber + 1
    Debug.Print lngNextNumber
 
    Me.No = lngNextNumber
   
End If
      End If
     
End Sub

หมายเหตุ
tblDATA คือตารางที่ Bound กับฟอร์ม

DLast("[NO]", "tblDATA ส่วน NO นี้คือชื่อ Field ในตารางที่จะหาค่าล่าสุดเพื่อมา Running Number

ตัวอย่างด้านล่าง
« แก้ไขครั้งสุดท้าย: 28 มิ.ย. 61 , 10:48:11 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: siri

28 มิ.ย. 61 , 11:46:45
ตอบกลับ #2

siri

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

  • ขอบคุณ ไท.Access

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

: การ run number โดยไม่ใช้ autonumber
« ตอบกลับ #2 เมื่อ: 28 มิ.ย. 61 , 11:46:45 »
ขอบคุณมากนะคะ  จะลองดูคะ

 

28 มิ.ย. 61 , 11:55:49
ตอบกลับ #3

UnKnown

: การ run number โดยไม่ใช้ autonumber
« ตอบกลับ #3 เมื่อ: 28 มิ.ย. 61 , 11:55:49 »
หรือลองดูแนวทางครับ ผลการค้นหา AutoNo = Format

 
โพสต์นี้ได้รับคำขอบคุณจาก: siri


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