กระทู้เก่าบอร์ด อ.Yeadram
2,120 11
URL.หัวข้อ /
URL
สอบถามหน่อยค่ะ ไม่รู้จะตั้งหัวข้อคำถามว่่ายังไง
จะสอบถามค่ะว่า ตามรูปด้านบนนะค่ะ ในช่องของรายการ จำนวนเบิกหลัง
วันที่เบิก คงเหลือ และำจำนวนเบิก คือถ้าสมมติว่าเราต้องการให้คีย์ข้อมูลทุกอย่าง
ให้เสร็จเรียบร้อย พอกดปุ่ม พิมพ์ใบเบิก จะให้ทำการล๊อคช่องที่พูดมาข้างต้นเพื่อไม่ให้ทำการแก้ไขอีก ควรทำไงค่ะ
11 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R16562
ลองตอบแบบคนที่ประสบการณ์น้อยนะครับ เนื่องจาก Coding ไม่เป็น และพึ่งหัดเขียน Access ถ้าเราใช้วิธีเขียนมาโครสั่งให้ย้ายรายการนี้ไปไว้ในอีกตารางหนึ่งเลยจะได้หรือเปล่าครับ เพื่อไม่ให้ฟอร์มนี้เห็นรายการนี้อีก ส่วนรายการที่พิมพ์ไปแล้ว ค่อยไปดูในตารางประวัติการเบิกแทน
2 @R16563
คือที่พี่พูดหมายถึงให้สร้างตารางอีกตารางหนึ่งมาเพื่อที่จะแสดงอย่างเดียวเลยใช่ไหมค่ะ ?
3 @R16565
เนื่องจากผมก็ยังไม่ทราบว่า Access มีฟังค์ชั่นหรือคำสั่งอะไรที่จะสามารถไป Lock ข้อมูลระดับ Record ได้หรือเปล่า (แต่ถ้า Lock ระดับ Field นั้นทำได้อยู่แล้ว) มือใหม่อย่างผมเลยอาจแก้ปัญหาโดยไปสร้างอีก 1 ตารางหนึ่งขึ้นมา สมมุติใช้ชื่อว่า Print_History ไว้เก็บรายการที่เคยสั่งพิมพ์ไปแล้ว ส่วนวิธีการทำนั้น ก็ไปสร้าง Query Append ไว้ตัวหนึ่ง และ Query Delete อีกตัวหนึ่งไว้ใช้คู่กัน แล้วไปเขียนมาโครผูกไว้ที่ปุ่มสั่งพิมพ์ครับ เดี๋ยวถ้ามีเวลาว่างจะลองทำดูเหมือนกันครับว่าได้หรือเปล่า เพราะยังไม่เคยเขียนงานลักษณะนี้เหมือนกันครับ
4 @R16567
หลักการคือ
1. สร้างอีกฟิลด์เป็น boolean ในเทเบิลของหัวฟอร์ม เพื่อเก็บว่าใบนี้ได้พิมพ์แล้วหรือไม่
2. เมื่อสั่งพิม์แล้วต้องเขียนโค้ดเพื่ออัพเดตฟิลด์นี้ให้เป็น true และสั่ง textbox ที่ต้องการให้ .Locked = true
3. เขียนโค้ดในอีเว๊น OnCurrent ของฟอร์ม ถ้า ฟิลด์ที่เพิ่มเป็น true ก็สั่ง textbox ต่างๆให้ .Locked=true (เหมือนข้อ 2) ถ้าไม่ใช่ก็สั่งเป็น .Locked=false แทน
1. สร้างอีกฟิลด์เป็น boolean ในเทเบิลของหัวฟอร์ม เพื่อเก็บว่าใบนี้ได้พิมพ์แล้วหรือไม่
2. เมื่อสั่งพิม์แล้วต้องเขียนโค้ดเพื่ออัพเดตฟิลด์นี้ให้เป็น true และสั่ง textbox ที่ต้องการให้ .Locked = true
3. เขียนโค้ดในอีเว๊น OnCurrent ของฟอร์ม ถ้า ฟิลด์ที่เพิ่มเป็น true ก็สั่ง textbox ต่างๆให้ .Locked=true (เหมือนข้อ 2) ถ้าไม่ใช่ก็สั่งเป็น .Locked=false แทน
5 @R16568
ขอบคุณมากเลยครับ วิธีนี้น่าจะดีกว่าและยุ่งยากน้อยกว่า
6 @R16569
ลองเขียนให้ดูสักนิดได้ไหมค่ะ พอดีจูนมือใหม่หัดเขียนเลยจริงๆ ไม่ค่อยเข้าใจคะ
7 @R16570
ถ้าว่าง จะลองเขียนดูนะครับ เสร็จเมื่อไหร่จะมาแจ้งนะครับ พอดีช่วงนี้งานยุ่งอยู่เหมือนกันครับ
8 @R16571
ขอบคุณทุกคำตอบค่ะ
แต่จูนรบกวนขอโครงสร้าง code สักนิดค่ะ
ทำไม่เป็นเลยจริงๆ
แต่จูนรบกวนขอโครงสร้าง code สักนิดค่ะ
ทำไม่เป็นเลยจริงๆ
9 @R16572
- สมมุติว่าเพิ่มฟิลด์ A แล้วตอนพิมพ์แล้วสั่ง
docmd.runsql "update เทเบิล set A = true where id = " & me.id
me.textboxรายการ.locked = true
me.textboxจำนวนเบิกหลัง.locked = true
...
...
...
- โค้ดในอีเว๊น OnCurrent ของฟอร์ม
if me.A = true then
me.textboxรายการ.locked = true
me.textboxจำนวนเบิกหลัง.locked = true
...
...
...
else
me.textboxรายการ.locked = false
me.textboxจำนวนเบิกหลัง.locked = false
...
...
...
end if
docmd.runsql "update เทเบิล set A = true where id = " & me.id
me.textboxรายการ.locked = true
me.textboxจำนวนเบิกหลัง.locked = true
...
...
...
- โค้ดในอีเว๊น OnCurrent ของฟอร์ม
if me.A = true then
me.textboxรายการ.locked = true
me.textboxจำนวนเบิกหลัง.locked = true
...
...
...
else
me.textboxรายการ.locked = false
me.textboxจำนวนเบิกหลัง.locked = false
...
...
...
end if
10 @R16576
รบกวนถามอีกนิดค่ะ เราสร้าง VBA ใหม่เลยหรือว่าไงค่ะ
11 @R16577
ไม่เข้าใจ
Time: 0.2830s