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

 1,341   4
URL.หัวข้อ / URL
สอบถามเรื่องรันตัวเลขผสมตัวอักษรครับ

สอบถามการรันตัวเลขหน่อยครับ ผมได้ดูจากหลายกระทู้แล้วก็ยังงงอยู่ คือผมอยากจะรันเลขให้ได้แบบนี้ครับ
เช่น BR57/00001 โดย
BR คืออักษรที่เรากำหนดขึ้นเอง
57 คือปีพ.ศ. ซึ่งอยากให้เปลี่ยนเองเมื่อมีการขึ้นปีถัดไป
00001 คือ รันตัวเลข โดยอยากให้รันแค่ 5 digit เท่านั้น ตั้งแต่ 00001-99999 ประมาณนี้ครับ

ทั้งนี้การรันตัวเลขอยากให้รันโดยไม่ต้องสร้างปุ่มใดๆได้ไหมครับ คือเวลาจะเพิ่มเรคคอร์ดใหม่แล้วให้รันอัตโนมัติครับ

รบกวนผู้รู้ทีครับ ขอบคุณมากครับผม

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

1 @R18122
คงต้องเขียนฟังก์ซั่นแล้วค่ะ
2 @R18123
ขอบคุณครับเขียนไงหนอ - -*
3 @R18129
ผมมีโค้ด VBA ที่ใช้สำหรับรูปแบบประมาณนี้ครับ
แต่เป็นโค้ดที่ผมมั่วขึ้นเองจากการค้นหาหลายๆที่แล้วเอามาใช้ตามความเข้าใจครับ ซึ่งแน่นอนประสิทธิภาพไม่ดีครับ แต่ผลที่ได้ก็ออกมาตามที่ต้องการครับ

ของผมจะเป็น BU + ปี + 00001 โดยปีที่ผมใช้เป็นปีของเอกสาร
และการrunning ของผมจะสร้าง Record ขึ้นมาก่อนแล้วจึง running ตามไปครับ

*ถ้าอาจารย์ท่านไหนเห็นแล้วมีวิธีปรับแก้ที่เหมาะสมแนะนำได้นะครับ
        'Running BU
        'DoCmd.SetWarnings False
        Dim runbu As String
'Check for 1st roll of Table ส่วนนี้ดูว่าเป็นรายการแรกสุดของตารางหรือไม่ครับ
        Dim rs2 As DAO.Recordset, SQL4 As String       
        SQL4 = "SELECT count(*) AS DC2 FROM [Table] WHERE [Running NO] is NOT NULL " & " ;"
            Set rs2 = CurrentDb.OpenRecordset(SQL4)
        If rs2!DC2 = 0 Then
        runbu = "BU" & Year(date) & "00001"
        rs2.Close: Set rs2 = Nothing
        Else

'Check Running Year ถ้าไม่ใช่รายการแรกสุดของตาราง ตรวจสอบต่อว่าปีที่จะ Running นั้นมีรายการอยู่แล้วหรือไม่ถ้ามีแล้วให้ Running ต่อจากเดิม
        Dim rs1 As DAO.Recordset, SQL3 As String
            SQL3 = "SELECT count(*) AS DC1 FROM [Table] WHERE Mid([Running NO],3,4)= " & _
            "'" & Year(date) & "'" & " ;"
            Set rs1 = CurrentDb.OpenRecordset(SQL3)
            
            If rs1!dc1 > 0 Then
               Dim rs As DAO.Recordset, SQL2 As String
               SQL2 = "SELECT Max(Int(Mid([Running NO],7))) AS DC FROM [Table] " & _
               "WHERE Year([date]) = " & _
               "'" & Year(date) & "'" & " ;"
               Set rs = CurrentDb.OpenRecordset(SQL2)
               runbu = "BU" & Year(date) & Format(rs!DC + 1, "00000")
            
               rs.Close: Set rs = Nothing
            Else
'ถ้าปีที่จะ Running ไม่เคยมีมาก่อนให้เริ่ม running ที่ 00001
               runbu = "BU" & Year(date) & "00001"
            End If
        rs1.Close: Set rs1 = Nothing
        End If


Code นี้เป็นแค่ สร้าง Running มาใส่ไว้ในตัวแปร runbu นะครับ ยังไม่ได้มีการเอาไป update ใน record ต้องมีคำสั่งในการ update runbu เข้าไปใน record นั้นอีกทีครับ
ดูเป็นแนวคิดน่าจะได้ครับ หรือว่าถ้าทำแล้วมีวิธีดีกว่านี้โพสบอกนะครับผมจะได้ไปปรับใช้ให้โปรแกรมทำงานได้ดียิ่งขึ้นครับ
4 @R18131
ขอบคุณมากๆครับผม ขอบคุณครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3636s