การเขียนโค้ดคำสั่ง ดึงรหัสสินค้าที่ซ้ำกันให้ออกรายงานเปนสินค้าชิ้นเดียวจะเขียนคำสั่งยังไงคะ
น่าจะใช้ Group By ใน SQL Command ได้นะครับ
Date :
2011-02-22 08:17:15
By :
kaimuk
ขอโค้ดหน่อยได้มั้ยคะ คิดไม่ออกจิงๆ โค้ดที่เขียนคำสั่งใน คริสตัลอะคะ
Date :
2011-02-22 08:51:15
By :
yooy
ปกติแล้วผมจะโยน Dataset เข้าไปใน CR เลยครับดังนั้นการจัดการเรื่องข้อมูล ควรทำเสร็จที่ Dataset แล้ว (ส่วนของ จขกท. น่าจะผูกกับ Database เลยต้องไปเล่นกันต่อใน CR ซึ่งผมเองก็ไม่ค่อยสันทัด กับ CR ซะด้วย) ต้องให้หนูกระต่ายช่วยแล้วหละครับ เธอเก่งเรื่องนี้อ่ะครับ
ปล. นอกจาก Programing เธอจะเก่งแล้วเธอยังบ่นเก่งด้วย จริงๆ
Date :
2011-02-22 11:24:36
By :
kaimuk
ใช้คำสั่ง distinct ใน sql command เอาครับ
select distinct ชื่อฟิล์ด from table
Date :
2011-02-22 12:09:39
By :
iSad
ขอบคุนทุกคอมเม้น ที่ช่วยตอบคร่าา เด๋วเราจะลองทำดูนะคะ อิอิ
Date :
2011-02-22 12:23:01
By :
yooy
มีวิธีคิดคล้ายๆแบบนี้อะนะคะ (คือทำได้หลายวิธี)
ขั้นแรกต้องจำกัดขอบเขตของรายการขายเป็นวัน
ซึ่งอาจจะระบุวันที่ลงไปเลย
จากนั้น เอาต้องนำรายการสินค้าในวันที่ต้องการมารวมกันทั้งหมด
ด้วย group by อย่างที่คุณลุงคนนั้นบอกนั่นแหละค่ะ
(อ่อไม่ต้อง distinct มังคะคุนลุง)
แล้ว join ด้วยตารางข้อมูลรายการสินค้าอีกที
นำวิธีคิดแบบนี้มาแปลงเป็น SQL statement แล้วจะส่งเข้าไปหา CR เลยหรือจะ
ผ่าน dataset / datatable ก้อว่ากันไป
คงจาอธิบายได้เท่านี้เพราะคุณไม่ได้ให้รายละเอียดอะไรมามากกว่านี้ค่ะ
Date :
2011-02-22 12:37:19
By :
สาวเอ๋อ (ก้อคนมานเอ๋อ)
คือ ตอนนี้ รุ้วิธีการเขียน แต่ไม่รุ้ว่า จะเขียนในไหน ในตัวโปรแกรม vb.net รึว่า ใน table ของ sql server รึว่าเขียนใน view ที่สร้างใน sql server เพื่อไว้ดึงไปสร้างใน crystal report คะ
Date :
2011-02-23 17:47:24
By :
yooy
ต้องการเอา รหัสสินเดียวกันมารวมกันและ จำนวนสินค้ารหัสเดียวกันมารวมกัน
ใน table sell
sell_id คือ เลขที่ใบเสร็จ
sell_date คือ วันเดือนปี
sell_emp คือ รหัสพนักงาน
sell_total คือ ราคารวมทั้งหมดของสินค้า
ใน table sell_detail
sell_deid คือ ลำดับรายละเอียดการขาย
sell_item คือ รหัสสินค้า
sell_amount คือ จำนวนสินค้า
sell_id คือ เลขที่ใบเสร็จ
ออกรายงาน มีหน้าตาแบบนี้คะ
เลือก วันเดือนปี ที่ต้องการอยากรุ้ (datetimePicker) กดปุ่ม ออกรายงาน(button)
แต่เราต้องการ ให้ รหัสสินค้าที่เหมือนกันรวมกันแลัจำนวนสินค้ารวมกันอย่างที่บอก ไม่ต้องสนใจเลขที่ใบเสร็จนะคะ เพราะจะเอาออก
ต้องเขียน คำสั่ง
use [berkery]
select sell_item,sum(sell_amount)
from sell_detail
group by sell_item
select*from sell_detail
อันนี้เอาไปแนบไว้ที่ table รึ view ที่สร้างไว้ใช้ดึงใน crystal report คะ
Date :
2011-02-23 18:32:18
By :
yooy
มันจะผิดนะครับ ถ้าหากราคา/ชิ้น ไม่เท่ากันอะ
Date :
2011-02-25 14:33:44
By :
iSad
กำ มะวานมาตอบและน้า สงสัยลืมกด Submit - -*
จาก No.9 คือถ้า ราคา/ชิ้น เท่ากัน ก็จะไม่มีปัญหาค่ะ แต่โดยปกติแล้ว สินค้า ชิ้นเดียวกัน ราคา/ชิ้น ย่อมเท่ากันอยู่แล้ว
เพราะฉะนั้น สิ่งที่คุณ iSad กังวล ก็คงไม่มีปัญหามั้งคะ
ตอบ จขกท.
ถ้าเป็นเรานะคะ เราคงเขียน query sql ที่ CR เลยค่ะ โดยเขียนโค๊ดดังนี้
select sell_item, sum(sell_amount) as sell_amount
from sell_detail
group by sell_item
ของเราก็กำลังเจอปัญหาคล้ายๆกันค่ะ แต่จะละเอียดกว่าหน่อย คือของเรา มีการ group เหมือนของ จขกท.
แต่จะมีเงื่อนไขเพิ่มเติมอีก 2 อย่าง คือ สินค้าแบ่งการส่งเป็น กทม. กับ ตจว. ด้วย (ก็คือ จะมี sum 3 ตัว คือ sum_bkk, sum_upc, sum_total)
และจะมีการระบุเลือกดูข้อมูล ตามใบเสร็จด้วยค่ะ
เช่น จะเลือกแค่ เลขที่ใบเสร็จ = 6 เท่านั้น
(ถ้าเลือกอันเดียวไม่มีปัญหา เพราะเอามาแค่อันนี้อันเดียวได้เลย แต่กรณีของเรา คือ มีใบเสร็จเป็นร้อยๆใบ แล้ว user จะเลือกดูกี่ใบก็ได้)
โค๊ดตอนนี้ เป็นดังนี้ค่ะ (ขออิงข้อมูลจากของ จขกท. เลยนะคะ จะได้เข้าใจง่าย)
select sell_item, sum(sell_bkk) as sum_bkk, sum(sell_upc) as sum_upc, sell_total
from (select sell_item
, case when province = 'bkk' then sum(sell_amount) else 0 end as sell_bkk
, case when province = 'upc' then sum(sell_amount) else 0 end as sell_upc
, sum(sell_amount) as sell_total
from sell_detail
- - ใส่เลขที่ใบเสร็จตรงนี้
where sell_id = 6
- -
group by sell_item) as sell_detail
group by sell_item, sell_total
แต่ถ้าเขียนเช่นนี้ จะไม่สามารถกำหนดให้ sell_id เป็น parameter ได้ เนื่องจาก ไม่สามารถมองเห็น field ดังกล่าว
จึงอยากขอ idea ค่ะ ใครพอมีวิธีบ้างค่ะ
คือจริงๆ เรามี idea ว่า จะส่งค่า ผ่านมาจาก c# asp.net เพราะจะสามารถกำหนดค่าได้เลย
แต่ไม่ทราบวิธีการเขียน ส่งค่าจาก c# asp.net ไปยัง CR ค่ะ
ส่วนแนะนำด้วยนะคะ
ขอบคุณล่วงหน้าค่ะ
Date :
2011-03-01 11:28:19
By :
roongine
ลองใช้ Group Expert ของ Crystal Report ดูครับ
Date :
2011-03-01 14:02:04
By :
iameinstein
สรุปการแก้ปัญหาค่ะ
การไป query ใน Crystal Report นอกจากจะยากแล้ว ยังทำให้ประมวลผลนานอีกด้วยค่ะ
เราหาแนวทางใหม่ค่ะ คือ Query ที่ Code (.aspx) เลยค่ะ
ซึ่งเขียนง่ายกว่าเยอะ ก็ใช้ sql ธรรมดา และส่งค่าให้เก็บเป็น DataSet ซึ่งมี DataTable สร้างไว้อยู่แล้ว
แล้วเราก็ดึงค่าจาก DataTable นั้น มาแปะลงใน Report เหมือนเดิมค่ะ
คอนเฟิร์มว่า ง่ายกว่า และเร็วกว่า ค่ะ
Date :
2011-03-24 14:47:36
By :
roongine
Load balance : Server 04