กระทู้เก่าบอร์ด อ.Yeadram
2,351 7
URL.หัวข้อ /
URL
ค่าพ.ศ.ของAccessไม่ตรงกับExcel
หนูCopy ข้อมูลจากExcelมาวางลงในตารางAccess
ฟิลด์ที่เก็บข้อมูลDate/Time ของAccess มีค่าพ.ศ.ไม่ตรงกับExcel
เช่น
ที่ Excel 2/12/2490 แต่ที่Access 2/12/3033
เกิดจากอะไรคะ
ขอบคุณค่ะ
ฟิลด์ที่เก็บข้อมูลDate/Time ของAccess มีค่าพ.ศ.ไม่ตรงกับExcel
เช่น
ที่ Excel 2/12/2490 แต่ที่Access 2/12/3033
เกิดจากอะไรคะ
ขอบคุณค่ะ
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R20990
เกิดจากการกำหนดค่า Date/Time ใน Regional Setting จ้า
2 @R20991
หนูไม่ทราบจริงๆค่ะ
การกำหนดค่า Date/Time ใน Regional Setting
อยู่ตรงใหนคะ ที่Excel หรือที่Access คะ
การกำหนดค่า Date/Time ใน Regional Setting
อยู่ตรงใหนคะ ที่Excel หรือที่Access คะ
3 @R20992
ที่ Windows จ๊ะ เข้าไปที่ Control Panel แล้วเลือก Date/Time setting > Change Date/Time format ลองเลือกรูปแบบดู เดิมน่าจะกำหนด เป็นแบบไทย ก็ให้เปลี่ยนเป็นแบบฝรั่งดู
4 @R21006
รบกวนอาจารย์อีกครั้งค่ะ
ขณะนี้นำเข้าข้อมูลจาก Excel มาใส่ในตารางในAccessแล้วข้อมูลจะมีพ.ศ.ปนกับ ค.ศ.ค่ะ
1/2/2014
1/5/2557
คำถาม
จะเขียนCode อย่างไรให้ข้อมูลเป็นพ.ศ.ทั้งหมด (บางข้อมูลเป็นค.ศ.ให้เปรี่ยนเป็นพ.ศ.ส่วนที่เป็นพ.ศ.อยู่แล้วให้เป็นข้อมูลเดิม)
ขอบคุณค่ะ
ขณะนี้นำเข้าข้อมูลจาก Excel มาใส่ในตารางในAccessแล้วข้อมูลจะมีพ.ศ.ปนกับ ค.ศ.ค่ะ
1/2/2014
1/5/2557
คำถาม
จะเขียนCode อย่างไรให้ข้อมูลเป็นพ.ศ.ทั้งหมด (บางข้อมูลเป็นค.ศ.ให้เปรี่ยนเป็นพ.ศ.ส่วนที่เป็นพ.ศ.อยู่แล้วให้เป็นข้อมูลเดิม)
ขอบคุณค่ะ
5 @R21012
ให้ไปกำหนดรูปแบบของข้อมูลใน Excel เป็น พ.ศ. หรือ ค.ศ. อย่างใดอย่างหนึ่งก่อน ถึงจะแก้ไขปัญหาได้
6 @R21016
อื่ม ถ้าข้อมูลมาแบบนี้แก้ไม่ได้แล้ว ก็ต้องใช้หลักคิดเหมือนที่เราเห็น ประมาณว่า ถ้าปีขี้นต้นไม่เกิน 20.. (ต้องตรวจสอบดูก่อนว่าปี พ.ศ. น้อยสุดที่มีในฐานข้อมูลคือปีอะไรด้วย มีน้อยกว่า 20 หรือไม่) ก็ให้ บวก 543 โดยใช้ฟังก์ชั่น dateadd("yyyy",543,[ฟิลด์วันที่]) แล้วใช้การ Loop แก้ไขข้อมูลตามเงื่อนไขเอา เช่น
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("ชื่อตารางเป้าหมาย", dbOpenDynaset)
rs.MoveFirst
Do Until rs.EOF
If Left(Year(rs!ชื่อฟิลด์วันที่), 2) <= 20 Then
rs.Edit
rs!ชื่อฟิลด์วันที่ = dateadd("yyyy", 543, rs!ชื่อฟิลด์วันที่)
rs.Update
End If
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
ประมาณนี้ ต้องปรับใช้ดูว่าตรงหรือไม่นะครับ ผมไม่ได้ทดสอบ สำรองข้อมูลก่อนทดสอบด้วยครับ
* แต่ต้องระวังไว้ว่า OS Windows เครื่องคุณต้องกำหนดปี พ.ศ. นะครับ ไม่งั้นวิธีนี้มันจะกลายเป็นว่าเครื่องจะมอง พ.ศ.2558 เป็น ค.ศ.2558 ส่งผลให้วัน จ. อ. ไม่ตรง วันที่ 29 กพ ในปี พ.ศ. กับ ค.ศ. นั้นๆ มีไม่ตรงกัน แล้วเกิด Error
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("ชื่อตารางเป้าหมาย", dbOpenDynaset)
rs.MoveFirst
Do Until rs.EOF
If Left(Year(rs!ชื่อฟิลด์วันที่), 2) <= 20 Then
rs.Edit
rs!ชื่อฟิลด์วันที่ = dateadd("yyyy", 543, rs!ชื่อฟิลด์วันที่)
rs.Update
End If
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
ประมาณนี้ ต้องปรับใช้ดูว่าตรงหรือไม่นะครับ ผมไม่ได้ทดสอบ สำรองข้อมูลก่อนทดสอบด้วยครับ
* แต่ต้องระวังไว้ว่า OS Windows เครื่องคุณต้องกำหนดปี พ.ศ. นะครับ ไม่งั้นวิธีนี้มันจะกลายเป็นว่าเครื่องจะมอง พ.ศ.2558 เป็น ค.ศ.2558 ส่งผลให้วัน จ. อ. ไม่ตรง วันที่ 29 กพ ในปี พ.ศ. กับ ค.ศ. นั้นๆ มีไม่ตรงกัน แล้วเกิด Error
7 @R21029
ขอบคุณอาจารย์TT T มากค่ะ
ตรงตามต้องการเลยค่ะ
ตรงตามต้องการเลยค่ะ
Time: 0.2838s