Subtracting on row from another in a query?
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 314   1
URL.หัวข้อ / URL
Subtracting on row from another in a query?

มีคนถามไว้ที่ 
http://www.quicktechusa.com/msgboard/wwwboard.pl?read=20421 
 
คำถามมีดังนี้ 
 
In a table query, how can I use the DateDiff function in "Build" to give me the difference between dates in different rows, but same column?  
 
i.e. I want to say:  
 
Lagtime: DateDiff ("m", [end_date], [end_date])  
 
but with the second [end_date] being from the row before in the same column. ie.  
 
End_date Lagtime  
1/4/99 12:00:00 PM  
2/4/99 12:00:00 PM 1440  
 
Any clues? can this even be done? it has to be done in Access (and preferably as a Query) for further work  
 
Thanks  
 
สรุปจากคำถาม 
 
 
ต้องการที่จะคำนวณหาความแตกต่างเป็นนาทีของวันที่ในฟีลด์ชื่อ End_Date โดยนำค่าในข้อมูลปัจจุบันไปลบออกจากค่าในฟีลด์เดียวกันที่อยู่ก่อนหน้านั้น โดยใช้ DateDiff เข้าช่วย และต้องการแสดงผลใน query โดยใช้สูตรนี้ Lagtime: DateDiff ("m", [end_date], [end_date])  
 
 
ผมเลยได้ลองสร้างตารางจำลอง แล้วสร้างโค้ดขึ้นมา โดยมีหลักการดังนี้ 
1. ต้องทำในตาราง ซึ่งอาจจะเป็นตารางใหม่ หรือตารางเดิมแต่ให้เพิ่มฟีลด์ชื่อ lagtime เข้าไป 
2. ใช้โค้ดข้างล่างไปคำนวณผลต่างเป็นนาที แล้วเขียนลงตารางในฟีลด์ lagtime ดังนี้ 
 
Private Sub LagTime() 
Dim dbs As Database, rst As Recordset 
Dim strValue As String 
 
Set dbs = CurrentDb 
Set rst = dbs.OpenRecordset("tblEndDate") 
 
rst.MoveFirst 
strValue = rst!End_Date 
Debug.Print strValue 
With rst 
    .MoveNext 
        Do Until .EOF 
            .Edit 
                !LagTime = DateDiff("n", strValue, !End_Date) 
                Debug.Print strValue 
            .Update 
                strValue = !End_Date 
                Debug.Print strValue 
            .MoveNext 
        Loop 
End With 
 
Set rst = Nothing 
Set dbs = Nothing 
 
End Sub 
 
จะเห็นว่า ถ้าต้องการจะคำนวณความต่างของวันที่เป็นนาที เราจะใช้ DateDiff ("n", [end_date], [end_date]) ไม่ใช่ DateDiff ("m", [end_date], [end_date]) ซึ่งจะแสดงความต่างเป็นเดือน แทน 
ตัวอย่างจริงอยู่ที่ http://agserver.kku.ac.th/basiceng/lagtime.zip ครับ 

1 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R00225
ขอบพระคุณ อ.สุภาพ มากๆ ครับ สำหรับความรู้ดีๆ อีกแล้ว ด้วยความเคารพ และนับถือ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1062s