กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
340 4
URL.หัวข้อ /
URL
ปัญหา Date ของ Office97 ใน Window XP
สวัสดีครับผมีปัญหามารบกวนอีกแล้ว
คือเดิม ผมใช้ Office97 บน Window 98 มันทำงานได้ปกติไม่มีอะไรเพี้ยนซักเท่าไหร่นอกจาก BUG แต่ เมื่อ Upgrade OS มาเป็น WindowXP โดยยังใช้ Office97 เช่นเดิม ทำให้เกิดปัญหาเกี่ยวกับ เรื่อง Format ของ Date ครับ
เมื่อใช้ format ครอบไปที่ตัวแปร เช่น
Set dbs = CurrentDb
Date_1 = CDate(Format(Dt_box_2, "mm/dd/yyyy"))
SqlStr = "SELECT max(d_date) As D_Pr From sect " _
& "Where D_date <=#" & Date_1 & "#) "
Set Rst0 = dbs.OpenRecordset(SqlStr, dbOpenSnapshot)
Rst0.MoveFirst
Date_1 = CDate(Format(Rst0.Fields("D_pr"), "mm/dd/yyyy"))
Set Rst0 = Nothing
Set Qdf = dbs.QueryDefs("Q_Price")
Qdf("Date1") = Date_1 <---------- *** Error ***
Set Rst1 = Qdf.OpenRecordset(dbOpenSnapshot)
Set Qdf = Nothing
แต่ถ้าเปลี่ยนบรรทัดที่ error เป็น
Qdf("Date1") = #12/8/2003#
จะ Run ได้ครับ
เมื่อ debug ดูก็เห็นค่าของ Date_1 = #12/8/2003# Type เป็น Date เหมือนกันครับ
เมื่อตรวจสอบดูที่ format วันที่ของ Window ของทั้งสองเครื่องก็เหมือนกันครับ(คือเครื่องที่เป็น window 98 และเครื่องที่เป็น window xp)
แต่ลองเอา format ครอบที่ Date_1
Format(Date_1,"mm/dd/yyyy") ----> 8/12/1460
ซึ่งไม่รู้ว่าเป็นเพราะอะไร แต่ถ้าไป run ที่เครื่องที่เป็น Window98 จะไม่เป็นครับ
แต่ต้องทดสอบกับ Window หลายๆตัว เพราะ User ที่ใช้งานค่อนข้างหลากหลายเลยต้องทำให้ Run ได้ทุก OS ให้มีผลที่ออกมาเหมือนกัน ยังไงก็ขอความกรุณาช่วยแนะนำด้วยนะครับว่าจะแก้ไขได้อย่างไร ขอบคุณมากครับ
คือเดิม ผมใช้ Office97 บน Window 98 มันทำงานได้ปกติไม่มีอะไรเพี้ยนซักเท่าไหร่นอกจาก BUG แต่ เมื่อ Upgrade OS มาเป็น WindowXP โดยยังใช้ Office97 เช่นเดิม ทำให้เกิดปัญหาเกี่ยวกับ เรื่อง Format ของ Date ครับ
เมื่อใช้ format ครอบไปที่ตัวแปร เช่น
Set dbs = CurrentDb
Date_1 = CDate(Format(Dt_box_2, "mm/dd/yyyy"))
SqlStr = "SELECT max(d_date) As D_Pr From sect " _
& "Where D_date <=#" & Date_1 & "#) "
Set Rst0 = dbs.OpenRecordset(SqlStr, dbOpenSnapshot)
Rst0.MoveFirst
Date_1 = CDate(Format(Rst0.Fields("D_pr"), "mm/dd/yyyy"))
Set Rst0 = Nothing
Set Qdf = dbs.QueryDefs("Q_Price")
Qdf("Date1") = Date_1 <---------- *** Error ***
Set Rst1 = Qdf.OpenRecordset(dbOpenSnapshot)
Set Qdf = Nothing
แต่ถ้าเปลี่ยนบรรทัดที่ error เป็น
Qdf("Date1") = #12/8/2003#
จะ Run ได้ครับ
เมื่อ debug ดูก็เห็นค่าของ Date_1 = #12/8/2003# Type เป็น Date เหมือนกันครับ
เมื่อตรวจสอบดูที่ format วันที่ของ Window ของทั้งสองเครื่องก็เหมือนกันครับ(คือเครื่องที่เป็น window 98 และเครื่องที่เป็น window xp)
แต่ลองเอา format ครอบที่ Date_1
Format(Date_1,"mm/dd/yyyy") ----> 8/12/1460
ซึ่งไม่รู้ว่าเป็นเพราะอะไร แต่ถ้าไป run ที่เครื่องที่เป็น Window98 จะไม่เป็นครับ
แต่ต้องทดสอบกับ Window หลายๆตัว เพราะ User ที่ใช้งานค่อนข้างหลากหลายเลยต้องทำให้ Run ได้ทุก OS ให้มีผลที่ออกมาเหมือนกัน ยังไงก็ขอความกรุณาช่วยแนะนำด้วยนะครับว่าจะแก้ไขได้อย่างไร ขอบคุณมากครับ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R05708
ปัญหาอมตะ เลยครับเรื่องวันที่ในฐ่านข้อมูลเนี่ย
ปัจจุบันผมใช้เก็บข้อมูลวันที่เป็นตัวอักษร ไม่เจอปัญหาอีกเลยครับ
ไม่ลองเปลี่ยนวันที่เป็นตัวอักษรดูล่ะครับ เขียนโปรแกรมมากหน่อย แต่เอาอยู่
ปัจจุบันผมใช้เก็บข้อมูลวันที่เป็นตัวอักษร ไม่เจอปัญหาอีกเลยครับ
ไม่ลองเปลี่ยนวันที่เป็นตัวอักษรดูล่ะครับ เขียนโปรแกรมมากหน่อย แต่เอาอยู่
3 @R05711
Change date format to be Text Uhm..m.
just wondering how to calculate date different
or incase to group date by year/quater/month/etc.
any idea.?
just wondering how to calculate date different
or incase to group date by year/quater/month/etc.
any idea.?
4 @R05712
กลัวทำไมเรื่องแปลงวันที่จากตัวอักษรเป็นวันที่
ใช้คำสั่ง cDate สิครับ
แปลงค่าจากตัวอักษรมาเป็นวันที่ แล้วคุณจะไปคำนวนด้วย datediff หรือใช้บวกวันมันก็ได้ค่าเหมือนกัน เพราะได้แปลงเป็นวันที่แล้ว จากนั้นก็แปลงกลับเป็นตัวอักษรเหมือนเดิม
เรื่องฟอร์แมต อันนี้อยู่ที่คุณจะจัดการครับ
ใช้คำสั่ง cDate สิครับ
แปลงค่าจากตัวอักษรมาเป็นวันที่ แล้วคุณจะไปคำนวนด้วย datediff หรือใช้บวกวันมันก็ได้ค่าเหมือนกัน เพราะได้แปลงเป็นวันที่แล้ว จากนั้นก็แปลงกลับเป็นตัวอักษรเหมือนเดิม
เรื่องฟอร์แมต อันนี้อยู่ที่คุณจะจัดการครับ
Time: 0.1000s
แล้วลองกำหนด Format ของ Text Box ชื่อ Dt_box_2 ให้แสดงวันที่ให้ถูกต้อง และเปลี่ยนบันทัดนี้จาก
Date_1 = CDate(Format(Dt_box_2, "mm/dd/yyyy"))
ไปเป็น
Date_1 = Me.Dt_box_2
ลองดูครับ