กระทู้เก่าบอร์ด อ.Yeadram
2,691 11
URL.หัวข้อ /
URL
sum ข้อมูลที่จากการ Dlookup
ข้อคำแนะนำด้วยครับผม
1. คือผมติดปัญหา เรื่องการ Sum ยอดรวมข้อมูลสินค้า ข้อมูลที่อยู่บนฟอร์มย่อยที่ได้จากการใช้คำสั่ง Dlookup มา มันไม่รู้ว่าจะใช้วิธีไหน sum ดีครับ
ผมได้ทำตัวอย่างโปรแกรมไว้
accboard@gmail.com
pass: accgmail
ขอบคุณครับผม
1. คือผมติดปัญหา เรื่องการ Sum ยอดรวมข้อมูลสินค้า ข้อมูลที่อยู่บนฟอร์มย่อยที่ได้จากการใช้คำสั่ง Dlookup มา มันไม่รู้ว่าจะใช้วิธีไหน sum ดีครับ
ผมได้ทำตัวอย่างโปรแกรมไว้
accboard@gmail.com
pass: accgmail
ขอบคุณครับผม
11 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R15586
DSum ครับ
2 @R15587
ผมลองใช้ Dsum ตามที่คุณ PichaiTC แล้วแต่ไม่ได้ครับ ขอบคุณครับ
ผมส่งตัวอย่างไว้ที่ Gmail แล้วครับ ช่วยแนะนำหน่อยครับ
ขอบคุณครับ
ผมส่งตัวอย่างไว้ที่ Gmail แล้วครับ ช่วยแนะนำหน่อยครับ
ขอบคุณครับ
3 @R15591
ผมลองหาดูตามลิ้งนี้แล้วทำตามใช้ =DLookUp("Sum([price])","[tblGoods]","[good_id]=[good_id1]") แต่ไม่ได้ของผมต้องให้แบบไหนดีครับ
http://www.thai-access.com/yeadram_view.php?topic_id=3248
ผมส่งภาพให้ดูตามนี้ครับ
ขอบคุณครับ
http://www.thai-access.com/yeadram_view.php?topic_id=3248
ผมส่งภาพให้ดูตามนี้ครับ
ขอบคุณครับ
4 @R15595
ผมดูไฟล์ตัวอย่างคุณแล้วนะครับ การออกแบบฐานข้อมูลคุณดูจะไม่ถูกต้องตามที่ควรจะเป็นเลยอ่ะครับ ผมเองก็ไม่ค่อยเชี่ยวชาญเรื่องการออกแบบฐานข้อมูลสักเท่าไหร่ แนะนำได้แค่ฟิลด์บางตัวคุณน่าจะกำหนดเป็น pk เพื่อสร้าง Relationships ให้กับตารางทั้งหลาย และใช้ประโยชน์ของการคิวรี่ ในการนำฐานข้อมูลมาใช้ ผมเองก็แนะนำได้ไม่มากนะครับ ลองหาอ่านจากหนังสือดู เพราะการออกแบบคือหัวใจหลักเลยนะครับ หากออกแบบไม่ดี จะพัฒนาโปรแกรมต่อได้ลำบาก
เอาเป็นว่าจากไฟล์ที่คุณให้มาในเมล คุณลองทำตามขึ้นตอนดังนี้นะครับ อาจช่วยให้เข้าใจมากขึ้น
1. สร้างคิวรี่ขึ้นใหม่เปล่าๆ อีกตัว แล้วใส่ SQL ดังนี้:
SELECT tblBarcode.man_code, tblBarcode_detail.no_id, tblBarcode_detail.good_id, tblGoods.good_name, tblGoods.price
FROM tblMan INNER JOIN (tblGoods INNER JOIN (tblBarcode INNER JOIN tblBarcode_detail ON tblBarcode.no_id = tblBarcode_detail.no_id) ON tblGoods.good_id = tblBarcode_detail.good_id) ON tblMan.man_code = tblBarcode.man_code;
- จากนั้นเซฟเป็นชื่อ Query1
2. ไปที่มุมมองออกแบบของฟอร์ม fBarcode คลิกเลือกที่ซับฟอร์ม แก้ Record Source ของซับฟอร์ม จากเดิมที่ใช้เป็น tblBarcode_detail แก้เป็น Query1
3. เลือกที่คอนโทรล ชื่อสินค้า ใน Control Source เปลี่ยนจาก =DLookUp("[good_name]","tblGoods","[good_id]=[good_id1]") เป็น good_name
4. เลือกที่คอนโทรล price1 ใน Control Source เปลี่ยนจาก =DLookUp("[price]","tblGoods","[good_id]=[good_id1]") เป็น price
5. เลือกที่คอนโทรล totalprice ตัวที่คุณต้องการให้รวมค่านั่นแหละครับ ที่ Control Source: =Sum([price])
- เป็นตัวอย่างเท่านั้นนะครับ เพราะผมดูไฟล์คุณแล้วยังแปลกๆ หลายอย่างอยู่ แต่ผมขอแลกเปลี่ยนความเห็นแค่นี้แล้วกันนะครับ รายละเอียดมันเยอะผมคงไม่ไหวครับ
เอาเป็นว่าจากไฟล์ที่คุณให้มาในเมล คุณลองทำตามขึ้นตอนดังนี้นะครับ อาจช่วยให้เข้าใจมากขึ้น
1. สร้างคิวรี่ขึ้นใหม่เปล่าๆ อีกตัว แล้วใส่ SQL ดังนี้:
SELECT tblBarcode.man_code, tblBarcode_detail.no_id, tblBarcode_detail.good_id, tblGoods.good_name, tblGoods.price
FROM tblMan INNER JOIN (tblGoods INNER JOIN (tblBarcode INNER JOIN tblBarcode_detail ON tblBarcode.no_id = tblBarcode_detail.no_id) ON tblGoods.good_id = tblBarcode_detail.good_id) ON tblMan.man_code = tblBarcode.man_code;
- จากนั้นเซฟเป็นชื่อ Query1
2. ไปที่มุมมองออกแบบของฟอร์ม fBarcode คลิกเลือกที่ซับฟอร์ม แก้ Record Source ของซับฟอร์ม จากเดิมที่ใช้เป็น tblBarcode_detail แก้เป็น Query1
3. เลือกที่คอนโทรล ชื่อสินค้า ใน Control Source เปลี่ยนจาก =DLookUp("[good_name]","tblGoods","[good_id]=[good_id1]") เป็น good_name
4. เลือกที่คอนโทรล price1 ใน Control Source เปลี่ยนจาก =DLookUp("[price]","tblGoods","[good_id]=[good_id1]") เป็น price
5. เลือกที่คอนโทรล totalprice ตัวที่คุณต้องการให้รวมค่านั่นแหละครับ ที่ Control Source: =Sum([price])
- เป็นตัวอย่างเท่านั้นนะครับ เพราะผมดูไฟล์คุณแล้วยังแปลกๆ หลายอย่างอยู่ แต่ผมขอแลกเปลี่ยนความเห็นแค่นี้แล้วกันนะครับ รายละเอียดมันเยอะผมคงไม่ไหวครับ
5 @R15602
ขอบคุณครับคุณ TTT ผมได้ทำแล้ว ทำได้เลยครับ Sum ได้ครับ แต่มันติดที่ว่าถ้าจะบันทึกข้อมูลเข้าส่วนของซับฟอร์มมันจะไม่ได้ คือผมใช้การยิง barcode เข้า 2 ส่วน
1. ส่วนที่เป็นพนักงาน คือ รหัสบัตร
2. ส่วนของสินค้า คือ รหัสสินค้า
แล้วผมต้องออกแบบอย่างไรดีครับ ขอคำแนะนำหน่อยครับ
ขอบคุณครับ
1. ส่วนที่เป็นพนักงาน คือ รหัสบัตร
2. ส่วนของสินค้า คือ รหัสสินค้า
แล้วผมต้องออกแบบอย่างไรดีครับ ขอคำแนะนำหน่อยครับ
ขอบคุณครับ
6 @R15608
งั้นลองอย่างนี้นะครับ จากเดิมที่แก้ไขไปแล้ว ให้ทำเพิ่มใหม่ดังนี้:
1. เข้าไปที่มุมมองออกแบบของตาราง tblGoods กำหนดฟิลด์ good_id ให้เป็น Primary Key
2. ใน Query1 ที่สร้างใหม่ ให้เปลี่ยน SQL Stetament เป็นอย่างนี้แทนครับ
SELECT tblBarcode_detail.no_id, tblBarcode_detail.good_id, tblGoods.good_name, tblGoods.price
FROM tblGoods INNER JOIN tblBarcode_detail ON tblGoods.good_id = tblBarcode_detail.good_id;
แล้วลองใช้งานดูครับ
1. เข้าไปที่มุมมองออกแบบของตาราง tblGoods กำหนดฟิลด์ good_id ให้เป็น Primary Key
2. ใน Query1 ที่สร้างใหม่ ให้เปลี่ยน SQL Stetament เป็นอย่างนี้แทนครับ
SELECT tblBarcode_detail.no_id, tblBarcode_detail.good_id, tblGoods.good_name, tblGoods.price
FROM tblGoods INNER JOIN tblBarcode_detail ON tblGoods.good_id = tblBarcode_detail.good_id;
แล้วลองใช้งานดูครับ
7 @R15956
คุณ TTT ครับ ต้องขอโทษทีครับ ที่ผมไม่ได้มาตอบว่าได้หรือไหมที่คุณ TTT แนะนำ พอดีมีปัญหาต้องไปต่างจังหวัด เลยหยุดไปช่วงหนึ่ง ตอนนี้ผมเลยมาดูต่อและลองทดสอบใหม่และได้ทำเพิ่มเติมอีก แต่ยังก็ติดปัญหาอยู่ครับ
1. เรื่องของการ Sum ได้แล้วครับ
ขอคำแนะนำเพิ่มหน่อยครับผม
ผมติดปัญหาเรื่องของซับฟอร์ม
tblMan=ใช้เก็บชื่อพนักงาน
man_aut man_code man_id man_name
1 001 4805426486 ไพฑูร
2 002 4805426488 ทองมี
3 003 4805426490 มานพ
tblGoods =ใช้เก็บรายชื่อสินค้า
good_id good_name good_dep price
01 อาหาร ข้าว 7
02 อาหาร แกง 5
03 ขนม ถั่ว 10
04 ขนม ลูกอม 5
กรณีผมยิง สินค้ารหัส 01,02,03,04 ไม่ติดอะไร แต่ถ้ายิงสินค้าที่ไม่ได้บันทึกสินค้าไวใน tblGoods จะError โปรแกรมจะค้าง ต้องเข้าออกใหม่ เราสามารแก้ Error ให้หยุดรายการที่ไม่มีสินค้าที่บันทึกไว้อย่างไรดี แต่ใจผมอยากให้บันทึกเก็บเรคคอดสินค้าที่ 05 เข้าไปด้วย แต่คงจะอยากใช้ไหมครับเพราะมันเป็น Query
ผมได้ส่งโปรแกรมทีทำไว้ที่
accboard@gmail.com
pass: accgmail
ขอบคุณครับ
1. เรื่องของการ Sum ได้แล้วครับ
ขอคำแนะนำเพิ่มหน่อยครับผม
ผมติดปัญหาเรื่องของซับฟอร์ม
tblMan=ใช้เก็บชื่อพนักงาน
man_aut man_code man_id man_name
1 001 4805426486 ไพฑูร
2 002 4805426488 ทองมี
3 003 4805426490 มานพ
tblGoods =ใช้เก็บรายชื่อสินค้า
good_id good_name good_dep price
01 อาหาร ข้าว 7
02 อาหาร แกง 5
03 ขนม ถั่ว 10
04 ขนม ลูกอม 5
กรณีผมยิง สินค้ารหัส 01,02,03,04 ไม่ติดอะไร แต่ถ้ายิงสินค้าที่ไม่ได้บันทึกสินค้าไวใน tblGoods จะError โปรแกรมจะค้าง ต้องเข้าออกใหม่ เราสามารแก้ Error ให้หยุดรายการที่ไม่มีสินค้าที่บันทึกไว้อย่างไรดี แต่ใจผมอยากให้บันทึกเก็บเรคคอดสินค้าที่ 05 เข้าไปด้วย แต่คงจะอยากใช้ไหมครับเพราะมันเป็น Query
ผมได้ส่งโปรแกรมทีทำไว้ที่
accboard@gmail.com
pass: accgmail
ขอบคุณครับ
8 @R15958
แก้โค๊ดตามภาพครับ
แต่ใจผมอยากให้บันทึกเก็บเรคคอดสินค้าที่ 05 เข้าไปด้วย
ทำได้หรือไม่ได้ขึ้นอยู่กับเวลายิง เครื่องส่งข้อมูล good_name ว่าเป็นประเภทไหน good_dep ว่าเป็นอะไร price เท่าไร มาด้วยหรือเปล่า จะรู้ได้ไง หากรู้ได้ ก็สามารถอัพเข้าไปในตาราง tblGood ได้ โดยอาจเขียนเป็น SQL และใช้เหตุการณ์ Before Update
แต่ใจผมอยากให้บันทึกเก็บเรคคอดสินค้าที่ 05 เข้าไปด้วย
ทำได้หรือไม่ได้ขึ้นอยู่กับเวลายิง เครื่องส่งข้อมูล good_name ว่าเป็นประเภทไหน good_dep ว่าเป็นอะไร price เท่าไร มาด้วยหรือเปล่า จะรู้ได้ไง หากรู้ได้ ก็สามารถอัพเข้าไปในตาราง tblGood ได้ โดยอาจเขียนเป็น SQL และใช้เหตุการณ์ Before Update
9 @R15974
ขอบคุณครับ ผมได้แก้ไขโค๊ดแล้ว ได้แล้วครับ ขอบคุณมากๆ เลยครับ
แต่ที่จริงผมก็อยากให้บันทึกเรคคอดสินค้าที่ 05 ด้วยเลย เพราะคนขายต้องรีบขายเพราะขณะน้้นพนักงานจะมาซื้อพร้อมกันเยอะมาก อาจจะบันทึกรหัสใหม่เข้าไปไม่ทัน แต่เดี่ยวจะมีคนตรวจสอบอีกรอบว่า รหัส 05 นั้นไม่มีในโปรแกรมนะ ก็จะเพิ่มที่หลังเข้าไปครับ
ใจผมเวลายิง Barcode อยากให้บันทึก good_id ด้วยครับ ส่วน good_name ไม่ต้องบันทึก(ไม่ต้องโชว์ก็ได้) และ price ไม่ต้องบันทึก(ไม่ต้องโชว์ ไม่ต้องเอามาคำนวนก็ได้) เหมือนว่าแค่เป็นการเก็บข้อมูลไว้แล้วเอามาตรวจสอบที่หลังอีกรอบครับ ถ้าแบบนี้จะต้องแก้ไขโปรแกรมอีกเยอะหรือเปล่าครับ ช่วยแนะนำอีกรอบหน่อยครับ
แต่ที่จริงผมก็อยากให้บันทึกเรคคอดสินค้าที่ 05 ด้วยเลย เพราะคนขายต้องรีบขายเพราะขณะน้้นพนักงานจะมาซื้อพร้อมกันเยอะมาก อาจจะบันทึกรหัสใหม่เข้าไปไม่ทัน แต่เดี่ยวจะมีคนตรวจสอบอีกรอบว่า รหัส 05 นั้นไม่มีในโปรแกรมนะ ก็จะเพิ่มที่หลังเข้าไปครับ
ใจผมเวลายิง Barcode อยากให้บันทึก good_id ด้วยครับ ส่วน good_name ไม่ต้องบันทึก(ไม่ต้องโชว์ก็ได้) และ price ไม่ต้องบันทึก(ไม่ต้องโชว์ ไม่ต้องเอามาคำนวนก็ได้) เหมือนว่าแค่เป็นการเก็บข้อมูลไว้แล้วเอามาตรวจสอบที่หลังอีกรอบครับ ถ้าแบบนี้จะต้องแก้ไขโปรแกรมอีกเยอะหรือเปล่าครับ ช่วยแนะนำอีกรอบหน่อยครับ
10 @R15979
ที่ Texbox ชื่อ good_id1 บนฟอร์ม เขียนโค๊ดใน Event > Berfore Update ดังนี้:
'Private Sub good_id1_BeforeUpdate(Cancel As Integer)
If IsNull(DLookup("good_id", "tblGoods", "good_id ='" & Me.good_id1 & "'")) Then
If MsgBox("รายการใหม่ไม่มีในฐานข้อมูล" & Chr(13) & "ต้องการบันทึกหรือไม่ ?", vbQuestion + vbYesNo, "Add new ID ?") = vbNo Then
Cancel = True
Else
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO tblGoods (good_id, good_name, good_dep) VALUES ('" & Me.good_id1 & "', 'New', 'New'" & ")")
DoCmd.SetWarnings True
End If
End If
'End Sub
ลองดูครับ
'Private Sub good_id1_BeforeUpdate(Cancel As Integer)
If IsNull(DLookup("good_id", "tblGoods", "good_id ='" & Me.good_id1 & "'")) Then
If MsgBox("รายการใหม่ไม่มีในฐานข้อมูล" & Chr(13) & "ต้องการบันทึกหรือไม่ ?", vbQuestion + vbYesNo, "Add new ID ?") = vbNo Then
Cancel = True
Else
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO tblGoods (good_id, good_name, good_dep) VALUES ('" & Me.good_id1 & "', 'New', 'New'" & ")")
DoCmd.SetWarnings True
End If
End If
'End Sub
ลองดูครับ
11 @R15982
ขอบคุณ คุณ TTT มากเลยครับที่ให้คำแนะนำ ได้แล้วครับ เก่งสุดยอดเลย
ขอถามหน่อยครับเรื่องโค๊ด เราจะมีเทคนิคอย่างไรให้เข้าใจเกี่ยวกับการเขียนโค๊ดครับ
ขอบคุณมากเลยครับ สำหรับคำแนะนำทั้งหมด หวังว่าครั้งต่อไปคงต้องได้ขอคำแนะนำอีกแน่นอน
ขอถามหน่อยครับเรื่องโค๊ด เราจะมีเทคนิคอย่างไรให้เข้าใจเกี่ยวกับการเขียนโค๊ดครับ
ขอบคุณมากเลยครับ สำหรับคำแนะนำทั้งหมด หวังว่าครั้งต่อไปคงต้องได้ขอคำแนะนำอีกแน่นอน
Time: 0.3460s