กระทู้เก่าบอร์ด อ.Yeadram
        
           858   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.0783s
    
      
		
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 บ้างแหละ เนื่องจากชนิดข้อมูล)