Tags:

สวัสดีครับ คือว่าตอนนี้ผมกำลังทำแอพตัวนึงซึ่งใช้ในบริษัท (เป็นบริษัทจำลองของมหาวิทยาลัย ให้นิสิตได้ลองรันบริษัทดู)

โดยแอพให้แต่ละฝ่ายใช้ออกเอกสารต่างๆ เช่น ใบสั่งขาย ใบสั่งซื้อ ใบแจ้งหนี้ ฯลฯ โดยใชัภาษา VB.NET และเก็บข้อมูลด้วย SQL Server ครับ

ในการทำแอพเท่าที่ศึกษาจากในเน็ต เห็นว่าการเปลี่ยนไปใช้แต่ละหน้าของโปรแกรมมี 2 แบบคือ สร้างฟอร์มใหม่ หรือ สร้าง User Control แล้วเพิ่มลงใน Form ซึ่งสงสัยว่าจริงๆแล้วควรเป็นแบบไหน แต่ละแบบมีข้อดีข้อเสียอย่างไรครับ

การเก็บข้อมูลด้วย SQL มีการเก็บข้อมูลวันที่ครับ โดยเก็บในรูป ปีค.ศ. - เดือน - วัน เช่น 2019-05-30 แต่เวลาแก้ไขหรือเพิ่มข้อมูลบางทีมันจะชอบขึ้นเป็น 1476-05-30 แทน โดยปีจะ -543 ครับทั้งที่ผมใส่เป็น ค.ศ. อยู่แล้ว เลยสงสัยว่าต้องมีตั้งค่าตรงไหนยังไงรึเปล่าครับ เพราะเท่าที่เสิร์ชไม่เจอวิธีแก้เลย

ขอบคุณครับ

Get latest news from Blognone
By: bluezip
AndroidUbuntuWindows
on 29 March 2019 - 10:32 #1103650

User กรอกข้อมูลเป็น คศ.

By: melvinmcrn on 1 April 2019 - 00:36 #1103871 Reply to:1103650

ปกติเวลากรอกจะให้ใช้ DateTimePicker ใน VB.NET อยู่แล้วครับ แล้ว insert เข้า database เป็น ค.ศ. ครับ แต่พอมีการแก้ไขเมื่อไหร่ หลังจาก save มันจะเปลี่ยนเป็นปี 1976 เองตลอดเลยครับ

By: Architec
ContributorWindows PhoneAndroidWindows
on 29 March 2019 - 11:21 #1103656

.NET โดยปกติถ้าคุณใช้

  • SqlDataAdapter + Parameter แทนการใช้ SQL String ต่อกันยาวๆ(เสี่ยง injection)
  • DateTimePicker แทนการกรอกวันที่บน TextBox

คุณจะไม่มีปัญหาเรื่องของวันที่เลยครับ ถึงเครื่องคอมจะตั้งค่าเป็น พ.ศ. หรือ DateFormat หลายรูปแบบก็ตาม

By: melvinmcrn on 31 March 2019 - 15:19 #1103845 Reply to:1103656

ปกติใช้ DateTimePicker ครับ แต่บางทีมีต้องแก้ไขข้อมูลใน DB ก็จะใช้ Microsoft SQL Server Studio แล้วใช้ edit เอาอะครับ แต่พอดี edit เสร็จสมมติกรอกเป็น 2019-03-10 พอกด enter มันจะขึ้นเป็น 1476-03-10 เฉยเลยอะครับ

By: Architec
ContributorWindows PhoneAndroidWindows
on 1 April 2019 - 18:34 #1104055 Reply to:1103845

ลองแก้ Collation เป็น SQL_Latin1_General_CP1_CI_AS ครับ แล้วปรับ Windows regional setting เป็น EN-US และอาจจะปรับ dateformat เป็น yyyy-mm-dd ก็ได้(ไม่บังคับ)

By: McKay
ContributorAndroidWindowsIn Love
on 1 April 2019 - 01:40 #1103886
McKay's picture

CALENDAR เป็นอะไรครับ

edit: ผมไม่รู้ว่า Microsoft SQL มี NLS_CALENDAR แบบ Oracle หรือเปล่าครับ ถ้ามีต้องเปลี่ยนดู

หรือถ้าไม่มี ลองเช็คว่า Windows ของตัว server เซ็ตค่า regional แบบไหนครับ


Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)

By: three92 on 1 April 2019 - 13:56 #1104013

ที่ผมเคยทำ ผมใช้ User Control น่ะ เพราะถ้าสร้าง form ใหม่ จะชอบมีปัญหาเวลาใช้งานน่ะคร้บ

ส่วนวันที่ถ้าจำไม่ผิด เครื่องตั้งค่าวันที่เป็น ไทย แล้วเครื่องที่ทำการเก็บ DB เก็บเป็น ค.ศ. หรือเปล่า ของผมจะใช้วิธีตรวจสอบถ้าปี เกิน 2500 ก่อน save จะแปลงค่าวันที่ให้ตรงกับ format ของเครื่องน่ะครับ ถ้าเอาสะดวกแนะนำ ตั้งเวลาเครื่องให้เป็นปี ค.ศ. จะง่ายกว่าครับ

By: xobser
Android
on 2 April 2019 - 13:29 #1104150

ตั้งแต่หลุดจาก vb6 มาจนถึง .net ผมใช้
System.Globalization
System.Threading
ไม่เคยมีปัญหาเรื่องวันที่เลยไม่ต้องอิง OS เหมือน vb6 เลย
format มาตรฐาน DB มันจะเป็น คศ. yyyy-mm-dd ทั้งหมด
เปลี่ยน currentthred สลับไปสลับมาไม่เคยเจอปัญหาอะไร debug ดูซักรอบว่า thread en-US หรือ th-TH
ออกมารูปแบบไหนได้ผลลัทธ์มาก็จัดรูปแบบส่งเข้า DB จบ