กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
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 ครับ
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
ขอบพระคุณ อ.สุภาพ มากๆ ครับ
สำหรับความรู้ดีๆ อีกแล้ว
ด้วยความเคารพ และนับถือ
Time: 0.1062s