 |
|
|
 |
 |
|
Code (VB.NET)
<%
Dim strDayNow = "09-Feb-2019"
Dim strDay3Month = DateAdd("m",-3,strDayNow)
strSQL = "SELECT * FROM orders WHERE ORDER_DATE BETWEEN '"&strDayNow&"' and '"&strDay3Month&"'
%>
|
 |
 |
 |
 |
Date :
2010-02-08 12:59:04 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันไม่ขึ้นอะค่ะ เขียนโค๊ตแบบนี้ค่ะ
Dim strDayNow = "1-Jan-2552"
Dim strDay3Month = DateAdd("m", -3, strDayNow)
sql = "Select sum(b.QTY) as Avg3 from MOR_SO a inner join MOR_SO_Detail b on a.SOID = b.SOID"
sql = sql & " WHERE a.SODate BETWEEN '" & strDayNow & "' and '" & strDay3Month & "' "
พอเอา where ออกมันก็ sum ให้นะค่ะ
ขอรบกวนถามเพิ่มค่ะ
1. strDayNow นี่คือวันที่ที่เราเลือกถูกมั้ยคะ
2. แล้วทำไมต้องเขียน 09-Feb-2019 แบบนี้ค่ะ
3. ถ้าข้อมูลเราเก็บเป็น พ.ศ. กับ ค.ศ. จะต้องทำอย่างไรให้มันเป็น Format เดียวกันคะ
4. ถ้าต้องการเอาข้อมูลโชว์ในดาต้ากริด แล้วแต่ละเซลของดาต้ากริดต้องดึงข้อมูลมาจากต่างตารางกัน ซึ่งมันจอยกันไม่ได้ อย่างนี้ต้องทำอย่างไรหรอคะ
ขอบคุณค่ะ
|
 |
 |
 |
 |
Date :
2010-02-08 14:30:28 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะที่ช่วยอธิบาย เรื่องโค๊ตทำได้อย่างที่บอก แต่ว่าสงสัยอยู่ค่ะ
3. ที่บอกว่าให้เขียนโค๊ตบังคับเองเนี่ย พอจะมีไกด์ไลน์ให้มั้ยคะ พอดียังอ่อนประสบการณ์อะค่ะ
4. ถ้ามัน query ครั้งเดียวไม่ได้ก็ดึงมาหลายๆ table เลยครับ ไม่จำเป็นต้อง query เดียว select เข้า datatable, datareader, dataset หรืออะไรก็แล้วแต่ที่คุณใช้หลายๆตัวแปรไปเลย ไม่ผิดหรอกครับแล้วก็เอาค่ามาแสดงใส grid ตามที่เราต้องการ ประโยคนี้ก็เข้าใจว่าให้ยัดใส่พวก datatable, datareader, dataset ไปก่อน แต่ไม่เข้าใจว่าจะเอาลงไปในดาต้ากริดยังไงคะ
|
 |
 |
 |
 |
Date :
2010-02-08 15:12:41 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โอ้ ลืมไปปกติ ที่ใช้ๆกันจะใช้เป็น databind นี่เนาะ
แต่กรณีที่ผมว่านี่ต้องสร้างเองทุกส่วนของ grid อ่ะมันถึงจะได้ ท่าทางจะ โหด ถึกไปหน่อย
ลองมาคิดใหม่ ที่ว่าข้อมูลจะมาจากหลายๆ ตารางที่มันจอยกันไม่ได้อ่ะ มีกี่ตารางแล้วไม่มี column ไหน เชื่อมหากันได้เลยเหรอ ลองยกตัวอย่าง column ของ table กลุ่มนั้นมาดูหน่อยได้เปล่า
|
 |
 |
 |
 |
Date :
2010-02-08 17:12:33 |
By :
salapao_codeman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
- สงสัยคงถึกแล้วละค่ะ เพราะว่าตอนนี้ดึงข้อมูลออกมาแล้วก้อเก็บไว้ใน data ทั้งหลาย แล้วก็ให้กริดเรียกอีกที
ยาวน่าดูเลยค่ะ
- ส่วนเรื่องตารางเนี่ยมันหลายตารางมากเลยค่ะที่ต้องใช้ในดาต้ากริด 1 ตัว ยกตัวอย่างไม่ถูกเลยค่ะ
- แต่ว่ามีเรื่องอยากรบกวนค่ะ พอจะบอกได้มั้ยคะว่าถ้าเราจะให้กริดโชว์เฉพาะวันที่ไม่ให้เอาเวลามาโชว์ ต้องใช้ format ไหนคะ พอดีลองหาเอาเองแล้วมาประยุกต์ใช้มันก็ error ค่ะ ใส่อย่างนี้ค่ะ
e.Item.Cells(12).Text = Format(e.Item.Cells(12).Text, "dd/MM/yyy") คือเรียก cells(12) เข้าไปตรงๆ โดยที่ cells(12) มันเรียกฟิลด์วันที่ในดาต้าเบสมาแล้วนะค่ะ กลับได้ข้อมูลเป็นตัวหนังสือ dd/MM/yyy ออกมา
แล้วอย่างนี้จะทำอย่างไรไม่ให้วันที่ออกมาโชว์ได้คะ
|
 |
 |
 |
 |
Date :
2010-02-08 22:38:23 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนนี้ทำเรื่องวันที่ที่ถามไปได้แล้วค่ะ แต่มีปัญหาใหม่อยากจะรบกวนถามค่ะ
ก็คือเรื่องคำนวณจำนวนรวมย้อนหลัง 3 เดือน ตามวันที่เลือก แล้วเอาไปเก็บในดาต้ากริด
ไอสูตรที่จำคำนวณเนี่ยมันต้องดึงมาจากตารางอื่น คืออยากให้มันอิงรหัสสินค้าจาก cells(0)
เขียนไว้อย่างนี้ค่ะ
Dim strDayNow = "1-Jan-2553"
Dim strDay3Month = DateAdd("m", -3, strDayNow)
sql = "Select sum(b.QTY) as Avg3,b.Stockcode from MOR_SO a inner join MOR_SO_Detail b on a.SOID = b.SOID"
sql = sql & " WHERE a.SODate BETWEEN '" & strDay3Month & "' and '" & strDayNow & "' Group by b.StockCode "
ad = New SqlDataAdapter(sql, Conn)
ad.Fill(ds, "MyData")
Dim DView As DataView
DView = ds.Tables("MyData").DefaultView
For Each drowview In DView
Dim SO_OTY = drowview.Item("Avg3")
Dim SO_StockCode = drowview.Item("Stockcode")
e.Item.Cells(4).Text = SO_OTY.ToString()
Next
ผลลัพธ์มันมั่วเลยค่ะ ต้องทำอย่างไรคะ
|
 |
 |
 |
 |
Date :
2010-02-09 10:57:53 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หูย งี้เสร็จตัวนี้ไปเก่งขึ้นเยอะเลย ได้ประสบการณ์และการแก้ไขด้วยตัวเองขนาดนี้
ส่วนที่ถามล่าสุดนี้ ต้องการเอาค่าจาก cell(0) ของ grid ไปเข้าสูตร query คำนวนในตอนแรกที่ถามใช่ป่ะครับ
ก็ตอนที่ทำ grid ที่แสดงค่าใน cell(0) ก็เอามันใส่ใน array ซักตัวด้วยสิครับ พอเสร็จ grid โชว์ตรงนั้นแล้วก็มาวนลูป
ใน array ทำ query โชว์อีกที และเนื่องจากใช้วิธีถึกทำเองเป็นแล้ว ทีนี้เราอยากให้มันโชว์ยังไงก็ได้ตามใจเราแล้วครับ สู้ๆ  
|
 |
 |
 |
 |
Date :
2010-02-09 12:21:55 |
By :
salapao_codeman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จากที่อ่านมาก็เข้าใจว่าให้ยัดรหัสที่ cells(0) ใส่เข้าไปในอาเรย์ แต่ว่าไม่รู้ว่าต้องเขียนอย่างไรสิค่ะ รบกวนขอดูตัวอย่างหน่อยได้มั้ยคะ มันจะได้เห็นภาพ แล้วจะเข้าใจง่ายขึ้นค่ะ
|
 |
 |
 |
 |
Date :
2010-02-09 12:34:04 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอมาเราจัดให้ ก็เอา script ข้างบนแหละมาทำให้ดู อิอิ
Code (VB.NET)
Dim strDayNow = "1-Jan-2553"
Dim strDay3Month = DateAdd("m", -3, strDayNow)
sql = "Select sum(b.QTY) as Avg3,b.Stockcode from MOR_SO a inner join MOR_SO_Detail b on a.SOID = b.SOID"
sql = sql & " WHERE a.SODate BETWEEN '" & strDay3Month & "' and '" & strDayNow & "' Group by b.StockCode "
ad = New SqlDataAdapter(sql, Conn)
ad.Fill(ds, "MyData")
Dim DView As DataView
Dim datatoCal() as string เพิ่มบรรทัดนี้
Dim cntRec as integer เพิ่มบรรทัดนี้
DView = ds.Tables("MyData").DefaultView
cntRec = 0 เพิ่มบรรทัดนี้
For Each drowview In DView
Dim SO_OTY = drowview.Item("Avg3")
Dim SO_StockCode = drowview.Item("Stockcode")
datatoCal(cntRec) = drowview.Item("Stockcode") เพิ่มบรรทัดนี้
e.Item.Cells(4).Text = SO_OTY.ToString()
cntRec+=cntRec เพิ่มบรรทัดนี้
Next
|
 |
 |
 |
 |
Date :
2010-02-09 15:09:28 |
By :
salapao_codeman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|