จากคำถาม 2013 อยากให้ทำคำตอบให้ดูครับ
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 303   10
URL.หัวข้อ / URL
จากคำถาม 2013 อยากให้ทำคำตอบให้ดูครับ

จากคำถาม 2013
สมมุติว่า ใน table1 มี 3 ฟิลด์ id, name, numCode ฟิลด์ id, name มีข้อมูลอยู่แล้ว
ืีnumCode เป็นฟิลด์ว่าง ทีนี้ถ้าเราจะ Update ข้อมูลในฟิลด์ numCode โดยให้ค่า
เริ่มจาก 1, 2, 3, 4 ...ืn ตามจำนวน records ที่มีอยู่ใน table หน่ะครับ ไม่ทราบว่าเรา
จะเขียนรูปแบบอย่างไรดีครับ รบกวนด้วยครับผม


โดยคุณ : wathito | วันที่ : 26 สิงหาคม 2546 | เวลา 15:43:58 น.

ความคิดเห็นที่ 1

ลองค้นด้วยคำว่า DMax( ดูครับ

มีตัวอย่างโค้ดเก่าๆ ให้ศึกษาด้วย

คือดูแล้วงง มาก เพราะไม่เข้าใจตัวอย่างที่เขายกมา อยากให้อาจารย์ช่วยหาคำตอบสำหรับคำถามนี้ครับ

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

1 @R04695
ลอง

Me.ID = DMax("[ID]","table1") + 1

2 @R04697
ประเด็นที่ต้องการถามคือ
ถ้าคีย์คนที่หนึ่งต้องคีย์ว่า 001 นายก 200
ต่อมาคีย์คนที่สองต้องคีย์ว่า 002 นายข ปัญหาคือตรงนี้ว่า ต้องการให้ช่องนี้นำค่าสูงสุดของฟิลด์นี้มาบวก 1

ขอบคุณมากนะครับ
(อาจารย์ตอบได้เร็วดีจัง)
3 @R04700
แสดงว่า ID เป็น Text

จะต้องใช้ Val() ช่วยแปลง Text ให้เป็น Number ก่อน

แล้วค่อยใช้ Format() แปลงให้เป็น Text อีกที

Dim intMax As Integer
intMax = DMax("Val([ID])","Table1") + 1
Me.ID = Format(intMax,"000")

ลองค้นด้วยคำว่า intMax เพิ่มเติมครับ จะมีโค้ดที่ทำงานแบบนี้ให้ศึกษาด้วย
4 @R04702
ผมอธิบายไม่ถูก

ผมลองส่งตัวอย่างคำถามมาให้ดูครับ อยู่หน้าฟอร์ม
5 @R04703
Dim intMax As Integer
intMax = DMax("Val([numcode])", "Table1") + 1
Me.numcode = Format(intMax, "00")
เอาไว้ที่ Lostfocus ของ ID ก็ได้นะ
6 @R04704
ขอโทษค่ะ ไม่ได้ เพราะถ้า Enter ทุกครั้ง ค่าที่ได้ก็จะเปลี่ยนทุกครั้ง
7 @R04707
ลองใส่เงื่อนไข

If Me.NewRecord Then
If Me.numcode = "" Or IsNull(Me.numcode) Then
' ใส่โค้ดข้างต้นในนี้
End If
End If
8 @R04709
Private Sub name_BeforeUpdate(Cancel As Integer)
Me.numcode = DMax("numcode", "table1") + 1
End Sub

น่าจะดีขึ้น
9 @R04718
จากโค้ดที่ให้ไว้ ทำได้แล้วครับ ขอบคุณจริง ๆ แต่ผมสงสัยอีกจุดนึง
คือถ้าต้องการให้ค่า numcode แสดงค่าก่อนหน้านี้ขึ้นมาต้องเปลี่ยนจากคำสั่ง Dmax เป็นตัวไหนครับ (หรือมีวิธีอื่นที่ดีกว่า)

Private Sub numcode_GotFocus()
Dim intMax As Long
If Me.NewRecord Then
If Me.numcode= "0" Or IsNull(Me.numcode) Then
intMax = DMax("Val([numcode])", "Table1") + 1
Me.numcode= Format(intMax, "00")
End If
End If
End Sub
10 @R04729
ลองตั้ง textbox ขึ้นมา โดยที่ไม่ต้อง +1 อีก 1 box วิ น่าจะเห็นกันชัดๆ กว่า ว่า numcode1 คือค่าใหม่ numcode2 (ที่ไม่ +1 คือค่าเก่า)
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0634s