เช็คการมาสายของพนักงาน
กระทู้เก่าบอร์ด อ.Yeadram

 2,866   3
URL.หัวข้อ / URL
เช็คการมาสายของพนักงาน

ผมมีแผนกงานอยู่ 5 แผนก มีตารางอยู่ 1 ตาราง เก็บ รหัสพนักงาน ชื่อพนักงาน การเข้าทำงาน(ทัน/สาย) รหัสแผนก
และต้องการให้มีข้อมูลในฟอร์มดังนี้ครับ

ป้อนรหัสแผนก ...........     ป้อนวันที่................

รหัสพนักงาน   ชื่อพนักงาน   การเข้าทำงาน(ทัน/สาย)
   00001           กกก                 ตรงนี้เป็นเช็คบ๊อก (ถ้าทันให้มีเครื่องหมายถูก)
   00002           กดกด                        "
   ........              ......                    .....................
   .......               ......                    .....................    
   .......               ......                    ......................

ผมต้องการให้เมื่อเลือกแผนกแล้ว ให้รายชื่อพนักงานในแผนกนั้นปรากฏขึ้นมาทั้งหมด แล้วให้ เช็ค ว่ามาสายหรือไม่ และเมื่อเช็คเสร็จแล้วให้นำกลับลงไปใน table อีกครั้งหนึ่งตามวันที่ครับ (คือว่าอยากให้คลิ๊กได้แค่ ทัน /สายครับนอกนั้นให้แก้ไขไม่ได้) และพอเช็คแล้วให้มีปุ่มบันทึกและยกเลิกด้วยครับ ขอเรียนถามท่านผู้รู้ ครับ คิดอยู่นานแล้วครับ ขอบพระคุณทุกท่านล่วงหน้าครับ

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

1 @R01063
1 สร้างตารางพักข้อมูล (ก็อปปี้ตารางหลักมาเลยก็ได้ ให้ชื่อว่า tbTemp)
2 สร้างฟอร์มจากตาราง tbTemp ทำให้เป็น continous form ฟิลด์ สาย/ทัน ให้เป็น checkbox
3 สร้างฟอร์มหลัก ไม่ต้อง ผูกกับตารางใดๆ
3.1 ส่วนหัวของฟอร์ม มีคอนโทรล ดังนี้
3.1.1 textbox (ป้อนรหัสแผนก) (txPartCode)
3.1.2 textbox (ป้อนวันที่) (txDate)
3.1.3 command (บันทึก) (cmdSave)
3.2 ส่วนรายละเอียดสร้างคอนโทรล subform ชื่อว่า child1
เลือกแหล่งเป็นฟอร์มที่สร้างตาม ข้อ 2

โค้ดในฟอร์มหลัก
'---------------------------------------------------
Function makeTemp()
' คำสั่งตรวจสอบการกรอกข้อมูลใน txPartCode -> ถ้าไม่ถูกต้อง -> exit function
' คำสั่งตรวจสอบการกรอกข้อมูลใน txDate -> ถ้าไม่ถูกต้อง -> exit function
' ถ้าการกรอกข้อมูลถูกต้อง ให้.......
Dim sq as string
sq = "Select * INTO tbTemp From ชื่อตารางต้นแบบ Where ......เทียบ txPartCode... AND ..... เทียบ txDate...."

docmd.setwarnings false
docmd.runsql sq
me.child1.form.requery
End Function
'---------------------------------------------------
Private Sub txPartCode_Exit()
MakeTemp
End sub
'---------------------------------------------------
Private Sub txDate_Exit()
MakeTemp
End Sub
'--------------------------------------------------
Private Sub cmdSave_Click()
if msgbox("ยืนยันว่าจะเซฟ",vbYesNo) = vbyes then
' สั่ง append จาก tbTemp เข้าตารางหลักทุกๆ เรคคอร์ด
' (เขียนให้เป็น SQL Statement แล้วค่อยสั่งทำงาน เหมือนๆ กับในฟังก์ชั่น MakeTemp ด้วยรูปแบบ INSERT INTO ...ชื่อตารางต้นแบบ... SELECT* From tbTemp)
else
' คำสั่งต่างๆ เมื่อไม่ต้องการเซฟ เช่นอาจจะสั่งให้ล้างค่า checkbox ดังนี้
'me.child1.form.controls("....ชื่อคอนโทล checkbox ในฟอร์มย่อย") = 0
'me.child1.form.refresh
' หรือสั่งล้างตาราง temp ไปเลยก็ได้ เช่น
'docmd.setwarnings false
'docmd.runsql "DELETE FROM tbTemp"
'me.child1.form.requery
' หรือให้มีกลับไปกระบวนการเริ่มต้นใหม่ เช่น
' Call MakeTemp
' หรือไม่ต้องมี else ก็ได้ แค่ไม่เซฟก็พอแล้วทีเหลือก็ไม่ต้องทำอะไรอีกเลย
end if
End sub
'-------------------------------------------------------

วิธีนี้พอได้มั้ยครับ..
- คุณจะทำงานปรับเปลี่ยนแก้ไขข้อมูลในตารางพักก่อน จนกว่าจะแน่ใจค่อยนำข้อมูลเข้าไปเก็บในตารางจริง
- ฟอร์มย่อยที่คุณทำงาน ไม่ต้องรับภาระโหลดข้อมูลจริงมาทั้งหมด เพราะมันจะโหลดมาแค่ข้อมูลตามที่คุณกรองเท่านั้น ช่วยประหยัดแรมไปได้หน่อย
2 @R01089
1.ต้องการว่า ถ้าป้อนข้อมูล แล้วให้ข้อมูลเดิมปรากฏขึ้นมาด้วยตามตัวอักษร
2.ขอทราบวิธีรวมเนื้อที่ดิน ไร่-งาน-ตารางวา เพราะเช่นเมื่อที่ดินหลายแปลง
เรารวมแล้ว จะได้ หลายตารางวา หรืหลายงาน จึงต้องเปลียนจากงานเป็น ไร่
400 ตารางวา =งาน
4 งาน =ไร่
ขอบคุณครับ
3 @R01126
เรียนอาจารย์ Yeadram ขอโทษด้วยครับที่หายไปนาน คือพื้นฐานผมน้อยมาก ก็ได้ค่อย ๆ เรียนรู้คำสั่งแต่ละอันที่อาจารย์แนะนำและฝึกทำ ก็เลยใช้เวลานานครับ ผมได้ลองทำดูแล้วครับทำได้ครับ คือ ทำงานกับ tbtemp ได้ เช็คได้ และสามารถนำกลับไปเก็บในฐานข้อมูลได้ โดยใช้คำสั่ง SQL และลบข้อมูลในตาราง tbtemp หลังจากที่บันทึกแล้ว รู้สึกว่าตื่นเต้นและดีใจ ที่เราก็ทำได้ครับ แต่ผมติดปัญหาที่ ถ้าเราป้อนแผนกซ้ำและวันที่ซ้ำเก่ากับที่เคยเช็คแล้ว มันก็ฟ้องเป็นภาษาอังกฤษออกมา ทำนองว่าข้อมูลซ้ำครับ ความต้องการของผมคืออยากให้มันฟ้องเป็นภาษาไทย "ว่าข้อมูลนี้ถูกเช็คไปแล้วกรุ?าป้อนใหม่" แล้วให้กลับไปป้อนแผนกและวันที่ใหม่ครับ ผมต้องเขียนโปรแกรมอย่างไรครับ และต้องเขียนในเหตุการณ์ไหน (ผมให้เขตข้อมูลรหัสพนักงานและวันที่ในตารางหลักเป็น PK ครับ) ผมได้อ่านหนังสือหลายเล่มเหมือนกัน และไม่ค่อยเข้าใจเกี่ยวกับเรื่องเหตุการณ์ ว่าเวลาเราจะเขียนโปรแกรมควรจะเขียนตอนไหน เขียนอันไหนก่อน อันไหนหลังถ้าเป็นไปได้ก็ขอความกรุณาอาจารย์ ช่วยแนะนำในบอร์ดเกี่ยวกับเรื่องเหตุการณ์และการเขียนโปรแกรมในเหตุการด้วยน่ะครับ ผมคิดว่าคงเป็นประโยชน์กับมือใหม่อย่างผมและเพื่อน ในบอร์ดจะได้เอาเป็นพื้นฐานต่อไปครับ ขอบคุณมากครับอาจารย์ และขออภัยที่รบกวนครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3373s