sum ข้อมูลที่จากการ Dlookup
กระทู้เก่าบอร์ด อ.Yeadram

 2,691   11
URL.หัวข้อ / URL
sum ข้อมูลที่จากการ Dlookup

ข้อคำแนะนำด้วยครับผม
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 แล้วครับ ช่วยแนะนำหน่อยครับ


ขอบคุณครับ
3 @R15591
ผมลองหาดูตามลิ้งนี้แล้วทำตามใช้ =DLookUp("Sum([price])","[tblGoods]","[good_id]=[good_id1]") แต่ไม่ได้ของผมต้องให้แบบไหนดีครับ
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])

- เป็นตัวอย่างเท่านั้นนะครับ เพราะผมดูไฟล์คุณแล้วยังแปลกๆ หลายอย่างอยู่ แต่ผมขอแลกเปลี่ยนความเห็นแค่นี้แล้วกันนะครับ รายละเอียดมันเยอะผมคงไม่ไหวครับ
5 @R15602
ขอบคุณครับคุณ TTT   ผมได้ทำแล้ว ทำได้เลยครับ Sum ได้ครับ แต่มันติดที่ว่าถ้าจะบันทึกข้อมูลเข้าส่วนของซับฟอร์มมันจะไม่ได้ คือผมใช้การยิง barcode เข้า 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;

แล้วลองใช้งานดูครับ
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

ขอบคุณครับ
8 @R15958
แก้โค๊ดตามภาพครับ



แต่ใจผมอยากให้บันทึกเก็บเรคคอดสินค้าที่ 05 เข้าไปด้วย

ทำได้หรือไม่ได้ขึ้นอยู่กับเวลายิง เครื่องส่งข้อมูล good_name ว่าเป็นประเภทไหน good_dep ว่าเป็นอะไร price เท่าไร มาด้วยหรือเปล่า จะรู้ได้ไง หากรู้ได้ ก็สามารถอัพเข้าไปในตาราง tblGood ได้ โดยอาจเขียนเป็น SQL และใช้เหตุการณ์ Before Update
9 @R15974
ขอบคุณครับ ผมได้แก้ไขโค๊ดแล้ว ได้แล้วครับ ขอบคุณมากๆ เลยครับ

แต่ที่จริงผมก็อยากให้บันทึกเรคคอดสินค้าที่ 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

ลองดูครับ
11 @R15982
ขอบคุณ คุณ TTT มากเลยครับที่ให้คำแนะนำ ได้แล้วครับ เก่งสุดยอดเลย
ขอถามหน่อยครับเรื่องโค๊ด เราจะมีเทคนิคอย่างไรให้เข้าใจเกี่ยวกับการเขียนโค๊ดครับ     

ขอบคุณมากเลยครับ สำหรับคำแนะนำทั้งหมด หวังว่าครั้งต่อไปคงต้องได้ขอคำแนะนำอีกแน่นอน
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3460s