แนวคิดเกี่ยวกับการอัพเดทระบบอัตโนมัติ?
กระทู้เก่าบอร์ด อ.Yeadram

 1,830   9
URL.หัวข้อ / URL
แนวคิดเกี่ยวกับการอัพเดทระบบอัตโนมัติ?

อยากสอบถามเกี่ยวกับแนวคิดในการทำให้ระบบที่เราสร้างขึ้นมีการอัพเดทอัตโนมัติ
เพราะ เจอปัญหาที่ต้องไปอัพเดทระบบให้กับเครื่อง client ทุกเครื่อง คือมันไม่ค่อยสะดวกเลย client บางเครื่องอยู่อีกตึกนึงก็ต้องเดินไปไกล ก็เลยอยากจะทำให้ระบบของเรามีการอัพเดทอัตโนมัติเมื่อเราทำการแก้ไขปรับปรุงโปรแกรม โดยอัพเดทจากเครื่อง client ได้เลย ซึ่งไฟล์ที่ปรับปรุงแล้วจะอยู่ใน server
ต้องเริ่มต้นอย่างไรดีคับ

9 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R01916
ที่ backend
มีตาราง หลัก tbUpdate
- ud_Version (text เก็บหมายเลขเวอร์ชั่น primary)
- ud_Date (date/time เก็บวันที่อัพเดต ไว้สืบค้น)
มีตารางรอง tbUdDetails
- obj_id (long ลำดับออปเจคที่อัพเดตในเวอร์ชั่นนี้ คีย์ร่วม)
- ud_Version (text คีย์ร่วม สัมพันธ์ตารางหลัก)
- obj_name (text ชื่อ object ที่อัพเดต เช่น frmMain, qryTotal)
- obj_Type (เก็บเป็น Long ก็ได้ หรือเป็น text ก็ได้ เพื่อระบุว่า เป็นออปเจ็คอะไร เช่น Module, Query, Report)
- obj_Description memo (รายละเอียดเพิ่มเติม ไว้สืบค้น และง่ายต่อการพัฒนาเวอร์ชั่นต่อไป)

เมื่อมีการอัพเดต ให้ใส่หมายเลขเวอร์ชั่น?ละวันที่ไว้ในตารางหลัก
ใส่ รายละเอียด ว่าอัพเดตอะไรบ้าง เช่นฟอร์มใด คิวรี่ใด โมดูลใดไว้ในตาราง details


ที่ frontend
มีตาราง tbUpdate
มีฟิลด์เดียว เก็บ หมายเลข update หรือ เวอร์ชั่น

เมื่อ client เปิดโปรแกรม ให้ทำการตรวจเช็คเวอร์ชั่น โดยเทียบหมายเลขเวอร์ชั่นจากตารางทั้งสองฝั่ง ว่าของ client เป็นเวอร์ชั่นล่าสุดหรือเปล่า
ถ้า ไม่ใช่เวอร์ชั่นล่าสุด ก็เขียนโค้ด ให้ฝั่ง client
- import เฉพาะ ออปเจค ที่มีการอัพเดต
- บันทึกหมายเลขเวอร์ชั่นล่าสุดเข้าตารางฝั่ง client
- เมื่อเสร็จขั้นตอนค่อยให้ ฝั่ง client ทำงานตามปกติ

แค่แนวคิดนะครับ เพิ่งคิดได้ตะกี้นี้เอง ยังไม่เคยลอง แต่คิดว่าน่าจะง่ายเหมือนกัน หรือใครๆ มีแนวคิดที่ง่ายกว่า กระชับกว่า ช่วยแสดงความคิดเห็นด้วยนะครับ ขอความรู้ด้วยคนครับ
2 @R01917
แนวคิดเยี่ยมเลยคับ ขอบคุณมาก
แต่ติดตรงที่ไฟล์ mde ไม่สามารถ import frm rpt mrc mdl คับ
จำเป็นต้องทำเป็น mde คับ เพราะ user ชอบลองของคับ
พอจะมีวิธีอื่นป่ะคับ หรือว่าให้ก๊อปไฟล์ที่ปรับปรุงแล้วใน server มาแทนที่ client เลย ดีป่ะคับ? (ต้องเขียนโค้ดให้ก๊อปไฟล์ยังไง ?)
3 @R01918
คร่าวๆคือ ทุกครั้งที่มีการอัพเดต คุณสร้าง .mde ไปวางไว้ที่ server ทุกครั้งที่โปรแกรมเปิดมาทำงาน จะต้องเช็คจาก server ว่ามีไฟล์ .mde ที่เวอร์ชั่นใหม่กว่าหรือไม่ ถ้ามีก็ก๊อปปี้ .mde มาไว้แทนตัวเดิม แต่จะมีปัญหาอีกหลายอย่างที่คุณจะต้องแก้ไข ยกตัวอย่างเช่น

- เราไม่สามารถก๊อปปี้ .mde มาทับ .mde ที่กำลังเปิดใช้งาน   ดังนั้น .mde ปัจจุบันต้องไปเรียกโปรแกรมอะไรสักตัวที่ทำหน้าที่ก๊อปปี้แทน พอเสร็จแล้วก็ต้องไปเรียก .mde ตัวใหม่ให้ทำงานด้วย

- ถ้าใช้ Linked-Table คุณต้องปรับปรุง Linked-Table ให้โยงไปยังไฟล์และโฟลเดอร์ที่ถูกต้องบน server ระหว่าง runtime ให้ได้

- ถ้าแต่ละเครื่องมี environment ที่ต่างกัน เช่นใช้ Access XP บ้าง 2003 บ้าง   2007 บ้าง มีอะไรที่แตกต่างกันไหม แล้วจะต้องเซ็ทค่าอะไรไหมเพื่อให้ .mde ตัวใหม่ใช้งานได้อย่างถูกต้อง

- ถ้าอัพเดตไม่ได้ หรือโปรแกรมชุดใหม่ทำงานผิดพลาด จะกู้เอาเวอร์ชั่นเดิมมาใช้ได้หรือไม่

- โปรแกรมเวอร์ชั่นใหม่อาจต้องสัมพันธ์กับเทเบิลบน server ที่มีโครงสร้างเปลี่ยนไป หรือโปรแกรมเวอร์ชั่นเดิมทำงานผิดพลาด ดังนั้นจะต้องทำอย่างไรถึงจะบล็อคไม่ให้เวอร์ชั่นที่ไม่ถูกต้องทำงานได้ ทุกๆเครื่องต้องมีเวอร์ชั่นที่เหมือนกันเท่านั้นถึงจะทำงานได้ แต่... บางครั้งก็ไม่จำเป็น เพราะเวอร์ชั่นที่ใหม่กว่า อาจแก้ไขเล็กน้อย ไม่ได้เกี่ยวกับความถูกต้องของข้อมูลในฐานข้อมูล ผู้ใช้จะอัพเดตโปรแกรมหรือไม่ ก็ไม่เป็นไร... คุณจะเลือกแบบไหน หรือผสมผสานกันได้

- หรือถ้าเผลอเอาแบ็คอัพของฐานข้อมูลเวอร์ชั่นเก่ามา แต่โปรแกรมได้กลายเป็นเวอร์ชั่นใหม่ไปแล้ว คุณจะทำยังไง

นี่คร่าวๆที่คิดออกครับ
4 @R01945
ขอบคุณครับ
5 @R05917
Test --Post ไม่ได้ครับ
6 @R05920
ไปลองทำดู ของตัวเอง เพราะขี้เกียจไป UPDATE Front Office เหมือนกัน ลองคิดดูแล้ว ผมเลยใช้หลักการดังนี้
1.ให้ Version เดิม ที่ Run อยู่ เมื่อ LOAD ตรวจสอบดูว่ามี VERSION ใหม่ ที่เครื่อง Server ไหม (Version ใหม่ ผมตั้งชื่อเดิม เพียงแต่ตัวเลขเพิ่มขึ้น เช่น MexVer2.mde) ตรวจเฉพาะ เลข 2 (ใช้การตัด String) ถ้ามากกว่าตัวเดิม ให้ Copy มาใส่ ที่ paht เดียวกัน(ตัวเดิมเป็น MexVer1.mde ในที่นี้คือ 2>1)
7 @R05923
2.บังคับ ให้ Run Version ใหม่ และ Close Version เดิม
8 @R05924
3.ให้ Version ใหม่ ตรวจดูว่ามี Version เดิม ใน PATH เดียวกันหรือไม่ ถ้ามีและน้อยกว่า เช่น 1 น้อยกว่า 2 ให้ลบออก)ตอนนี้ถ้ามี VERSION ใหม่ ผมก็ COPY Front office ไว้ที่ Server ที่เดียว แล้วก็เพิ่มตัวเลข Version ไปเรื่อยๆ มันก็ Update เองได้ ก็เป็นอีกแนวทางที่อยากเสนอครับ แต่อย่าถาม Code นะครับว่าเขียนยังงัย เพราะผมไปลอกมาจาก Help และใช้ FileSystemObject ร่วมด้วย เนื่องจากยังไม่คล่อง ก็เขียนซะยาวเชียวและออกแนวมั่ว เอาเป็นว่าทำงานพอได้ และก็ได้อย่างต้องการตามหลักการนี้แหละครับ
9 @R05925
Post จบเสียที ไม่รู้เป็นอะไร เครื่อง Post ไม่เข้า Eror มันฟ้องประมาณว่า Scrip Mid Error ผมก็เลย ลองตัดประโยค ให้สั้น ลองเปล่ี่ยนเครื่องหมาย มากกว่า น้อยกว่า
เป็นคำเขียน ถึงได้
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3293s