กระทู้เก่าบอร์ด อ.Yeadram
1,341 4
URL.หัวข้อ /
URL
สอบถามเรื่องรันตัวเลขผสมตัวอักษรครับ
สอบถามการรันตัวเลขหน่อยครับ ผมได้ดูจากหลายกระทู้แล้วก็ยังงงอยู่ คือผมอยากจะรันเลขให้ได้แบบนี้ครับ
เช่น BR57/00001 โดย
BR คืออักษรที่เรากำหนดขึ้นเอง
57 คือปีพ.ศ. ซึ่งอยากให้เปลี่ยนเองเมื่อมีการขึ้นปีถัดไป
00001 คือ รันตัวเลข โดยอยากให้รันแค่ 5 digit เท่านั้น ตั้งแต่ 00001-99999 ประมาณนี้ครับ
ทั้งนี้การรันตัวเลขอยากให้รันโดยไม่ต้องสร้างปุ่มใดๆได้ไหมครับ คือเวลาจะเพิ่มเรคคอร์ดใหม่แล้วให้รันอัตโนมัติครับ
รบกวนผู้รู้ทีครับ ขอบคุณมากครับผม
เช่น 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 ตามไปครับ
*ถ้าอาจารย์ท่านไหนเห็นแล้วมีวิธีปรับแก้ที่เหมาะสมแนะนำได้นะครับ
Code นี้เป็นแค่ สร้าง Running มาใส่ไว้ในตัวแปร runbu นะครับ ยังไม่ได้มีการเอาไป update ใน record ต้องมีคำสั่งในการ update runbu เข้าไปใน record นั้นอีกทีครับ
ดูเป็นแนวคิดน่าจะได้ครับ หรือว่าถ้าทำแล้วมีวิธีดีกว่านี้โพสบอกนะครับผมจะได้ไปปรับใช้ให้โปรแกรมทำงานได้ดียิ่งขึ้นครับ
แต่เป็นโค้ดที่ผมมั่วขึ้นเองจากการค้นหาหลายๆที่แล้วเอามาใช้ตามความเข้าใจครับ ซึ่งแน่นอนประสิทธิภาพไม่ดีครับ แต่ผลที่ได้ก็ออกมาตามที่ต้องการครับ
ของผมจะเป็น 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
ขอบคุณมากๆครับผม ขอบคุณครับ
Time: 0.3636s