กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
        
           473   6		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        ช่วยดูให้ผมด้วยครับ      
		
    
      อ.และเพื่อน Access ช่วยดูให้ผมด้วยครับว่าผิดตรงไหนค่าของ curY ไม่ยอมออกมาเลยครับ ผมจะทำเป็น Msgbox แสดงค่าออกมา 3 ค่า  
1. ค่า Vacuum
2.วันที่
3. เครื่องจักรเบอร์ ( Cart No.)
แต่ค่าที่3 ไม่ออกครับ
Dim x As Double
Dim x1 As Date
Dim curY As Long
x = DMax("Average", "VacDate")
x1 = DLookup("Date", "VacDate", "Average=" & x)
curY = DLookup("[Cart No]", "VacDate", "Average = '" & x & "' and Date = '" & x1 & "'")
MsgBox "ค่าที่สูงที่สุดคือ" & x & vbCrLf & "วันที่ " & x1 & vbCrLf & "Cart No" & curY, 64, "Show"
    
  1. ค่า Vacuum
2.วันที่
3. เครื่องจักรเบอร์ ( Cart No.)
แต่ค่าที่3 ไม่ออกครับ
Dim x As Double
Dim x1 As Date
Dim curY As Long
x = DMax("Average", "VacDate")
x1 = DLookup("Date", "VacDate", "Average=" & x)
curY = DLookup("[Cart No]", "VacDate", "Average = '" & x & "' and Date = '" & x1 & "'")
MsgBox "ค่าที่สูงที่สุดคือ" & x & vbCrLf & "วันที่ " & x1 & vbCrLf & "Cart No" & curY, 64, "Show"
				6 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    2 @R02214    
        
  
      ผมลองแล้วครับแต่ยังไม่ได้ครับ ข้อ 1 และ 2 ได้ แต่พอมาเจอข้อ3 Error เลยครับ หรือมี code อื่นที่จะใช้แทนตัวนี้ได้ไหมครับ ขอบคุณครับ     
    
  
        
    3 @R02215    
        
  
      ให้ลองใช้ CDbl() เข้าช่วยครับ และผมจะใช้ Nz() ช่วยอีกต่อหนึ่งด้วย  
  
Private Sub คำสั่ง0_Click()
On Error GoTo MsgErr_0_Click
Dim x As Double
Dim x1 As Date
Dim curY As Long
x = DMax("Average", "VacDate")
x1 = DLookup("Date", "VacDate", "Average=" & x)
'curY = DLookup("[Cart No]", "VacDate", "Average = '" & x & "' and Date = '" & x1 & "'")
curY = Nz(DLookup("[Cart No]", "VacDate", "Average = " & x & " and CDbl(Date) = " & CDbl(x1)), 0)
MsgBox "ค่าที่สูงที่สุดคือ " & x & vbCrLf & "วันที่ " & x1 & vbCrLf & "Cart No = " & curY, 64, "Show"
Exit Sub
MsgErr_0_Click:
MsgBox " ยังใช้ไม่ได้", 48, "Error"
  
End Sub *** Edited by Supap Chaiya *** 7/4/2546 14:58:04
    
  Private Sub คำสั่ง0_Click()
On Error GoTo MsgErr_0_Click
Dim x As Double
Dim x1 As Date
Dim curY As Long
x = DMax("Average", "VacDate")
x1 = DLookup("Date", "VacDate", "Average=" & x)
'curY = DLookup("[Cart No]", "VacDate", "Average = '" & x & "' and Date = '" & x1 & "'")
curY = Nz(DLookup("[Cart No]", "VacDate", "Average = " & x & " and CDbl(Date) = " & CDbl(x1)), 0)
MsgBox "ค่าที่สูงที่สุดคือ " & x & vbCrLf & "วันที่ " & x1 & vbCrLf & "Cart No = " & curY, 64, "Show"
Exit Sub
MsgErr_0_Click:
MsgBox " ยังใช้ไม่ได้", 48, "Error"
End Sub *** Edited by Supap Chaiya *** 7/4/2546 14:58:04
        
    4 @R02218    
        
  
      อยากจะขอความรู้อ.เพิ่มเกี่ยวกับความหมายตรงบันนี้นะครับ  
curY = Nz(DLookup("[Cart No]", "VacDate", "Average = " & x & " and CDbl(Date) = " & CDbl(x1)), 0)
ขอบคุณครับ อ.
    
  curY = Nz(DLookup("[Cart No]", "VacDate", "Average = " & x & " and CDbl(Date) = " & CDbl(x1)), 0)
ขอบคุณครับ อ.
        
    5 @R02219    
        
  
      การใช้ Nz() จะเป็นการแปลงค่า Null ให้เป็น String หรือ Number ก็ได้   
   
ซึ่งการใช้ DLookup() ถ้าไม่มีข้อมูลตามเงื่อนไข มันจะคืนค่า Null ออกมา
   
ก็ใช้ Nz() เข้าช่วย เพื่อกัน Error
   
ส่วนการใช้ CDbl() จะใช้ช่วยแปลงวันที่ ให้เป็นตัวเลขแบบ Double
   
จะช่วยให้การเปรียบเทียบมีความถูกต้อง ซึ่งเรามักจะเจอปัญหากับวันที่ใน Access ซึ่งมีทั้งระบบ พ.ศ. และ ค.ศ.
*** Edited by Supap Chaiya *** 7/4/2546 16:26:26
    
  ซึ่งการใช้ DLookup() ถ้าไม่มีข้อมูลตามเงื่อนไข มันจะคืนค่า Null ออกมา
ก็ใช้ Nz() เข้าช่วย เพื่อกัน Error
ส่วนการใช้ CDbl() จะใช้ช่วยแปลงวันที่ ให้เป็นตัวเลขแบบ Double
จะช่วยให้การเปรียบเทียบมีความถูกต้อง ซึ่งเรามักจะเจอปัญหากับวันที่ใน Access ซึ่งมีทั้งระบบ พ.ศ. และ ค.ศ.
*** Edited by Supap Chaiya *** 7/4/2546 16:26:26
        
    6 @R02220    
        
    
      ขอบคุณอ.สุภาพ มากครับสำหรับความรู้ดี ๆ และได้ง่าย ขอให้อ. และ เพื่อนๆ มีความสุขในวันปีใหม่ไทย ๆ ครับ     
    
  
      Time: 0.0530s
    
      
		
curY = DLookup("[Cart No]", "VacDate", "Average = " & x & " and Date = #" & x1 & "#")