อยากให้ค่าจากtableที่ส่งไปในqueryเพื่อคำนวณ แต่เมื
กระทู้เก่าบอร์ด อ.Yeadram

 4,815   30
URL.หัวข้อ / URL
อยากให้ค่าจากtableที่ส่งไปในqueryเพื่อคำนวณ แต่เมื

ค่าจากtableออก ซึ่งในqueryก็ยังคิดค่านั้นอยู่

โดยตารางtb_1 เป็นประวัติการยืม โดยจะส่งค่าจำนวนที่ยืมไปให้query เพื่อเอาไปลบออกและจะได้จำนวนที่เหลือ

สิ่งที่ต้องการคือ
ถ้าลบข้อมูลในตารางtb_1ออก ก็อยากให้จำนวนที่เหลือยังเป็น 8 อยู่
ไม่ใช่ พอลบข้อมูลในตารางtb_1ออก จำนวนที่เหลือเป็น 10
สามารถทำได้หรือป่าว

ปล.คือไม่อยากให้ในตารางtb_1มีข้อมูลเยอะเกินไป

มีตารางtb_1 คือ
Product    จำนวนที่ยืม
คะน้า               2
ผักกาด            3
ผักชี               4

มีquery1 คือ
Product     จำนวนที่มี       จำนวนที่ยืม        จำนวนที่เหลือ
คะน้า              10                      2                          8
ผักกาด           10                      3                          7
ผักชี               10                      4                          6

30 Reply in this Topic. Dispaly 2 pages and you are on page number 2

21 @R21281
ผมทำตามคุณได้แล้วครับ แต่ผมไม่ได้สร้างฟอร์มขึ้นมานะครับ
ผมแค่อยากให้พอพิมในตารางtblTransaction แล้วไปลดในตารางtblStockเลยโดยอาศัยupdate query

-แต่มันไม่เห็นลดลงเลยครับ เว้นแต่ไปกดในupdate queryแล้วกรอกจำนวนลงไป



ไฟล์ของผมครับ

22 @R21282

ผิดไฟล์ครับ
เป็นอันนี้ครับ

23 @R21283
1.ในประวัติการเบิก จะมีคนมาเบิกItemเพิ่มขึ้นเรื่อยๆ
2.ในตารางสต็อก เป็นตารางที่บอกว่าจำนวนItemที่มีอยู่ขณะนั้น มีจำนวนเท่าไร
3.ส่วนในquery จะกดให้เปลี่ยนแปลงก็ต่อเมื่อในประวัติการเบิกไม่มีคนมากรอกข้อมูลอีกแล้ว ณ เวลานั้น ซึ่งพอกดแล้วจะทำให้จำนวนItemที่มีในตารางสต็อกลดลง
4.จากนั้นก็ไปลบข้อมูลในประวัติการเบิกได้

คำถาม
1.ถ้าให้มันupdateทันที โดยที่ไม่ต้องไปกดที่queryล่ะ สามารถทำได้หรือป่าว

2.ถ้าจะเพิ่มจำนวนของItemในตารางสต็อก ก็ทำตารางประวัติการadd และสร้างupdate query เหมือนกันใช่หรือป่าว

ปล.มันทบไปเรื่อยๆโดยไม่ดูว่าจำนวนที่เบิกนั้นมันเป็นค่าเก่า


อันนี้ของผมที่ทำไว้ แต่ข้อเสียมันคือไม่สามารถลบประวัติการเบิก และถ้าจะทำให้ลบได้มีวิธีอื่นอีกมั้ย

24 @R21284
ผมว่าผมเริ่มจะงงกับคุณแล้วล่ะ

1. ถ้าจะให้มัน Update โดยไม่ต้องกด Query ผมก็ทำตัวอย่างให้คุณดูไปแล้วไงครับ แค่เปิดฟอร์ม ป้อนข้อมูล แล้วคลิกปุ่ม เพียงเท่านี้เอง ไม่ต้องไปกด Query เองซักนิด
หรือถ้าจะไม่สร้างปุ่มนี้ คุณก็ต้องหาจุด Ticker Point ว่าจุดไหนเป็นจุดที่พร้อมจะให้ใส่ข้อมูล คุณก็เอา VBA ที่ผมเขียน ไปใส่ที่จุดนั้น เช่นอาจจะใส่ไว้ที่ On Enter ของฟิลด์สุดท้ายในฟอร์มก็ได้ แต่ถ้าจะให้มันทำเอง มันทำไม่ได้ครับ เพราะมันไม่รู้ว่าเราจะสิ้นสุดการป้อนข้อมูลตอนไหน

2. ถ้าจะเพิ่มจำนวน Item ในสต็อก คุณก็เพิ่มเข้าไปตรงๆ โดยการพิมพ์เข้าไปเลย หรือถ้ามันมีข้อมูลเยอะๆ ก็ใช้ Append Query ก็ได้ ส่วนจะเก็บประวัติหรือไม่ ก็เป็นเรื่องที่คุณต้องตัดสินใจเอง ถ้าจะทำก็เพิ่มฟิลด์ Date เข้าไปอีก 1 ฟิลด์...จบ

ไฟล์ของคุณที่บอกลบไม่ได้ ผมก็ลบได้ปกตินะครับ ไม่เห็นติดขัดอะไร
แค่เลือกฟิลด์แล้วกดปุ่ม delete ก็ลบได้แล้ว

ผมทำไฟล์ตัวอย่างให้ไปแล้ว คุณลองไปศึกษาจากตัวอย่างดู

ตารางใช้เก็บข้อมูล
คิวรีใช้จัดการข้อมูล
ฟอร์มใช้ในการติดต่อกับผู้ใช้
25 @R21289
ที่ผมบอกว่าลบไม่ได้คือ
ลบข้อมูลเรคอร์ดในประวัติการเบิก
ซึ่งถ้าลบมัน ค่าคงเหลือมันจะไม่เป็นค่าล่าสุดอะครับ

โอเคครับ ผมจะลองทำตามที่คุณบอกก่อน
26 @R21292
ผมได้ลองสร้างตารางประวัติการเบิก(tblHistory)โดยมีคอลัม
ID,ProdID,HisLast,HisDate
1.โดยอยากให้จำนวนในคอลัมHisLastของtblHistoryไปโผลที่คอลัมProdLastของtblStock
ซึ่งได้สร้างUpdate Query1ขึ้น

2.ซึ่งก็ทำได้แต่มีปัญหาดังนี้
-2.1 ในtblHistory ได้มีการเบิก R001 จำนวน2ครั้ง โดยครั้งที่1=50 KG และครั้งที่2=10 KG ซึ่งในคอลัมProdLastของtblStock ควรจะเท่ากับ 60 KG แต่มันขึ้นแค่10 KG?
มันน่าจะเกี่ยวกับพวก SUM LAST หรือป่าวและควรเขียนตรงไหน
-2.2 มันต้องกดที่Update Query1 ก่อน ถึงจำนวนในคอลัมHisLastของtblHistoryไปโผลที่คอลัมProdLastของtblStock?

ปล.คือไฟล์ที่ทำอยู่

27 @R21293
ผมดูไฟล์ที่คุณทำมาแล้วนะ ผมล่ะกุมขมับเลย

tblHistory จะสร้างมาทำไมครับ ในเมื่อมี tblTransaction ซึ่งมันก็เก็บ History ในคุณอยู่แล้ว คุณอยากจะเพิ่มฟิลด์อะไร ก็เพิ่มเข้าไปใน tblTransaction ได้

ดังนั้น tblHistory ลบทิ้งเถอะครับ

ตอนนี้คุณลบสิ่งที่คุณคิดให้หมด แล้วคิดแบบ Database นะครับ

สรุปเป็นข้อๆ ว่า คุณต้องการอะไรจากฐานข้อมูลที่คุณทำนี้เช่น
1. จะเก็บข้อมูล Stock ล่าสุด
2. จะเก็บข้อมูลการเบิกจ่าย
3. ต้องการให้แสดงข้อมูลสรุปว่ามีการเบิกจ่ายอะไรไปเมื่อไหร่
4. ต้องการให้แสดงข้อมูล stock ล่าสุด
5. บลาๆๆๆ

(อย่าคิดว่าคุณจะทำนั่นทำนี่ด้วย table, query เช่นจะเก็บข้อมูลเข้า query อะไรงี้ มันเป็นไปไม่ได้)

ไม่งั้นผมก็จนปัญญาเหมือนกัน เพราะผมว่าไฟล์ที่ผมทำไปนั้นน่าจะตอบโจทย์ที่คุณถามไว้ตอนแรกแล้ว
28 @R21295
ตารางtblTransactionนั้น เป็นการเก็บข้อมูลจากformในaccessคือ จำนวนที่มี
ส่วนตารางtblHistory เป็นการเก็บข้อมูลจากformในvb คือจำนวนที่ยืม

โดยqueryที่ต้องการตอนแรกมี
Product     จำนวนที่มี       จำนวนที่ยืม        จำนวนที่เหลือ
คะน้า              10                      2                          8
ผักกาด           10                      3                          7
ผักชี               10                      4                          6
-1.ซึ่งตอนนี้ได้จำนวนที่มี จากformในaccessแล้วที่ได้จากตารางtblTransaction และสามารถลบประวัติในตารางtblTransactionนั้น ได้ด้วยโดยที่ค่านั้นยังอยู่

-2.??ตอนนี้ยังเหลือจำนวนที่ยืม ที่ได้จากตารางtblHistoryโดยได้มาจากformในvb ซึ่งปัญหาก็อยู่ที่ (R21292) on : 4/10/2558 1:43:33


1.เก็บข้อมูลจำนวนที่มี(ซึ่งมันต้องลบประวัติในตารางtblTransactionนั้น ได้ด้วยโดยที่ค่านั้นยังอยู่ เพราะไม่อยากให้มีประวัติเยอะไป)
2.เก็บข้อมูลการเบิกจ่าย(ซึ่งมันต้องลบประวัติในตารางtblHistoryนั้น ได้ด้วยโดยที่ค่านั้นยังอยู่เพราะไม่อยากให้มีประวัติเยอะไป)
3.ให้แสดงข้อมูลจำนวนคงเหลือ(ได้จากการคำนวณโดยจำนวนที่มี-จำนวนที่ยืม)
4.แล้วนำจำนวนคงเหลือนี้ไปคำนวณต่อเส็ด แล้วจะไปเริ่มที่1.ใหม่
โดยวนไปเรื่อยๆ
29 @R21329
ซึ่งตอนนี้สามารถลบประวัติการเบิก ในขณะที่ค่าจำนวนที่เบิกยังอยู่ได้แล้ว
ซึ่งมันต้องรอจนกว่าuserจะทำการเบิกเสร็จทั้งหมด(ซึ่งทำการเบิกผ่านvb) แล้วค่อยให้ผู้ดูแลdatabaseกดupdate queryที่
query เพราะคุณบอกว่า "มันไม่รู้ว่าเราจะสิ้นสุดการป้อนข้อมูลตอนไหน"
ค่าในคอลัมต่างๆจึงจะเปลี่ยน จากนั้นจึงลบประวัติการเบิกได้

แต่มันติดที่ว่าในvb เราได้โชว์คอลัม จำนวนที่มีทั้งหมด ด้วย
โดยเดิมทีที่ยังไม่ได้สร้างการupdate query
ซึ่งuser ทำการเบิกสินค้าและจำนวน แล้วกดบันทึกในvb
จะทำให้คอลัม จำนวนที่มีทั้งหมด ที่โชว์ไว้ลดลงทันที

แต่ได้สร้างการupdate query ต้องมีผู้ดูแลdatabase ทำการ
กดupdate queryที่query ค่าจำนวนที่มีทั้งหมดจึงจะเปลี่ยน

อยากทราบว่าที่เข้าใจถูกมั้ย
และสามารถเขียนโค้ดในvb
โดยทำการupdate query ในaccessผ่านvbได้หรือไม่
30 @R21330
ถ้าเป็น VB

แนะนำว่าให้เขียน Code ใส่ SQL เข้าไป Update ตรงๆ จากตารางเลยดีกว่าครับ
อย่าเอา VB ไปสั่ง Update Query เลยเพราะ
1. ผมไม่เคยทำ
2. ไม่รู้ทำได้ไหม
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3191s