กระทู้เก่าบอร์ด อ.Yeadram
746 4
URL.หัวข้อ /
URL
รบกวนท่านอาจารย์ทุกท่านคับ
ผมอยากจะเช็คเลขที่ใบเสร็จว่ามีการกระโดดข้ามบ้างหรือเปล่าครับ
ตัวอย่างเช่น
เครื่อง C01
C01-000001
C01-000002
C01-000004
C01-000006
เครื่อง C02
C02-000001
C02-000002
C02-000004
C02-000005
C02-000007
ที่ C01 นั้นจะมีการข้าม หมายเลข 000003 ส่วน C02 มีการข้าม 000003 และ 000006 คือผมอยากให้แสดงว่ามีเครื่องไหน หมายเลขอะไรที่ข้ามไปครับผมขอรบกวนอาจารย์ทุกท่านด้วยครับ
ตัวอย่างเช่น
เครื่อง C01
C01-000001
C01-000002
C01-000004
C01-000006
เครื่อง C02
C02-000001
C02-000002
C02-000004
C02-000005
C02-000007
ที่ C01 นั้นจะมีการข้าม หมายเลข 000003 ส่วน C02 มีการข้าม 000003 และ 000006 คือผมอยากให้แสดงว่ามีเครื่องไหน หมายเลขอะไรที่ข้ามไปครับผมขอรบกวนอาจารย์ทุกท่านด้วยครับ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R24057
อาจารย์ yeadram ครับ เอาเป็นเครื่องเดียวก็ได้ครับผม (C01) จะได้ไม่ยุ่งยากเกินไปครับ ทั้งหมดนี้ผมนำไปไว้ที่ มูลดูลใช่หรือเปล่าครับ
มันมี error ตอนผมคีย์ที่ บรรทัด if ครับผม
ตารางชื่อ T_Order มีฟิวด์ที่เก็บเลขที่ชื่อ OrdCode ครับ
ผมจะให้แสดงที่ Query ยังไงบ้างครับผม
รบกวนอาจารย์ yeadram ด้วยครับ
มันมี error ตอนผมคีย์ที่ บรรทัด if ครับผม
ตารางชื่อ T_Order มีฟิวด์ที่เก็บเลขที่ชื่อ OrdCode ครับ
ผมจะให้แสดงที่ Query ยังไงบ้างครับผม
รบกวนอาจารย์ yeadram ด้วยครับ
3 @R24066
Public Function FindLostChain() As String
Dim MyRs As Recordset, nRunNum As Long, i As Long, stResult As String
stResult = ""
Set MyRs = CurrentDb.OpenRecordset("SELECT T_Order.OrdCode FROM T_Order ORDER BY T_Order.OrdCode;", dbOpenSnapshot)
If MyRs.RecordCount > 0 Then
i = 1
MyRs.MoveFirst
Do While Not MyRs.EOF
nRunNum = Val(Mid(MyRs!OrdCode, 5))
If nRunNum > 0 And nRunNum <> i Then
stResult = stResult & Left(MyRs!OrdCode, 4) & Format(nRunNum, "000000") & " "
i = nRunNum
End If
i = i + 1
Loop
End If
MyRs.Close
Set MyRs = Nothing
FindLostChain = stResult
End Function
วิธีใช้งาน Me.textbox = FindLostChain()
ปล. รูปแบบ OrdCode จะต้องเป็น format แบบที่ให้มาในโจทย์นะครับ
Dim MyRs As Recordset, nRunNum As Long, i As Long, stResult As String
stResult = ""
Set MyRs = CurrentDb.OpenRecordset("SELECT T_Order.OrdCode FROM T_Order ORDER BY T_Order.OrdCode;", dbOpenSnapshot)
If MyRs.RecordCount > 0 Then
i = 1
MyRs.MoveFirst
Do While Not MyRs.EOF
nRunNum = Val(Mid(MyRs!OrdCode, 5))
If nRunNum > 0 And nRunNum <> i Then
stResult = stResult & Left(MyRs!OrdCode, 4) & Format(nRunNum, "000000") & " "
i = nRunNum
End If
i = i + 1
Loop
End If
MyRs.Close
Set MyRs = Nothing
FindLostChain = stResult
End Function
วิธีใช้งาน Me.textbox = FindLostChain()
ปล. รูปแบบ OrdCode จะต้องเป็น format แบบที่ให้มาในโจทย์นะครับ
4 @R24067
แก้ไข:-
Public Function FindLostChain() As String
Dim MyRs As Recordset, nRunNum As Long, i As Long, stResult As String
stResult = ""
Set MyRs = CurrentDb.OpenRecordset("SELECT T_Order.OrdCode FROM T_Order ORDER BY T_Order.OrdCode;", dbOpenSnapshot)
If MyRs.RecordCount > 0 Then
i = 1
MyRs.MoveFirst
Do While Not MyRs.EOF
nRunNum = Val(Mid(MyRs!OrdCode, 5))
If nRunNum > 0 And nRunNum <> i Then
stResult = stResult & Left(MyRs!OrdCode, 4) & Format(nRunNum, "000000") & " "
i = nRunNum
End If
i = i + 1
MyRs.MoveNext
Loop
End If
MyRs.Close
Set MyRs = Nothing
FindLostChain = stResult
End Function
Public Function FindLostChain() As String
Dim MyRs As Recordset, nRunNum As Long, i As Long, stResult As String
stResult = ""
Set MyRs = CurrentDb.OpenRecordset("SELECT T_Order.OrdCode FROM T_Order ORDER BY T_Order.OrdCode;", dbOpenSnapshot)
If MyRs.RecordCount > 0 Then
i = 1
MyRs.MoveFirst
Do While Not MyRs.EOF
nRunNum = Val(Mid(MyRs!OrdCode, 5))
If nRunNum > 0 And nRunNum <> i Then
stResult = stResult & Left(MyRs!OrdCode, 4) & Format(nRunNum, "000000") & " "
i = nRunNum
End If
i = i + 1
MyRs.MoveNext
Loop
End If
MyRs.Close
Set MyRs = Nothing
FindLostChain = stResult
End Function
Time: 0.3255s
Dim maxMachine as long
Dim MaxNumber as long
Dim x, y as long
tmpCode = dMax("เลขที่", "ตาราง") ' หาหมายเลขเครื่องลำดับสุดท้าย
maxMachine = cLng(mid(tmpCode,2,2)) 'แปลงค่ารหัสเครื่องเป็นตัวเลข
for x = 1 to maxMachine 'วนลูปตามจำนวนเครื่อง
' หาหมายเลขลำดับสุดท้ายในรหัสของเครื่องนี้
maxNumber = dMax("เลขที่", "ตาราง", "Left(เลขที่,3) like 'C' & '" & format(x,"00") & "'")
for y = 1 to maxNumber 'วนลูปทุกหมายเลขในรหัสเครื่องนี้
tmpCode = "C" & format(x,"00") & "-" & format(y,"000000") 'สร้างเลขจำลองขึ้นมา
if isnull(dCount("เลขที่","ตาราง","เลขที่ Like '" & tmpCode & "'") then ' นำเลขจำลองไปเทียบข้อมูลจริงในตาราง
debug.print tmpCode ' ถ้าเลขจำลองในลูปรอบนี้ ไม่มีอยู่ในตารางให้ปริ๊นท์ออกมา
end if
next y
next x
เป็นแนวทางนะครับ ถ้าเข้าใจแนวทางแล้ว คงสามารถแก้บักเองได้ (ซึ่งคิดว่ามันต้องมี error บ้างแหละ เนื่องจากชนิดข้อมูล)