Page 1 of 1

ดึงข้อมูลวันที่จาก access มาแสดงบน excel ให้ตรงกันอย่างไร

Posted: Tue Aug 19, 2014 4:13 pm
by numilike
สวัสดีค่ะ ชื่อนุ่มนะคะ
คือนุ่มมีปัญหา เกี่ยวกับการดึงวันที่ จาก Access มาแสดง บน Excel ค่ะ
ในฐานข้อมูล มีวันที่ เช่น

12/09/2014 แสดงเป็น 09/12/2014 แสดงผิดค่ะ
แต่ถ้าเป็น
26/09/2014 แสดงเป็น 26/09/2014 ขึ้นถูกต้องค่ะ


ดูได้จากรูป ข้อมูลใน excel ค่ะ นุ่มทำสีเหลืองๆไว้

table design ของฐานข้อมูลก็เป็น date/time กำหนดถูกต้องแล้ว
ลองเปลี่ยนเป็น type เป็น text แล้ว ปรากฏว่าขึ้นถูกต้อง แต่ดันเรียงลำดับวันผิดหมดเลยค่ะ

นุ่มควรจะแก้ไขอย่างไรดีคะ
รบกวนผู้ใจดี ช่วยแนะแนวทางแก้ไขปัญหาด้วยค่ะ

ขอบคุณล่วงหน้าค่ะ

Re: ช่วยด้วยค่ะ ดึงข้อมูลวันที่จาก access มาบน excel ไม่ตรงก

Posted: Tue Aug 19, 2014 4:38 pm
by snasui
numilike wrote:รบกวนผู้ใจดี ช่วยแนะแนวทางแก้ไขปัญหา ชี้ทางสว่างให้นุ่มด้วยเถิด ด ด ด ดดด ดดด ><"
:shock: อ่านกฎทุกข้อด้านบน :roll: แล้วแก้ไขข้อความด้วยครับ

Re: ดึงข้อมูลวันที่จาก access มาแสดงบน excel ไม่ตรงกันค่ะ

Posted: Tue Aug 19, 2014 5:03 pm
by snasui
:D วิธีการดึงข้อมูลที่แจ้งมานั้นมีวิธีการอย่างไรบ้าง ลองลำดับมาให้ด้วยครับ

Re: ดึงข้อมูลวันที่จาก access มาแสดงบน excel ให้ตรงกันอย่างไ

Posted: Tue Aug 19, 2014 5:14 pm
by numilike
ข้อมูลอยู่ในฐานข้อมูลของ Access จะรัน macro ใน excel แล้วดึงข้อมูลจาก Access มาแสดง

วิธีการดึงข้อมูล
- เริ่มจากใช้ Query Crosstab table ข้อมูล ใน access ซึ่งก็ได้ตรงตามความต้องการ ข้อมูลถูกต้องค่ะ
- แล้วนำ code Query นั้น ไปใส่ใน excel ที่จะรัน macro

code Query
TRANSFORM First(C25.Qty) AS FirstOfQty
SELECT C25.Issue_Date, C25.Supplier_Code, C25.Delivery_Time, C25.Part_No, C25.Receiving_Location, C25.Line_Feed, C25.Dock_Code, C25.Delivery_Order, C25.Remark
FROM C25
GROUP BY C25.Issue_Date, C25.Supplier_Code, C25.Delivery_Time, C25.Part_No, C25.Receiving_Location, C25.Line_Feed, C25.Dock_Code, C25.Delivery_Order, C25.Remark
ORDER BY C25.Delivery_Date
PIVOT C25.Delivery_Date;

code ในส่วนดึงข้อมูลมาใส่ใน workbook
With ThisWorkbook
Workbooks.Add
For J = 0 To rs.Fields.Count - 1
ActiveCell.Offset(0, J).Value = rs.Fields(J).Name
Next
ActiveCell.Offset(1, 0).CopyFromRecordset rs
End With

รันผ่าน โอเค ไม่ติด error ใดๆค่ะ
แต่ข้อมูลวันที่ที่แสดงใน excel ไม่ตรงกับใน access ดังภาพที่เคยโพสค่ะ

Re: ดึงข้อมูลวันที่จาก access มาแสดงบน excel ให้ตรงกันอย่างไ

Posted: Tue Aug 19, 2014 5:22 pm
by snasui
:D ปัจจุบัน กำหนด Regional and Language ไว้อย่างไร หมายถึงเป็น Thai หรือเป็นแบบอื่นครับ :?:

สำหรับการ Post Code ให้แสดงเป็น Code ดูตัวอย่างได้จากกระทู้นี้ เพื่อสะดวกในการอ่านและนำไปทดสอบครับ viewtopic.php?f=3&t=1187

Re: ดึงข้อมูลวันที่จาก access มาแสดงบน excel ให้ตรงกันอย่างไ

Posted: Tue Aug 19, 2014 6:26 pm
by numilike
กำหนดเป็น Thai ค่ะ

Re: ดึงข้อมูลวันที่จาก access มาแสดงบน excel ให้ตรงกันอย่างไ

Posted: Tue Aug 19, 2014 6:36 pm
by snasui
:D หากเป็นเช่นนั้นแสดงว่า Record Set มีปัญหาในการเก็บค่า ข้อมูลประเภทเดียวกันแต่เก็บต่างกัน ซึ่งไม่ควรเกิดปัญหาเช่นนั้นครับ

ลองทดสอบดึงข้อมูลด้วย Query โดยไม่ต้องทำ Crosstab ดึงมาเป็น Data ปกติเพื่อจะดูว่าได้ค่าที่ถูกต้องหรือไม่ การทำ Crosstab สามารถทำใน Excel ด้วย PivotTable ได้ครับ

Re: ดึงข้อมูลวันที่จาก access มาแสดงบน excel ให้ตรงกันอย่างไ

Posted: Tue Aug 19, 2014 7:37 pm
by numilike
ขอบคุณค่ะ จะลองทำดูนะคะ
pivot table เคยลองทำแล้วค่ะ แต่ error ตลอด เลยใช้วิธีนี้แทนค่ะ

Re: ดึงข้อมูลวันที่จาก access มาแสดงบน excel ให้ตรงกันอย่างไ

Posted: Wed Aug 20, 2014 7:48 am
by numilike
snasui wrote::D หากเป็นเช่นนั้นแสดงว่า Record Set มีปัญหาในการเก็บค่า ข้อมูลประเภทเดียวกันแต่เก็บต่างกัน ซึ่งไม่ควรเกิดปัญหาเช่นนั้นครับ

ลองทดสอบดึงข้อมูลด้วย Query โดยไม่ต้องทำ Crosstab ดึงมาเป็น Data ปกติเพื่อจะดูว่าได้ค่าที่ถูกต้องหรือไม่ การทำ Crosstab สามารถทำใน Excel ด้วย PivotTable ได้ครับ

ทดลองดึงแบบปกติ ไม่ทำ Crosstab แล้วค่ะ ปรากฏว่าวันที่ออกมาตรงกับฐานข้อมูลค่ะ
ถ้าเป็นแบบนี้ เรามีวิธีแก้อย่างอื่นไหมคะ โดยที่เราไม่ใช้ PivotTable

Re: ดึงข้อมูลวันที่จาก access มาแสดงบน excel ให้ตรงกันอย่างไ

Posted: Wed Aug 20, 2014 5:00 pm
by snasui
:D วิธีการอื่น หากเป็นไปได้คือ Loop เข้าไปใน Element ของ RecordSet > ตรวจสอบค่า > เปลียนค่าตามต้องการ

หากไม่ได้ก็ใช้ Array เก็บค่าของ RecordSet แล้ว Loop จาก Element ของ Array เพื่อตรวจสอบค่า > เปลี่ยนค่าตามต้องการ

หากไม่ได้ก็ Loop ใน Range ทีเ่ป็นผลลัพธ์เพื่อตรวจสอบค่า > เปลี่ยนค่าตามต้องการ

Re: ดึงข้อมูลวันที่จาก access มาแสดงบน excel ให้ตรงกันอย่างไ

Posted: Wed Aug 20, 2014 5:06 pm
by numilike
ขอบคุณนะคะ

ตอนนี้ทำได้แล้วค่ะ
แก้ไขที่ Excel โดยให้ format เป็น text แล้วใส่ค่าให้ Cell ช่องนั้นๆเป็น DATEVALUE *1 ค่ะ

ขอบคุณอีกครั้งค่ะ