รบกวนอาจารย์หน่อยค่ะไม่เข้าใจโค๊ดค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 1,257   4
URL.หัวข้อ / URL
รบกวนอาจารย์หน่อยค่ะไม่เข้าใจโค๊ดค่ะ

ก่อนอื่นต้องขออภัยอาจารย์ทุกๆท่านด้วยนะคะที่ทำให้ต้องเสียเวลา หนูเป็นมือใหม่น่ะค่ะ มีปัญหาเกี่ยวกับการทำ Auto Number ใน Form ค่ะ ก็ไปเจอกระทู้เก่าอยู่อันนึงค่ะ

คำตอบของคุณ krathok-man (R00057)
คือหนูไม่เข้าใจค่ะว่าตรงไหนแทนอะไร,ในฟอร์ม,ในQueryหรือในตาราง งงมากค่ะคิดว่าจะเอามาปรับใช้แต่ไม่สำเร็จสักที ไม่ทราบว่าต้องสร้าง ตารางใหม่หรือQueryใหม่ด้วยหรือเปล่าคะ กราบขอบพระคุณอาจารย์ทุกๆท่านที่สละเวลานะคะ

**คุณ krathok-man ได้ให้คำตอบถามว่า**


เขียนแบบ งูๆ ปลาๆ ถามอาจารย์สันติบ้าง หาจากWeb บ้าง แต่รับรองว่าใช้ได้ครับ
เพราะใช้มานาน การใช้ คือเอา primary key มาอ้างครับ
เช่น มี ID อยู่ก็ใช้
=rec1([id]) ครับ

แต่ผมใช้ บน FORM ถ้าใช้ ใน QUERY น่าจะคล้ายกันลองปรับเอานะครับ

Public Function Rec1(a As Variant) As Variant
    Dim rst As DAO.Recordset
    Set rst = Me.RecordsetClone
If rst.RecordCount > 0 Then
rst.MoveLast
rst.MoveFirst
Else: Exit Function
End If
            Do Until rst.EOF
            If rst!ID = a Then
               Rec1 = rst.AbsolutePosition + 1
               Exit Function
              End If
            rst.MoveNext
            Loop
        rst.Close
        Set rst = Nothing
If Me.NewRecord Then GoTo Rec1_Exit
Rec1_Exit:
On Error Resume Next
rst.Close: Set rst = Nothing
Exit Function
End Function

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

1 @R17902
ลองอ่านที่นี่ดูครับ
http://www.thai-access.com/yeadram_view.php?topic_id=3098&page=1
จะเห็นว่ามีหลายวิธี
เช่น กำหนดให้ field เป็นแบบ AutoNumber, กำหนด ที่ default ของ control ด้วย function DMax(...) + 1, หรือเขียน code เอง
ลองดูว่าแบบไหนที่เข้าใจที่สุด ก็ใช้ไปก่อน
2 @R17908
คุณหมายถึงการทำ running number บนฟอร์มหรือเปล่าครับ ถ้าใช่ลองค้นหาคำว่า running number ดูครับ
3 @R17913
กราบขอบพระคุณอาจารย์ PichaiTC และอาจารย์TTT มากนะคะ
ทีนี้หนูมีอีกคำถามค่ะ คือถ้าหนูต้องการให้ตัวเลขมันวนและซํ้ากันได้ล่ะคะ
เช่น                                                        
                  ฟิลด์1= Machine_ID | ฟิลด์2=Count    
       สั่งงานเครื่องจักรตัวที่ 1 ครั้งที่ 1 จะได้ M1 | 1
       สั่งงานเครื่องจักรตัวที่ 1 ครั้งที่ 2 จะได้ M1 | 2
       สั่งงานเครื่องจักรตัวที่ 1 ครั้งที่ 3 จะได้ M1 | 3
       สั่งงานเครื่องจักรตัวที่ 2 ครั้งที่ 1 จะได้ M2 | 1
       สั่งงานเครื่องจักรตัวที่ 2 ครั้งที่ 2 จะได้ M2 | 2
       สั่งงานเครื่องจักรตัวที่ 2 ครั้งที่ 3 จะได้ M2 | 3

ความต้องการของหนูคือ ฟิลด์2=Count เป็นตัวเลขเดี่ยวๆ ไม่นำเอา Machine_ID มาผูกด้วย

Machine_ID เป็นเพียงตัวอ้างอิงค่ะ
4 @R17918
อื่ม ถ้าคุณต้องการทำ Running Number ยังไงก็ต้องมีฟิลด์เก็บค่าลักษณะเหมือน ID สำหรับไว้สำหรับเวลาเปรียบเทียบอะไรก่อนหลังครับ
ไม่รู้จะตรงตามความต้องการหรือเปล่านะครับผมยกตัวอย่างให้ดูแล้วกัน

ตัวอย่าง สมมุติผมมีตารางเก็บข้อมูลชื่อ Table1 ดังนี้:

NO        Machine_ID
1           สั่งงานเครื่องจักรตัวที่ 1
2           สั่งงานเครื่องจักรตัวที่ 1
3           สั่งงานเครื่องจักรตัวที่ 1
4           สั่งงานเครื่องจักรตัวที่ 2
5           สั่งงานเครื่องจักรตัวที่ 2
6           สั่งงานเครื่องจักรตัวที่ 2

- ผมต้องการทำฟิลด์ Running Number ให้รันตัวเลขเรียงลำดับ 1...2...3 โดยแบ่งกลุ่มนับ เครื่องจักรตัวที่ 1 ก็นับแยกจากเครื่องจักรตัวที่ 2 ดังนี้:

NO        Machine_ID                    Count
1           สั่งงานเครื่องจักรตัวที่ 1          1
2           สั่งงานเครื่องจักรตัวที่ 1          2
3           สั่งงานเครื่องจักรตัวที่ 1          3
4           สั่งงานเครื่องจักรตัวที่ 2          1
5           สั่งงานเครื่องจักรตัวที่ 2          2
6           สั่งงานเครื่องจักรตัวที่ 2          3

ผมจะเขียน SQL ในคิวรี่ประมาณนี้

SELECT T1.[NO], T1.Machine_ID, (SELECT Count(*) FROM Table1 AS T2 WHERE (T2.Machine_ID = T1.Machine_ID) AND (T2.NO <= T1.NO)) AS [Count]
FROM Table1 AS T1
ORDER BY T1.[NO], T1.Machine_ID;

ปรับใช้ดูครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3471s