กระทู้เก่าบอร์ด อ.Yeadram
2,784 6
URL.หัวข้อ /
URL
ยอดยกมา เดือนนี้และสุทธิ
ผมเก็บข้อมูลตารางในรูปนี้
วันที่----------รหัสสินค้า--------จำนวนเงิน
1/1/2554 12345 500
3/1/2554 6543 300
2/2/2554 12345 1000
4/3/2554 6543 1250
6/3/2554 12345 2500
ต้องการให้ออกมาเป็นแบบนี้
เดือน-------รหัสสินค้า--------ยอดยอกมา-------เดือนนี้---------สุทธิ
1 12345 0 500 500
1 6543 0 300 300
2 12345 500 1000 1500
3 6543 300 1250 1550
3 12345 1500 2500 4000
น่าจะใช้ Query ทำแต่ติดที่ีวันเดือนปี ยอดยกมายังมองภาพไม่ออกว่าจะ
Query แบบไหน
ใครพอชี้แนะได้ขอความกรุณาด้วยครับ
วันที่----------รหัสสินค้า--------จำนวนเงิน
1/1/2554 12345 500
3/1/2554 6543 300
2/2/2554 12345 1000
4/3/2554 6543 1250
6/3/2554 12345 2500
ต้องการให้ออกมาเป็นแบบนี้
เดือน-------รหัสสินค้า--------ยอดยอกมา-------เดือนนี้---------สุทธิ
1 12345 0 500 500
1 6543 0 300 300
2 12345 500 1000 1500
3 6543 300 1250 1550
3 12345 1500 2500 4000
น่าจะใช้ Query ทำแต่ติดที่ีวันเดือนปี ยอดยกมายังมองภาพไม่ออกว่าจะ
Query แบบไหน
ใครพอชี้แนะได้ขอความกรุณาด้วยครับ
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R11243
ถ้าเป็นสินค้า จะมีตาราง
tbProduct เก็บรายละเอียดสินค้าและยอดยกมา
tbCustomer ข้อมูลลูกค้า
tbSupplier ข้อมูลผู้ขาย
tbTransactionMain เก็บรายละเอียดส่วนหัวการทำ transaction
เช่นวันที่ เลขที่เอกสาร รหัสลูกค้าหรือรหัสผู้ขาย จำนวนเงิน
tbTransactionDetail เก็บรายละเอียดการขาย จำนวนสินค้า จำนวนเงิน
แล้วนำไปเขียน query จะได้หน้าตาที่ใช้กันประจำ
แบบสรุป
จากช่วงวันที่ ... ถึงวันที่ ....
รหัสสินค้า รายละเอียด ยอดยกมา รับ จ่าย คงเหลือ
12345 ไหมขัดลิ้น 100 500 0 600
แบบรายละเอียด
รหัสสินค้า รายละเอียด
12345 ไหมขัดลิ้น ยอดยกมา 100
เลขที่/วันที่เอกสาร รายละเอียด รับเข้า จ่ายออก คงเหลือ
54001 03/10/2554 ซื้อจาก abx 500 0 600
เป็นภาพกว้าง ๆ ที่อยากให้เห็นก่อน ส่วนรายละเอียด เป็นเรื่อง requirement เฉพาะที่
tbProduct เก็บรายละเอียดสินค้าและยอดยกมา
tbCustomer ข้อมูลลูกค้า
tbSupplier ข้อมูลผู้ขาย
tbTransactionMain เก็บรายละเอียดส่วนหัวการทำ transaction
เช่นวันที่ เลขที่เอกสาร รหัสลูกค้าหรือรหัสผู้ขาย จำนวนเงิน
tbTransactionDetail เก็บรายละเอียดการขาย จำนวนสินค้า จำนวนเงิน
แล้วนำไปเขียน query จะได้หน้าตาที่ใช้กันประจำ
แบบสรุป
จากช่วงวันที่ ... ถึงวันที่ ....
รหัสสินค้า รายละเอียด ยอดยกมา รับ จ่าย คงเหลือ
12345 ไหมขัดลิ้น 100 500 0 600
แบบรายละเอียด
รหัสสินค้า รายละเอียด
12345 ไหมขัดลิ้น ยอดยกมา 100
เลขที่/วันที่เอกสาร รายละเอียด รับเข้า จ่ายออก คงเหลือ
54001 03/10/2554 ซื้อจาก abx 500 0 600
เป็นภาพกว้าง ๆ ที่อยากให้เห็นก่อน ส่วนรายละเอียด เป็นเรื่อง requirement เฉพาะที่
3 @R11247
ขอบคุณอาจารย์ ditasilk และขอโทษด้วยครับ
ผมอยากให้คนอื่นมองง่ายๆ เลยกำหนดเป็นสินค้า แล้วจะเอาไปแปลงใช้ใหม่ครับ
จริงๆ โปรเจคนี้เป็นเรื่องบัญชีครับ ถ้าเป็นเรื่องของสินค้าผมก็คงจะใช้แบบที่อาจารย์แนะนำครับ แต่มันเป็นเรื่องเงิน แถมยังมีเครดิต เดรบิตอีก เลยจำลองสถานการเป็นสินค้า เพื่อให้คนที่เก่งการโปรแกรมแต่ไม่รู้เรื่องบัญชี มองออกง่ายๆ ครับ แล้วฐานข้อมูลมันออกแบบไปแล้วมันแก้ไขวิธียาก พอจะเก็บในรูปแบบนี้เลยทำให้คิดไม่ออก
ผมอยากให้คนอื่นมองง่ายๆ เลยกำหนดเป็นสินค้า แล้วจะเอาไปแปลงใช้ใหม่ครับ
จริงๆ โปรเจคนี้เป็นเรื่องบัญชีครับ ถ้าเป็นเรื่องของสินค้าผมก็คงจะใช้แบบที่อาจารย์แนะนำครับ แต่มันเป็นเรื่องเงิน แถมยังมีเครดิต เดรบิตอีก เลยจำลองสถานการเป็นสินค้า เพื่อให้คนที่เก่งการโปรแกรมแต่ไม่รู้เรื่องบัญชี มองออกง่ายๆ ครับ แล้วฐานข้อมูลมันออกแบบไปแล้วมันแก้ไขวิธียาก พอจะเก็บในรูปแบบนี้เลยทำให้คิดไม่ออก
4 @R11252
หลักการคล้ายกันครับ
รวมถึงสามารถทำการ์ดลูกหนี้ การ์ดเจ้าหนี้ ได้ด้วย
สมุดรายวัน งบทดลอง
แล้วฐานข้อมูลมันออกแบบไปแล้วมันแก้ไขวิธียาก พอจะเก็บในรูปแบบนี้เลยทำให้คิดไม่ออก
ลองเทียบเคียงดูว่า
จากตารางผมไม่ทราบว่ารายการไหนเป็นยอดยกมา
ตัวเลขหรือรายการใดเป็นยอดรับเข้ายอดจ่ายออก
แล้วจะไปต่อได้ยังไงครับ น่าจะมีข้อมูลเพิ่มอีกนะ
อันนี้น่าจะเป็นตัวอย่าง การเขียน program สำหรับผู้อยากฝึก
โดยเฉพาะ database design ไม่ใช่เขียนโปรแกรมเป็น
จะทำ database ยังไงก็ได้นะครับ มันมีความสัมพันธ์กับเป้าหมาย
การเขียน program ความซ้ำซ้อนของข้อมูล
อย่าออกแบบตาราง ตรงๆ คืออยากได้อะไรก็
สร้างฟิลด์เก็บข้อมูลเลย จะเหนื่อยภายหลังครับ
รวมถึงสามารถทำการ์ดลูกหนี้ การ์ดเจ้าหนี้ ได้ด้วย
สมุดรายวัน งบทดลอง
แล้วฐานข้อมูลมันออกแบบไปแล้วมันแก้ไขวิธียาก พอจะเก็บในรูปแบบนี้เลยทำให้คิดไม่ออก
ลองเทียบเคียงดูว่า
จากตารางผมไม่ทราบว่ารายการไหนเป็นยอดยกมา
ตัวเลขหรือรายการใดเป็นยอดรับเข้ายอดจ่ายออก
แล้วจะไปต่อได้ยังไงครับ น่าจะมีข้อมูลเพิ่มอีกนะ
อันนี้น่าจะเป็นตัวอย่าง การเขียน program สำหรับผู้อยากฝึก
โดยเฉพาะ database design ไม่ใช่เขียนโปรแกรมเป็น
จะทำ database ยังไงก็ได้นะครับ มันมีความสัมพันธ์กับเป้าหมาย
การเขียน program ความซ้ำซ้อนของข้อมูล
อย่าออกแบบตาราง ตรงๆ คืออยากได้อะไรก็
สร้างฟิลด์เก็บข้อมูลเลย จะเหนื่อยภายหลังครับ
5 @R11253
ขอบคุณอาจารย์ ditasilk อีกครั้งครับ
จริงอย่างที่อาจารย์บอกทุกอย่างครับ มันติดตรงที่ตอนแรกๆ ความต้องการของ
ผู้ใช้เค้ามีน้อยๆ แต่พอเราทำโปรแกรมให้เค้าใช้ง่าย เค้าก็จะบอกว่าแบบนี้ได้มั้ย
เพิ่มอีกได้มั้ย เราก็พยายามคิดไว้ก่อนจากประสบการณ์ ว่าเค้าจะต้องขอเพิ่มแบบนั้นแบบนี้ แต่ก็ไม่ครอบคลุมครับ แล้วถ้าคิดให้ก่อนมากๆ แล้วเค้าไม่ได้ต้องการเพิ่ม จะเพิ่มภาระในการบันทึกข้อมูล งานนนี้ผมก็ทำออกมาได้แล้วครับ(ก็ไปดูจากอาจารย์ท่านอื่นๆ แหละครับ) เพียงแต่ที่ทำมาต้องมีวันที่กำหนด เช่นจะดูยอด ณ วันไหน ก็จะ
มีจุดอ้างอิงให้เอาวันเดือนปีมาลบกันได้ แต่ครั้งนี้ อยากดูแบบเป็นรายเดือน มันก็เลยไม่สามารถ อ้างอิงได้ครับ เช่น จะดูเดือนมกราคม ก็อ้างจากเดือนธันวาเป็นยกมา แต่ครั้งนี้ อยากให้ออกเป็น รายเดือนเลย เลยไม่รู้จะอ้างอิงยังงัยครับ บางครั้งคำตอบของอาจารยหลายท่าน แค่บอกแนวคิดผมก็มีไอเดียได้ ก็เลยโพสไว้ก่อนครับ
จริงอย่างที่อาจารย์บอกทุกอย่างครับ มันติดตรงที่ตอนแรกๆ ความต้องการของ
ผู้ใช้เค้ามีน้อยๆ แต่พอเราทำโปรแกรมให้เค้าใช้ง่าย เค้าก็จะบอกว่าแบบนี้ได้มั้ย
เพิ่มอีกได้มั้ย เราก็พยายามคิดไว้ก่อนจากประสบการณ์ ว่าเค้าจะต้องขอเพิ่มแบบนั้นแบบนี้ แต่ก็ไม่ครอบคลุมครับ แล้วถ้าคิดให้ก่อนมากๆ แล้วเค้าไม่ได้ต้องการเพิ่ม จะเพิ่มภาระในการบันทึกข้อมูล งานนนี้ผมก็ทำออกมาได้แล้วครับ(ก็ไปดูจากอาจารย์ท่านอื่นๆ แหละครับ) เพียงแต่ที่ทำมาต้องมีวันที่กำหนด เช่นจะดูยอด ณ วันไหน ก็จะ
มีจุดอ้างอิงให้เอาวันเดือนปีมาลบกันได้ แต่ครั้งนี้ อยากดูแบบเป็นรายเดือน มันก็เลยไม่สามารถ อ้างอิงได้ครับ เช่น จะดูเดือนมกราคม ก็อ้างจากเดือนธันวาเป็นยกมา แต่ครั้งนี้ อยากให้ออกเป็น รายเดือนเลย เลยไม่รู้จะอ้างอิงยังงัยครับ บางครั้งคำตอบของอาจารยหลายท่าน แค่บอกแนวคิดผมก็มีไอเดียได้ ก็เลยโพสไว้ก่อนครับ
6 @R11254
คงเหมือนผมตอนเริ่มใหม่ ๆ เก็บอะไรได้เก็บหมด ใส่ตารางไว้เดี๋ยวเอาออกมาใช้
ตอนหลัง มาเรียนรู้การ NORMALIZATION
(ง่ายๆ กับศัพท์ NORMALIZATION คือ ข้อมูลอะไรที่ซ้ำซ้อน
ให้แยกตารางออกมา ใหม่ )
พอเขียนโปรแกรมได้ ก็รับช่วยคนโน้นคนนี้ แผนกโน้นแผนกนี้
ทีนี้งานก็เข้า เขียนได้กับเขียนเป็น มันต่างกัน นะครับ
มันหงุดหงิดมากตอนบอกความต้องการตอนแรก กับตอนหลังไม่เหมือนกัน หรือขอเพิ่ม เวลาจะออกรายงาน ขอสิ่งที่ไม่มีอยู่ใน requirement
เฮ้อ เศร้า
ตอนหลังเลยขอ Flow การทำงาน, report ที่ต้องการ เป็นต้น
เป็นการควบคุม ความต้องการที่เพ้อฝัน ของผู้ให้ข้อมูล
ย้อนกลับมา เข้าเรื่อง
คุณ un ลองดูว่า มีข้อมูลอะไร แล้ว post ดู เผื่อจะช่วยตอบได้นะครับ
ตอนหลัง มาเรียนรู้การ NORMALIZATION
(ง่ายๆ กับศัพท์ NORMALIZATION คือ ข้อมูลอะไรที่ซ้ำซ้อน
ให้แยกตารางออกมา ใหม่ )
พอเขียนโปรแกรมได้ ก็รับช่วยคนโน้นคนนี้ แผนกโน้นแผนกนี้
ทีนี้งานก็เข้า เขียนได้กับเขียนเป็น มันต่างกัน นะครับ
มันหงุดหงิดมากตอนบอกความต้องการตอนแรก กับตอนหลังไม่เหมือนกัน หรือขอเพิ่ม เวลาจะออกรายงาน ขอสิ่งที่ไม่มีอยู่ใน requirement
เฮ้อ เศร้า
ตอนหลังเลยขอ Flow การทำงาน, report ที่ต้องการ เป็นต้น
เป็นการควบคุม ความต้องการที่เพ้อฝัน ของผู้ให้ข้อมูล
ย้อนกลับมา เข้าเรื่อง
คุณ un ลองดูว่า มีข้อมูลอะไร แล้ว post ดู เผื่อจะช่วยตอบได้นะครับ
Time: 0.3935s
ซึ่งปกติผมจะนำยอดยกมาแยกตารางต่างหาก หรือง่ายหน่อยก็เก็บไว้ในตารางสินค้า ซึ่งปกติจะทำเพียงครั้งเดียวในรอบบัญชีนั้น
ส่วนที่เหลือก็เป็น transaction รับเข้า-จ่ายออก ตามเอกสารทางบัญชี
รับเข้า(in) เช่น invoice ซื้อ, ตัวอย่างสินค้า ,ยืมมา เป็นต้น
จ่ายออก(out) เช่น ขาย ,คืนบริษัท ,ให้ยืม
ซึ่งส่วนนี้แยกกัน ด้วย doctype ประเภทเอกสาร
ในการทำ transaction จะเก็บไว้ table เดียวกัน หรือแยกก็ได้
ถ้าใน table เดียวกัน ก็แยก การรับเข้า จ่ายออก ด้วย
fieldชื่อ status(ชื่ออื่นก็ได้) เก็บค่า i =in, o=out
fieldชื่อ doctype เก็บประเภทเอกสาร เพื่อให้รูว่า เป็นขาย ซื้อ ยืม คืน
เป็นต้น
และใช้ field ชื่อ docdate เก็บวัน เดือนปี ที่ทำ transaction นั้น