ระบบยืม-คืนเวชระเบียน
กระทู้เก่าบอร์ด อ.Yeadram

 7,538   15
URL.หัวข้อ / URL
ระบบยืม-คืนเวชระเบียน

สวัสดีค่ะอาจาร์ย ขอความช่วยเหลือค่ะ หนูจะทำระบบยืม-คืนเวชระเบียน โดยมี 2 ตาราง คือ
1.ตารางรายละเอียดผู้ยืม (ผู้ยืม,หน่วยงาน,วันที่ยืม,กำหนดวันคืน,เพื่อ,....)
2.รายการเวชระเบียน(hn,an,วันส่งคืน,...) ตารางนี้เป็นฟอร์มย่อยของตารางที่1
ปัญหา
1.ทำอย่างไรถึงจะทราบว่า เมื่อบันทึก an ของเวชระเบียนฉบับนั้นแล้ว ยังอยู่ที่แผนกสามารถค้นออกมาให้ยืมได้ แต่ถ้าเวชระเบียนฉบับนั้นถูกยืมไปก่อนนั้น ให้ปรากฏข้อความเตือนว่าเวชระเบียนนั้นไม่อยู่ที่แผนก อยู่ที่ใคร กำหนดวันคืนเมื่อไร
2.ถ้าทำแบบยิงบาร์โค้ด ยากไหมคะ ทำอย่างไรคะ
        ขอบคุณมากๆ ค่ะ

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

1 @R00521
ตอบ ข้อ 1 ต้อง วน LOOP หา AN ที่บันทึกไว้แล้ว และ ยังต้อง แยกเงื่อนไข AN ที่คืนแล้วด้วย
มันจะคล้ายตัวอย่างนี้ ลอง APPLY นะครับ

Private Sub ID_dr_Afterupdate()
Price = Uprice_unit
          Dim a As Integer
          Dim b As Integer       
           a = id_TabianBoek
           b = ID_dr   
          Dim rst As Recordset, dbs As Database
          Set dbs = CurrentDb()
          Set rst = Me.RecordsetClone
          On Error GoTo errl:
          rst.MoveFirst
Do Until rst.EOF

               If rst![id_TabianBoek] = a And rst![ID_dr] = b Then

                                MsgBox ("ข้อมูล รหัสยาซ้ำ มีการ key แล้วก่อนหน้านี้")
                                             
                               Exit Sub
                                                              
                            End If
              rst.MoveNext
            Loop
                     rst.Close                                   
   Set dbs = Nothing
errl:    Exit Sub

End Sub

2 @R00523
เรียน น้องจงกล
โจทย์ที่หนูให้มานั้นไม่ยากเท่าไหร่หรอกนะ ไม่ทราบว่า อยากจะขอรายละเอียดเกี่ยวกับสิ่งที่ต้องการ จากสิ่งที่มีอยู่ อยากจะให้ Scan ไฟล์เป็น Jpg แล้วส่งไปที่ email : accboard@gmail.com

เพื่อความสะดวกขอเหล่าสมาชิกจะได้ช่วยกันดู

ส่วนเรื่องเรียนหากสนใจที่จะเรียนก็ให้ทิ้ง Email ไว้ครับ ผมจะติดต่อไปเผื่อจะได้จัดสอนบรรดามือใหม่หัดเขียนด้วยได้หลายคนด้วยก็จะเป็นการดีจะได้มีแฟนพันธุ์แท้เพิ่มขึ้น โดยตัวผมสะดวกพื้นที่ในกรุงเทพฯ ไม่ทราบว่า คุณจงกลจะสะดวกหรือเปล่า (อยู่ต่างจังหวัดหรือเปล่า)

www.gmail.com
userName : accboard
password : accgmail
3 @R00524
ผมว่าออกแบบฐานข้อมูลผิดแล้ว ดูแล้วแปลกๆ แต่บอกว่าผิดตรงไหนยังไม่ได้เสียทีเดียว เพราะต้องรู้ถึงวัตถุประสงค์ของระบบโดยละเอียด ถ้าระบบนี้ทำเล่นๆหรือเป็นการบ้านส่งครู ก็ยังพอกล้อมแกล้ม แต่ยังคิดว่าผิดอยู่ดี ลองไปไล่ดูตามขั้นตอนของการทำ Normalization ดูนะครับ
4 @R00525
ไม่แน่ใจว่าใช้ HN หรือ AN ครับ ถ้าใช้ HN มันน่าจะเป็นอย่างนี้
Private Sub HN_Afterupdate()
          Dim a As Integer      
           a = HN   'รับค่าตัวแปร HN ที่ current record มาเก็บในตัวแปร a
          Dim rst As Recordset, dbs As Database
          Set dbs = CurrentDb()
          Set rst = Me.RecordsetClone
          On Error GoTo errl:
          rst.MoveFirst ' เลื่อนไป RECORD แรกสุด
Do Until rst.EOF     'ทำซำจนกว่าจนถึง RECORD สุดท้าย
               If rst![HN] = a Then   'เปรียบเทียบ แต่ละ RECORD ว่ามี HN เท่ากับ a หรือไม่
ถ้ามีให้เตือนด้วย MSGBOX

                                MsgBox ("พบการยืมเวชระเบียน HN นี้ก่อนหน้านี้")
                                              
                               Exit Sub
                                                               
                            End If
              rst.MoveNext
            Loop
                     rst.Close                                   
   Set dbs = Nothing
errl:    Exit Sub

End Sub

เอาแค่นี้ก่อนลองดูผลที่เกิดขึ้น แล้วค่อย APPLY เงื่อนไขที่ยากขึ้น ตรงบรรทัด
If rst![HN] = a Then

อาจจะเพิ่มการ CHECK เงื่อนไขอื่นๆ ด้วย OR หรือ AND ของ FIELD อื่นอีก
เพื่อให้ตรงวัตุประสงค์ของการเขียน
5 @R00569
ถึง น้องจงกล
รบกวนตอบเมล์ที่ผมส่งไปหาด้วยครับ
6 @R00598
"
     จะมีแถมป้ายที่บรรทัด rst.MoveFirst 'เลื่อนไป record แรกสุด
     compile error:
     Method or data member not found
"

จากที่ผมไปโหลดตัวอย่างมาลองเล่นดู มันเป็น Access 2007 ซึ่งผมเองก็ไม่ค่อยถนัด แต่ก็พยามไล่เรียงดู
- ไลบรารี่ที่ผมไม่มี ก็ error missing ตามระเบียบ คือ adobe browser control
ผมก็เอาออกก่อนเหอๆ (ถ้าเครื่องคุณจงกลงไม่ Missing ไม่ต้องยุ่งกับมันก็ได้นะครับ)
- ลองคอมไพล์ ดู เห็นมีที่ error ตามที่บอกไว้ที่ Reply ก่อนหน้า จึงย้อนกลับไปสำรวจ
   ก็เห็นว่า ประกาศตัวแปรผิดครับ คุณจงกล แถม s ไปให้มัน 1ตัว มันจึงไม่รู้จัก object ตัวนี้

Dim rst As Recordset(s), dbs As Database
ตัว s ที่อยู่ในวงเล็บ ไปเอาออกซะนะครับ

- ต่อมาสั่ง คอมไพล์อีกครั้ง เห็นว่า ที่ฟอร์มหนึ่ง (จำไม่ได้ว่าฟอร์มอะไร) ไม่มี End sub ที่ท้ายโพรซีเยอร์   เอาไปใส่ให้มันด้วยครับ
ทีนี้ผมลองรันฟอร์ม คอมไพล์โค้ด ผ่านครับ!
แต่เนื้อหา หรือการทำงานว่า สั่งข้อมูลอะไรไปไหนอย่างไร ผมยังไม่ได้ดูนะครับ พอดีหมดเวลา ต้องรีบเข้างานอิอิ ที่ทำงานก็ไม่มี office2007 ด้วย เดี๋ยวยังไง จะตามดูต่อให้เย็นนี้ครับ (ถ้าคุณจงกลยังแก้ปัญหาไม่ได้นะ แต่ถ้าแก้ปัญหาได้แล้วก็บอกด้วยนะครับจะได้ไม่ตามต่อ)

7 @R00605
ถ้าเป็น TEXT ใช้   AS STRING ครับ
8 @R00612
เนื่องจากผมไม่มี ACCESS2007 ผมเลยเปิดไม่ได้ ผมเลยจินตนาการไม่ออกว่า ขั้นตอนหรือระบบการทำงานเป็นอย่างไรบ้าง แต่ขออธิบายว่า CODE ใช้อย่างไร
สมมุติ มี RECORD ดังนี้
HN       NAME
456      xxxx
566     ZZZZ
400    YYYY
456    xxxxx
ตรง RECORD สุดท้ายเมื่อ KEY เสร็จ มันจะตรวจสอบ ว่ามีใครซำหรือไม่
ถ้าดูด้วยตา จะเห็น HN ซำกับ RECORD แรก มันจะเตือน
จากตัวอย่าง จะเห็นว่าเป็น ตารางเดี่ยว กรณีคุณจงกลนี อาจเป็น
2 FORM ซึ่งผมเดาว่า เป็น MAIN FORM และ SUB FORM
ทำให้เงื่อนไขไม่ตรงกันได้ ถ้าจะให้เข้าใจ ลองทำกับตารางเดี่ยวดูก่อนก็ได้
ครับ โดยสมมุติ FORM เลย เอาแบบ DATASHEET ก็ได้
เมือเข้าใจแล้ว ค่อยลองเงื่อนไขที่ยากครับ
ส่วนกรณีมี 2 FORM LINK กัน ก็สามารถทำได้
ลองดูก่อนครับ
เด๋ยวพรุ่งนี้ผมจะส่งตัวอย่างไว้ที่ Gmail อีกที ACCESS97 ครับ
วันนี้หมดเวลางานพอดี

9 @R00616
หลังจากที่ผมบอกว่า เย็นๆ จะดูให้ ผมเพิ่งว่างและดูให็
ถ้าจะให้ทำต่อจากที่ทำไว้ ก็อาจจะพอได้แต่คงลำบากหน่อย

ผมว่าจะออกแบบให้ใหม่หมดเลย เนื่องจากที่ออกแบบมานี่ค่อนข้างไม่รัดกุมเท่าไหร่
ผมอาจจะออกแบบและเขียนฟอร์มเบื้องต้นให้ได้ โดยตอบสนองต่อคำถามข้อที่ 1 ของกระทู้ได้เท่านั้น ส่วนข้อที่ 2 ผมคงช่วยไม่ได้ เพราะผมเองไม่เคยใช้ เครื่องสแกน เพราะฉะนั้นสำหรับข้อ 2 คุณจงกลอาจต้องคอยสอบถามจาก อ.ศรี-นคร ต่อนะครับ
แต่ก่อนจะออกแบบร่างให้ ผมขอถามเพิ่มเติมอีกนิดหน่อย
- จำเป็นหรือไม่ ต้องเป็นเวอร์ชั่น 2007
- ลักษณะการยืมเวชระเบียน ยืมได้ 1เล่ม/คน/ครั้ง หรือว่า หลายเล่ม/คน/ครั้ง (ผมเรียกลักษณะนามของเวชระเบียนว่าเล่มถูกต้องหรือเปล่าไม่รู้นะ)
- เมื่อบันทึกการยืม จำเป็นต้องกำหนดวันส่งเลยหรือ ไม่กำหนดได้ม้้ย รอจนกว่าเค้าจะเอามาคืนค่อยเก็บวันคืน เอาเลย
ทั้งสามข้อที่ถามเพราะว่าจะใช้ในการตัดสินใจออกแบบตารางและความสัมพันธ์ของตารางนะครับ ค่อนข้างจำเป็นที่จะต้องรู้ เพื่อให้ฐานข้อมูลทำงานได้ดี

ปล. พอดีทราบว่า ทั้ง อ.ศรีนคร ทั้งคุณ kratok-man ยังคอยช่วยอยู่อีกแรง ถ้าโปรแกรมทำงานได้ตามต้องการแล้ว ช่วยบอกด้วยนะครับ ผมจะได้หยุด อิอิ
10 @R00617
ผมมานั่งนึกดู การที่ทำงานแบบ MIAN FORM ,SUBFORM
นั้น SUBFORM จะเปิด RECORD กลุ่มหนึ่งที่ล้อไปตาม ID แม่ (ไม่ใช่ทั้ง TABLE)
(CODE อยู่ใน SUBFORM ถูกไหมครับ)
ดังนั้น การใช้ CLONE คงไม่ได้ เพราะผมเข้าใจว่า
คงจะ CHECK ทั้งตาราง ที่ HN ถูกยืมไป จะยืมโดยใครก็ช่าง
ส่วน จะ CHECK ต่อไป ว่า เอาเฉพาะ ที่ยังไม่คืน ก็ใช้ เงื่อนไข AND , OR
อย่างที่เคยบอกไว้ ในที่นี้คงเป็น FILED ประเภท YES/NO ใช่ไหมครับ

ดังนั้น CODE น่าจะถูกแล้ว แต่ต้องเปิด RECORD SET ใหม่
ให้เอาทั้ง TABLE ที่เป็น SUBFORM ไม่ CLONE มา
เช่น set rst=currentDB.openrecordset("ชื่อ TABLE ที่เก็บ HN")
ลองนะครับ
***ตัวอย่างว่าจะส่งทาง mail แต่คงไม่มีเวลา
นึกสงสารประเทศไทย ในช่วงนี้ จนไม่อยากทำอะไร เฮ้อ
11 @R00618
ถึงคุณ kratok-man
อย่าท้อครับ "ปล่อยมันเป็นไป" - john lennon
อย่าเปิดทีวีครับ นอกจากดูข่าวกีฬากีฬา อิอิ
12 @R00620
ลองเอาไฟล์จากลิงค์นี้ไปแกะดูนะครับ

http://www.access-training.org/2008/modules.php?name=Downloads2&op=getit&lid=76
13 @R00634
ต้องขอโทษด้วยครับ ผมใช้ Access-2002 อยู่ ผมพยายามลง Access-2007 พอเปิดเข้ามาเซ่อรับประทานครับ เมนูเปลี่ยนไปมาก งงเป็นไก่ตาแตกเลย งานนี้ขอบาย
14 @R00638
ขอแนะนำเพิ่มเติมหลังจากเท่าที่อ่านดูความต้องการของระบบแล้ว เทเบิลก็น่าจะเป็นดังนี้

1) เทเบิลผู้ป่วย (HN, คำนำหน้าชื่อ, ชื่อ, ชื่อกลาง, นามสกุล, เพศ, ว/ด/ป เกิด, ที่อยู่, เลขบัตรประชาชน, Passport No, เบอรโทร., ยาที่แพ้, ...)

2) เทเบิลการ ADMIT (HN, AN, วันที่แอดมิท, สาเหตุการ ADMIT, สถานะปัจจุบัน (ยังอยู่, ตาย, หาย, กลับบ้าน, กำลังไปแผนกโน้นนี้, ส่งต่อ รพ.อื่น, ...), ตึก, เลขห้อง, เลขเตียง, แพทย์เจ้าของไข้, ...)

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

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

ส่วนเรื่องฟอร์ม ก็จะมีฟอร์มการป้อนยืม, ฟอร์มการเปลี่ยนแฟลกว่าได้ยืมไปแล้ว ซึ่งอาจใช้ฟอร์มเดียวกับฟอร์มการป้อนยืมก็ได้, ฟอร์มการคืน, ฟอร์มค้นหา เป็นต้น รายละเอียด อ. ท่านอื่นคงกำลังช่วยกันอยู่แล้ว

- ทำอย่างไรถึงจะรู้ว่าแฟ้มอยู่หรือไม่ ... ก็ถ้าการยืมที่มีแฟลกว่าให้ยืม แต่ยังไม่มีการป้อนวันที่คืน ก็แสดงว่าแฟ้มยังไม่ได้รับคืนมา

- บาร์โค้ดทำยากไหม ... ปกติไม่ยาก เพราะมีฟอนท์ที่หาโหลดเอาได้ เป็นของฟรี ก็ติดตั้งลงใน Control Panel > Font เมื่อจะใช้ ก็กำหนด textbox ให้เป็นฟอนท์ที่ว่า แล้วใส่ค่าลงไป สิ่งที่ปรากฏใน texbox จะเป็นแท่งบาร์โค้ดแทนตัวเลขตัวอักษร
15 @R04912
สวัสดีคับ ผมเป็นอีกคนหนึ่งที่เป็นมือใหม่หัดเขียน อยากให้อาจารย์ช่วยแนะนำโค้ดในการเขียน vb หน่อยคับ ผมต้องส่ง project เกี่ยวกับงานเวชระเบียนคับ
ในการเพิ่ม อัพเดท ลบ แก้ไข ข้อมูลของผู้ป่วยนี่ต้องเขียนโค้ดยังไงบ้างคับ
กรุณาตอบด้วยนะคับ ขอบคุณคับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3219s