วันนี้เจอคำถามเกี่ยวกับปัญหานี้เหมือนกันครับ
ว่าจะ post ใหม่ เลยลองค้นดูก่อนเผื่อมาใครเจอ แต่กระทู้เก่าไปหน่อยครับ คงจะคนละปัญหา หรือปัญหาคนละแบบ
เริ่มจากเพื่อนผมอยู่ที่บ้านลาดเพชรบุรี โทร.มาหาแต่เช้า ถามว่าบันทึกยาแล้วเกิด error key violation ขึ้นจะแก้ยังไง ผมก็เลยขอ remote ไปดูปัญหาที่เกิดขึ้น แล้วก็ copy เอาข้อมูลเขา (drugitems, s_drugitems, drughint) มาลองทำที่เครื่องของผม ก็ยังเจอปัญหาเดียวกัน
สุดท้ายก็แก้ปัญหาได้ครับ
ผมแก้ปัญหาเรื่อง key violation ตอน save ข้อมูลยาให้แล้ว
ผมได้ลง HOSxP 3.54.11.2 เพื่อให้แน่ใจว่าไม่ไดเป็นปัญหาที่ version แต่ยังไม่ได้ทำการ upgrade structure ใด ๆ นะครับ
ซึ่งพบว่า เมื่อลง 3.54.11.2 ก็ยังเจอปัญหาเดิมอีก
ผมเลยไปดูที่ error อีกครั้ง โดยปักใจเชื่อในเรื่องข้อมูล drughint ครับ ว่ามีปัญหา โดยดูจาก error ที่เกิดขึ้น
select * from drughint where hc=100
ซึ่งสมมุติฐานของผมเป็นจริง
ผมพบว่า drughint มีข้อมูลที่คาดว่าจะซ้ำกันคือ
0100 เก็บให้พ้นแสง VS 100 เคี้ยวยาให้ละเอียดก่อนกลืน
0101 ยาละลายลิ่มเลือด VS 101 ทาบางๆ เฉพาะบริเวณที่เป็น
พอผมลองแก้ไข 0100 เป็น 0111 และ 0101 เป็น 0112 ก็สามารถ save ข้อมูลได้ โดยไม่เกิด error ใด ๆ
ตอนนี้คงต้องตามไปแก้ไขข้อมูลในตาราง drugitems ที่มี hintcode เดิม 0100 แก้ไขเป็น 0111 และเดิมเป็น 0101 แก้ไขเป็น 0112
และควรแก้ไขให้เป็น 4 หลักทั้งหมด ป้องกันการสับสนครับ
คืนนี้ลอง upgrade structure นะครับ จะใช้ 3.54.10.6 หรือ 3.54.11.2 ก็แล้วแต่
ผมเห็นว่าควรใช้ 3.54.11.2 เลย เพราะแก้ปัญหาไปหลายเรื่อง รวมทั้งเรื่องส่ง 18/21 แฟ้ม ปี 55 ด้วย
แต่ทุกเครื่องควร up ตามทั้งหมดนะครับ
เอามาเล่าให้ฟังเผื่อใครเจอปัญหาแบบนี้
ขยายความต่ออีกนี้นึง version หลัง ๆ ข้อมูลใน column hc ของตาราง drughint จะใช้เป็น 4 หลักนะครับ
update drughint set hc=right(concat("0000",hc),4)
update drugitems set hintcode=right(concat("0000",hintcode),4) where hintcode is not null or hintcode <> ""