กระทู้เก่าบอร์ด อ.Yeadram
2,400 12
URL.หัวข้อ /
URL
สอบถามหาค่ากลาง Run ต่อเนื่องค่า
พอดีหนูเขียน Code Runing Number ตามนี้ค่ะ
ผลลัพย์นะคะ IPP0001/06/56
ซึ่ง IPP ค่าคงที่, 0001 =รันนัมเบอร์ค่ะ , / คั่นหน้าวันที่ค่ะ ,09/56 คือ เดือนปี
หนูเขียนได้คือ
Private Sub B_NoIPI_Click()
Dim intMax As Integer
Dim strPrefix As String
Dim strPrefix1 As String
Dim istrPrefix2 As String
Dim AA As String
Dim BB As String
strPrefix1 = Format(Date, "mm/yy")
strPrefix2 = DLast("B_NoIPI", "Qr_TwoPD2Last")
AA = "IPI"
BB = "/"
If Me.B_NoIPI = "" Or IsNull(Me.B_NoIPI) Then
Me.B_NoIPI = "IPI" & "0001" & "/" & strPrefix1
Else
intMax = DMax("Val(Mid(B_NoIPI,4,7))", "Qr_TwoPD2Last")
Me.B_NoIPI = AA & Format(intMax + 1) & BB & strPrefix1
End If
End Sub
หนูติดตรง
intMax = DMax("Val(Mid(B_NoIPI,4,7))", "Qr_TwoPD2Last")
Me.B_NoIPI = AA & Format(intMax + 1) & BB & strPrefix1
มันไม่ยอม Run ค่ะ พี่ๆ อาจารช่วยดูและชี้แนะด้วยค่ะ
ขอบคุณค่ะ
ผลลัพย์นะคะ IPP0001/06/56
ซึ่ง IPP ค่าคงที่, 0001 =รันนัมเบอร์ค่ะ , / คั่นหน้าวันที่ค่ะ ,09/56 คือ เดือนปี
หนูเขียนได้คือ
Private Sub B_NoIPI_Click()
Dim intMax As Integer
Dim strPrefix As String
Dim strPrefix1 As String
Dim istrPrefix2 As String
Dim AA As String
Dim BB As String
strPrefix1 = Format(Date, "mm/yy")
strPrefix2 = DLast("B_NoIPI", "Qr_TwoPD2Last")
AA = "IPI"
BB = "/"
If Me.B_NoIPI = "" Or IsNull(Me.B_NoIPI) Then
Me.B_NoIPI = "IPI" & "0001" & "/" & strPrefix1
Else
intMax = DMax("Val(Mid(B_NoIPI,4,7))", "Qr_TwoPD2Last")
Me.B_NoIPI = AA & Format(intMax + 1) & BB & strPrefix1
End If
End Sub
หนูติดตรง
intMax = DMax("Val(Mid(B_NoIPI,4,7))", "Qr_TwoPD2Last")
Me.B_NoIPI = AA & Format(intMax + 1) & BB & strPrefix1
มันไม่ยอม Run ค่ะ พี่ๆ อาจารช่วยดูและชี้แนะด้วยค่ะ
ขอบคุณค่ะ
12 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R16257
น่าจะ Mid(B_NoIPI,4,4) ไม่ใช่หรือ
3 @R16258
เรียนท่านอาจารย์ สันติสุข ค่ะ
จากที่เปลี่ยนตามอาจารแล้วมันขึ้น
Run-Time Error '3464' Data Type Mismatch In Criteria Expression
ซึ่งตัวเลขอันแรกได้ค่ะ
IPP0001/06/56
แต่แถวที่ 2 มันก็ขึ้นตัวเดิมค่ะ
มันไม่บวก1 ค่ะ และมันก็เกิน Error ค่ะขออาจารย์ช่วยชี้แนะค่ะ
ขอบคุณค่ะ
จากที่เปลี่ยนตามอาจารแล้วมันขึ้น
Run-Time Error '3464' Data Type Mismatch In Criteria Expression
ซึ่งตัวเลขอันแรกได้ค่ะ
IPP0001/06/56
แต่แถวที่ 2 มันก็ขึ้นตัวเดิมค่ะ
มันไม่บวก1 ค่ะ และมันก็เกิน Error ค่ะขออาจารย์ช่วยชี้แนะค่ะ
ขอบคุณค่ะ
4 @R16259
เรียนอาจารค่ะหนูแก้ไขในส่วนท้าย
intMax = DMax("Val(Mid(B_NoIPI,4,7))", "B_NoIPI")
ตอนนี้ คลิกที่Text 2ครั้งถึงจะเป็น IPI2/06/56
โดยคลิกครั้งแรกเป็นค่า IPI0001/06/56 ตัวเดิม
คลิกครั้งที่2เป็นค่า IPI2/06/56
แล้วพอแถวใหม่
คลิกครั้ง1เป็นค่า IPI0001/06/56
คลิกครั้งที่2เป็นค่า IPI3/06/56 เป็นแบบนี้ไปเรื่อยๆค่ะ
อยากถามอาจารว่า ทำไมต้องมันไม่คลิกครั้งเดียวแล้วเปลี่ยนค่า+1เลยค่ะ
และ ทำไมมันไม่เป็น IPI0002/06/56 ค่ะ คือ 000 มันหายไปค่ะ
ขอบคุณค่ะ
intMax = DMax("Val(Mid(B_NoIPI,4,7))", "B_NoIPI")
ตอนนี้ คลิกที่Text 2ครั้งถึงจะเป็น IPI2/06/56
โดยคลิกครั้งแรกเป็นค่า IPI0001/06/56 ตัวเดิม
คลิกครั้งที่2เป็นค่า IPI2/06/56
แล้วพอแถวใหม่
คลิกครั้ง1เป็นค่า IPI0001/06/56
คลิกครั้งที่2เป็นค่า IPI3/06/56 เป็นแบบนี้ไปเรื่อยๆค่ะ
อยากถามอาจารว่า ทำไมต้องมันไม่คลิกครั้งเดียวแล้วเปลี่ยนค่า+1เลยค่ะ
และ ทำไมมันไม่เป็น IPI0002/06/56 ค่ะ คือ 000 มันหายไปค่ะ
ขอบคุณค่ะ
5 @R16260
1. ผมยังเชื่อว่าควรจะเป็น Mid(B_NoIPI,4,4) แม้ว่า Mid(B_NoIPI,4,7) จะให้ผลลัพธ์ออกมาได้เช่นกัน แต่ยังไม่เข้าใจว่าทำไมถึงเกิด error นั้นได้
2. คุณต้อง debug โปรแกรมเป็น ถึงจะเช็คได้ว่ามันเกิดจากปัญหาอะไรกันแน่
3. จะให้มี 0 นำหน้าตัวเลข ต้องใช้ Format(intMax + 1, "0000")
4. จริงๆวิธีเก็บข้อมูลค่อนข้างจะไม่เหมาะสมนะ คุณควรแยกฟิลด์ คือ
- เก็บคำว่า "IPI" แต่ถ้าคิดว่าในอนาคตก็จะไม่มีคำอื่นนอกจาก "IPI" แล้ว จะไม่เก็บเลยก็ได้
- เก็บค่า running number เอาไว้เป็นอีกฟิลด์ แล้วกำหนดอินเด็กซ์ที่ฟิลด์นี้
- เก็บเดือนและปี เป็นอีกฟิลด์ หรือจะเก็บแยกเดือนกับปีเป็นคนละฟิลด์เลยก็ได้
- สร้างอินเด็กซ์ให้เหมาะสม
ด้วยวิธีนี้ แม้มีข้อมูลเยอะเป็นล้านเรคอร์ด ความเร็วในการหาเลขสุดท้ายก็แทบจะไม่แตกต่าง ตอนจะแสดงก็ค่อยเอามาต่อเชื่อมกันครับ
2. คุณต้อง debug โปรแกรมเป็น ถึงจะเช็คได้ว่ามันเกิดจากปัญหาอะไรกันแน่
3. จะให้มี 0 นำหน้าตัวเลข ต้องใช้ Format(intMax + 1, "0000")
4. จริงๆวิธีเก็บข้อมูลค่อนข้างจะไม่เหมาะสมนะ คุณควรแยกฟิลด์ คือ
- เก็บคำว่า "IPI" แต่ถ้าคิดว่าในอนาคตก็จะไม่มีคำอื่นนอกจาก "IPI" แล้ว จะไม่เก็บเลยก็ได้
- เก็บค่า running number เอาไว้เป็นอีกฟิลด์ แล้วกำหนดอินเด็กซ์ที่ฟิลด์นี้
- เก็บเดือนและปี เป็นอีกฟิลด์ หรือจะเก็บแยกเดือนกับปีเป็นคนละฟิลด์เลยก็ได้
- สร้างอินเด็กซ์ให้เหมาะสม
ด้วยวิธีนี้ แม้มีข้อมูลเยอะเป็นล้านเรคอร์ด ความเร็วในการหาเลขสุดท้ายก็แทบจะไม่แตกต่าง ตอนจะแสดงก็ค่อยเอามาต่อเชื่อมกันครับ
6 @R16262
ได้แล้วค่ะขอบคุณมากค่ะ
หนูแก้ไขตามนี้ค่ะ
If Me.B_NoIPI <> "" Or IsNull(Me.B_NoIPI) Then
intMax = DMax("Val(Mid(B_NoIPI,4,4))", "Qr_TwoPD2Last", "B_NoIPI")
Me.B_NoIPI = AA & Format(intMax + 1, "0000") & BB & strPrefix1
Else
Me.B_NoIPI = "IPI" & "0001" & "/" & strPrefix1
End If
ขอบคุณค่ะ
****************************************************************************
หนูอยากถามอาจารย์เพิ่มเติมเกี่ยวกับ Run อีกแบบคือ ตามที่คุณ มดเอ็ดถามคุณ TTT ค่ะ
ตัวอย่างคุณ TTT ค่ะ
http://cloudbox.3bb.co.th/share3/NzUzOXw0YWFkZDY2MTkwOGIxODFkMDU5YTExN2YwMmZiYzllY3wzNTMwOA==
ต้องการ Run แบบเดียวกันเลยค่ะ และติดปัญหาเหนือนกับคุณ มดเอ็ด คือ
คือ พอ Run แล้ว มันไม่ได้ 5 แถว คือเกิน5หรือ Run ไปเรื่อยๆเหมือนคุณมดเอ็ดค่ะ และพอเปลี่ยนวันที่ใหม่ โปรแกรมบางทีก็ไม่ยอมเปลี่ยนตัวใหม่ หรือกลับไปRun ตัวเก่าให้ครบ 5 ครั้งแล้วค่อยขึ้นใหม่ ตามคุณมดเอ็ดแจ้งคุณTTT ตามคำถามคุณมดเอ็ดเลยค่ะ
http://www.thai-access.com/yeadram_view.php?topic_id=3490&page=3
แต่จากคุณ TTT แแจ้งคุณมดเอ็ด คุณTTT บอก Run ได้แต่หนูมาลองมันติดเหมือนคุณมดเอ็ดค่ะ
ขอความกรุณาอาจารย์ช่วยดูให้หน่อยนะค่ะ ถือว่าช่วย 2 คนค่ะ
หรืออาจารย์มีแนวทางเขียนแบบใหม่ช่วยแก้ไขทีค่ะ
ขอบคุณอาจารย์ค่ะ
หนูแก้ไขตามนี้ค่ะ
If Me.B_NoIPI <> "" Or IsNull(Me.B_NoIPI) Then
intMax = DMax("Val(Mid(B_NoIPI,4,4))", "Qr_TwoPD2Last", "B_NoIPI")
Me.B_NoIPI = AA & Format(intMax + 1, "0000") & BB & strPrefix1
Else
Me.B_NoIPI = "IPI" & "0001" & "/" & strPrefix1
End If
ขอบคุณค่ะ
****************************************************************************
หนูอยากถามอาจารย์เพิ่มเติมเกี่ยวกับ Run อีกแบบคือ ตามที่คุณ มดเอ็ดถามคุณ TTT ค่ะ
ตัวอย่างคุณ TTT ค่ะ
http://cloudbox.3bb.co.th/share3/NzUzOXw0YWFkZDY2MTkwOGIxODFkMDU5YTExN2YwMmZiYzllY3wzNTMwOA==
ต้องการ Run แบบเดียวกันเลยค่ะ และติดปัญหาเหนือนกับคุณ มดเอ็ด คือ
คือ พอ Run แล้ว มันไม่ได้ 5 แถว คือเกิน5หรือ Run ไปเรื่อยๆเหมือนคุณมดเอ็ดค่ะ และพอเปลี่ยนวันที่ใหม่ โปรแกรมบางทีก็ไม่ยอมเปลี่ยนตัวใหม่ หรือกลับไปRun ตัวเก่าให้ครบ 5 ครั้งแล้วค่อยขึ้นใหม่ ตามคุณมดเอ็ดแจ้งคุณTTT ตามคำถามคุณมดเอ็ดเลยค่ะ
http://www.thai-access.com/yeadram_view.php?topic_id=3490&page=3
แต่จากคุณ TTT แแจ้งคุณมดเอ็ด คุณTTT บอก Run ได้แต่หนูมาลองมันติดเหมือนคุณมดเอ็ดค่ะ
ขอความกรุณาอาจารย์ช่วยดูให้หน่อยนะค่ะ ถือว่าช่วย 2 คนค่ะ
หรืออาจารย์มีแนวทางเขียนแบบใหม่ช่วยแก้ไขทีค่ะ
ขอบคุณอาจารย์ค่ะ
7 @R16270
ยังไม่มีเวลาดูให้นะครับ ต้องรอหน่อย แต่จากที่บอกเงื่อนไขว่า "ตัวเก่าให้ครบ 5 ครั้งแล้วค่อยขึ้นใหม่" ก็ลองใช้ DCount( ) เป็นตัวตรวจสอบดูสิครับ
8 @R16271
มดเอ็ด...พิ้ง...???
9 @R16275
ขอบคุณอาจารย์มากค่ะ
หนูจะรอดูตัวอย่างจากอาจารย์นะค่ะ
และหนูจะลองแก้ไขของคุณมดเอ็ดดูค่ะ
ขอบคุณค่ะ
หนูจะรอดูตัวอย่างจากอาจารย์นะค่ะ
และหนูจะลองแก้ไขของคุณมดเอ็ดดูค่ะ
ขอบคุณค่ะ
10 @R16287
ลองทดสอบดูนะครับ
Private Sub zzz_Click()
Dim SQLDate As String
Dim MaxZZZ As Variant
Dim CountZZZ As Integer
Dim BudYear As String
If Me.NewRecord Then
' หาปี พ.ศ. 2 หลัก
BhudYear = Right(Year(Date) + 543, 2)
' วันที่ปัจจุบันที่จะใส่เข้าในเงื่อนไข รูปแบบเป็น เดือน/วัน/ค.ศ.
SQLDate = "#" & DatePart("m", Date) & "/" & DatePart("d", Date) & "/" & DatePart("yyyy", Date) & "#"
' ค่า zzz ที่มากที่สุดของปี
MaxZZZ = DMax("zzz", "qr", "year(aDate) = " & DatePart("yyyy", Date))
' ถ้าไม่มี ก็ให้เป็นเลขที่ 0001
If IsNull(MaxZZZ) Then
zzz = "0001/" & BhudYear
Else
' หาจำนวนของเลขสุดท้ายของวันนี้
CountZZZ = DCount("zzz", "qr", "aDate = " & SQLDate & " and zzz = '" & MaxZZZ & "'")
' ถ้าไม่มี หรือมีครบ 5 เรคอร์ดแล้ว ก็เพิ่มเป็นเลขที่ต่อไป
If CountZZZ = 0 Or CountZZZ = 5 Then
zzz = Format(Val(Left(MaxZZZ, 4)) + 1, "0000") & "/" & BhudYear
Else
' ไม่เช่นนั้นก็ใช้เลขที่เดิม
zzz = MaxZZZ
End If
End If
End If
End Sub
11 @R16295
ขอบคุณมากค่ะอาจารย์
สุดยอดเลยค่ะ หนูลองทำ 4 , 5 รอบไม่ได้ซักทีว่าจะถอดใจแล้วเชียว
นับถืออาจารย์มากค่ะ
ขอบคุณค่ะ
สุดยอดเลยค่ะ หนูลองทำ 4 , 5 รอบไม่ได้ซักทีว่าจะถอดใจแล้วเชียว
นับถืออาจารย์มากค่ะ
ขอบคุณค่ะ
12 @R16302
ขอบคุณอาจารย์มากๆครับ
ติดมาหลายวันแล้วครับ
และขอบคุณ คุณพิ้งที่ช่วยตามครับ
ขอบคุณมากครับ
ติดมาหลายวันแล้วครับ
และขอบคุณ คุณพิ้งที่ช่วยตามครับ
ขอบคุณมากครับ
Time: 0.2392s
IPP0002/06/56
IPP0003/06/56
ประมาณนีค่ะ