รบกวน อ.สุภาพ ด้วยครับ เกี่ยงกับRunning No ( Y-MMxxx)
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 349   7
URL.หัวข้อ / URL
รบกวน อ.สุภาพ ด้วยครับ เกี่ยงกับRunning No ( Y-MMxxx)

คือผมต้องการให้ Double Click ที่ Field หนึ่งใน Sub Form 
แล้วให้ Running Auto ใน Current Record นั้นๆ 
เช่น เมื่อเปิด Form เพื่อ Key ข้อมูล  เมื่อ Key มาถึงในส่วนของ Sub Form 
ในส่วน Current Record (แถว) ที่ 1  เมื่อ Double Click Field A = 2-04001 
และเมื่อขึ้น Record ที่ 2 (เมื่อ Enter Filed สุดท้าย) ก็จะเข้าสู่ 
 ในส่วน Current Record (แถว) ที่ 2  เมื่อ Double Click Field A = 2-04002 
และ เมื่อมีการเปิด Form ขึ้นมาใหม๋ ก็ให้ Run ต่อเนื่องไปเรื่อยๆ ครับ 
รบกวน อ.สุภาพ ด้วยครับ 
ด้วยความเคารพ และนับถือ 
Suchat 
ชลบุรี 

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

1 @R00243
สมมติว่า มีตารางชื่อ Table3 แล้วมีฟีลด์ชื่อ A กำหนดให้เป็น Text type ขนาดความกว้าง 7 ตัวอักษร โค้ดที่ฟอร์มจะเป็นดังนี้ครับ Private Sub a_DblClick(Cancel As Integer) Dim strPrefix As String, intMax As Integer strPrefix = "2-04" If Me.a <> "" Or IsNull(Me.a) Then If Nz(DCount("a", "table3", "left(a,4)='" & strPrefix & "'"), 0) = 0 Then Me.a = strPrefix & "001" Else intMax = DMax("val(right(a,3))", "table3", "left(a,4)='" & strPrefix & "'") Me.a = strPrefix & Format(intMax + 1, "000") End If End If End Sub จากโค้ดผมจะใช้ DCount(), Left(), DMax(), Val(), Right() และ Format() เข้ามาช่วยด้วย ตัวอย่างจริงอยู่ที่ http://agserver.kku.ac.th/basiceng/autonum.zip ครับ
2 @R00247
อ. สุภาพ ครับ ผมลองดูแล้วครับ แต่ว่าเมื่อขึ้นเดือนใหม่ ในส่วนของ Y-MM ก็ยังคงเป็น 2-04 อยู่ เมื่อเปลี่ยนเป็นเดือนใหม่ ผมเลยลองเปลี่ยนแปลง Code ดังนี้ Dim strPrefix As String, strPrefix1 As String, intMax As Integer strPrefix1 = Format(Date, "yyyy-mm") strPrefix = Right(strPrefix1, 4) หลังจากนั้นผมลอง เปลี่ยนเดือนใน Reginal Settings เป็น เดือน 5 ผมทดลอง Run ดูก็จะกลายเป็น 2-05001ครับ ตรงตามความต้องการพอดี ผมขอขอบพระคุณ อ.สุภาพ มากๆ ครับ ด้วยความเคารพ นับถืออย่างสูง Suchat ชลบุรี
3 @R00248
อ. สุภาพ ครับ จาก Code เดิมของ อาจาร์ย strPrefix = "2-04" ผมลองเปลี่ยนเป็น strPrefix1 = Format(Date, "y-mm") Test Run ปรากฏว่า Y = 109 M = 4 Runnig No = 001... (ปกติ) ผมไม่เข้าใจว่าทำไม Y = 109 ซึ่งที่จริงน่าจะโชว์ = 2 ครับ รบกวน อาจาร์ย แนะนำด้วยครับ ด้วยความเคารพ นับถืออย่างสูง Suchat ชลบุรี
4 @R00249
ขอโทษทีครับ ผมพิมพ์ผิด ที่ถูก คือ ผมลองเปลี่ยนเป็น strPrefix = Format(Date, "y-mm") ขอบพระคุณครับ ด้วยความเคารพ และนับถืออย่างสูง Suchat ชลบุรี
5 @R00251
การใช้ y อย่างเดียวจะหมายถึง Day of year จึงทำให้ได้เป็น 109 (วันที่ 109 ของปีนี้) ถ้าต้องการที่จะเอาหลักสุดท้ายของปี ให้ทำดังนี้ right(datepart("yyyy",date),1) ถ้าต้องการเดือนให้เป็นเลข 2 หลัก ให้ใช้ format(datepart("m",date),"00") ลองทำดูนะครับ
6 @R00255
ขอบพระคุณ อ.สุภาพ มากๆ ครับ สำหรับความรู้ดีๆ ครับ ด้วยความเคารพ และนับถืออย่างสูง Suchat ชลบุรี
7 @R00260
ใช้ตัวนี้ครับ Function MyPrevious(strProject As String) As Integer Dim dte As Date, intM As Integer, intYr As Integer dte = DateAdd("m", -1, Now) intM = Format(dte, "M") intYr = Format(dte, "YYYY") Debug.Print intM & " " & intYr MyPrevious = Nz(DSum("[ProgressSch]", "[Project]", "[ProjectNameID] = " & strProject & "And (Format([CheckDate],'m')=" & intM & " And Format([CheckDate],'yyyy')=" & intYr & ")"), 0) End Function โดย DateAdd() จะใช้ในการบวกลบวันเดือนปีที่ต้องการได้ และจะแก้ไขปัญหาเดือนปัจจุบันที่เป็นเดือนมกราคมได้ โดยจะได้ previous month เป็นธันวาคม ลองดูครับ ผมได้ส่งเมลล์กลับให้แล้ว
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0511s