Code Running No อีกแบบ ดังนี้ YYMM-xxxx
กระทู้เก่าบอร์ด อ.Yeadram

 5,755   13
URL.หัวข้อ / URL
Code Running No อีกแบบ ดังนี้ YYMM-xxxx

พอดีไปตามที่ Pantip มา เลยนำมาฝากครับ
Code Running No อีกแบบดังนี้ YYMM-xxxx
โดย tblSell13 คือ ชื่อ Table
และ ID คือ ชื่อ Field


Private Sub ID_DblClick(Cancel As Integer)
Dim strDate As String
Dim intNum As Integer, intMax As Integer
Dim strSuffix As String

strDate = Format(Date, "yymm")

If Me.ID = "" Or IsNull(Me.ID) Then
        If IsNull(DMax("Val(Mid([ID],6))", "tblSell13", "Left([ID],4) = '" & strDate & " '")) Then
            Me.ID = strDate & "-" & "001"
            Debug.Print "1"
        Else
            intMax = DMax("Val(Mid([ID],6))", "tblSell13", "Left([ID],4) = '" & strDate & " '")
            intMax = intMax + 1
            Me.ID = strDate & "-" & Format(intMax, "000")
            Debug.Print "1"
        End If

End If

End Sub

ขอบพระคุณมากๆ ครับ

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

1 @R01790
หนูสนใจ Code นี้มากค่ะเพราะดูแล้วน่าจะเกี่ยวกับพวกวันเดือนปี ที่หนูกำีลังพยายามหารูปแบบใหม่ๆมาประยุกต์ใช้ค่ะ อยากทราบว่า Code นี้ใช้อย่างไรและให้ผลออกมาในลักษณะไหนคะ
2 @R01793
ในฟอร์มนี้
-มีแหล่งข้อมูลมาจากตาราง ชื่อ tblSell13
-มี textbox ที่ใช้แสดงผลเลขที่ และใช้บันทึกเลขที่ แบบอัตโนมัติ
-textbox ตัวนี้ ชื่อ ID
-เลขที่แบบอัตโนมัติ จะอยู่ในรูปแบบ YYMM-xxx
โดยที่
   - xxx คือเลขรันนิ่ง สามหลัก
   - จะเริ่ม ที่ 001 เมื่อขึ้นเดือนใหม่


ในตาราง มี ฟิลด์ เก็บเลขที่ ชื่อ ID

การทำงานคือ เมื่อเปิดฟอร์มขึ้นมา ถ้าเป็นเรคคอร์ดเก่า (มีข้อมูลเก่าอยู่) โค้ดนี้จะไม่ทำงาน
แต่ถ้าเป็นการเพิ่มเรคคอร์ดใหม่ (ฟอร์มจะยังไม่มีข้อมูล) เราต้องการเลขที่ถัดไปโดยอัตโนมัติ ให้คลิ๊ก ที่ textbox ตัวนี้ ครับ
3 @R01801
เพื่อสนับกระทู้นี้ของท่าน Suchat/ชลบุรี

จึงขอส่งตัวอย่างที่ดัดแปลงจากตัวอย่างที่ได้จากเวปท่านอาจารย์สุภาพ

ไปไว้ที่

www.gmail.com
userName : accboard
password : accgmail

ในหัวข้อ "ตัวอย่างการสร้าง Autonumber"
4 @R14316
ถ้าต้องการ ใส่ PC5510-001 ต้องทำไงครับ
5 @R14338
จากคำถามล่าสุดครับถ้าผมอยากให้ผลจาก Code ดังกล่าวเพิ่มขึ้นทีละ 1 แต่เพิ่มโดยแยกตามหมวดหมู่ครับ คือผมใช้ select case ให้ผลที่เกิดจาก combo box เป็นตัวกำหนดหมวดหมู่ เช่นถ้าเลือกค่าจาก combo box เป็น Truck ผมให้นำ 3 ตัวหน้ามาเริ่มต้นชุดตัวเลข TRK1211001 หาก record ถัดไปผมเลือก Chassis ให้ชุดตัวเลขเป็น CHA1211001 ถ้า record ที่ 3 ผมกลับมาเลือก Truck ให้ชุดตัวเลขนับต่อเป็น TRK1211002 สรุปคือ ให้ชุดตัวเลขเพิ่มขึ้นทีละ 1 แต่นับจากค่าสุดท้ายของแต่ละหมวดครับ ตอนนี้ผมติดปัญหาคือ ผมสามารถ run ชุดตัวเลขได้ตามนี้
TRK1211001
CHA1211002
TRK1211003

ซึ่งตัวเลขที่เพิ่มขึ้นไม่ได้นับแยกหมวดครับ
6 @R14341
ทำได้แล้วครับ ขอบคุณสำหรับ Code ด้านบนครับ เพิ่มเติมเล็กน้อยเท่านั้นก็เป็นไปตามต้องการครับ
7 @R14780
code นี้ได้นำไปลองใช้ค่ะ
พารันไปแล้วแรกๆ ก้ทำได้ดีค่ะ พอมันรันไปจนถึง YYMM-010 แล้วมันไม่ยอมบวกเลขต่อค่ะ จะแก้ไขยังไงได้บ้างคะ

ลองกลับไปลบเรคคอดเพื่อรันข้อมูลใหม่นะคะ แต่พอถึง 010 ก็ไม่ยอมบวกต่ออีก

รบกวนท่านผู้รู้ช่วยด้วยค่ะ
8 @R14790
ดูจากโค๊ดเจ้าของกระทู้ ไม่น่าจะผิดนะครับ น่าจะเป็นที่โค๊ดคุณ Peem มากกว่า ผมให้ข้อสังเกตุนิด จากปัญหาของคุณ เหมือนกับการไม่ใช้ฟังก์ชั่น Val() คือในคำสั่งจากตัวอย่าง

DMax("Val(Mid([ID],6))", "tblSell13", "Left([ID],4) = '" & strDate & " '")

หากไม่ใส่ฟังก์ชั่น Val()

DMax("Mid([ID],6)", "tblSell13", "Left([ID],4) = '" & strDate & " '")

ค่าที่ส่งกลับมามากที่สุดจะได้แค่ 9 ตลอด (มันจะเห็นแค่หลักเดียว) ทำให้บวก 1 แล้ว ก็เท่ากับ 10 แล้วครั้งต่อไปมันก็จะส่งค่าสูงสุดกลับมาเป็น 9 อีก ไม่ยอมเป็น 10 ซักที เพราะมันเห็น 10 เป็นแค่ 1 ทำให้ โค๊ดก็เอา 9 บวก 1 ตลอด จึงมี 10 ซ้ำๆ ไป

หากเป็นปัญหาแบบนี้ ให้คุณไปตรวจสอบโค๊ดว่าใส่ตรงกับตัวอย่างหรือไม่ ขาดฟังก์ชั่น Val() ในโค๊ดคุณหรือไม่ครับ
9 @R16182
พบปัญหาเครื่องที่ตั้งรูปแบบวันที่เป็น พ.ศ. ครับ มีวิธีกำหนดให้เก็บค่าเป็น ค.ศ. หรือไม่ครับ
10 @R16191
@ คุณKen
- หากใช้เครื่องเดียว และทำแบบง่ายๆเลย คุณก็ใช้การลบ 543 ไปเลยครับ เช่น
DateAdd("yyyy", -543, Date)
จากในตัวอย่างบรรทัด
strDate = Format(Date, "yymm")
ก็แก้ไขเป็น
strDate = Format(DateAdd("yyyy", -543, Date), "yymm")

- หากใช้กันหลายเครื่อง แต่ละเครื่องอาจกำหนดค่าปี ต่างกัน คุณอาจจำเป็นต้องเขียนคำสั่งขึ้นมาตรวจสอบการเซ็ท calendar type แต่ละเครื่องว่ากำหนดเป็น พ.ศ. หรือ ค.ศ. เพื่อให้รู้ว่าควรจะลบ 543 หรือไม่ต้อง
ดูที่นี้ครับ
11 @R19859
อยากได้ code ตัวนี้ แต่ password เปลี่ยนไปแล้ว จะหา password ได้ที่ไหนครับ
www.gmail.com
userName : accboard
password : accgmail
12 @R19860
รหัสผ่านของคุณเปลี่ยนแปลงเมื่อ 8 เดือนที่ผ่านมา
13 @R19861
http://www.thai-access.com/yeadram_view.php?topic_id=4183

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