กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
437 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
ชลบุรี
แล้วให้ 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 เป็นธันวาคม
ลองดูครับ ผมได้ส่งเมลล์กลับให้แล้ว
Time: 0.1232s