 |
|
|
 |
 |
|
อย่างนี้เปล่า
1. select วันที่,sum(จำนวนที่สั่ง) from table between ช่วงเวลาที่กำหนด จาก datatable read เอามาใส่ตัวแปร array ซะ
2. select วันที่,sum(จำนวนที่มาส่ง) from table between ช่วงเวลาที่กำหนด จาก datatable read เอามาใส่ตัวแปร array ซะ ก็ต้องคนละตัวจากข้อ 1 อ่ะนะ
3. วยลูปเทียบวันใน array ทั้งสองตัว แล้วก็ลบกัน นำไปใส่ตัวแปรไว้ แล้วตัวแปรนั้นก็จะบวกตัวมันเองทุกรอบก็จะได้ค่าของข้อ 3
4. อันนี้เนื่องจากไม่เห็นโครงสร้าง table ทำให้ไม่รู้ความต่างของข้อ 1 กับ 2 เลยเขียนให้ดูไม่ได้
5. เนื่องจากข้อ 4 ไม่รู้ ข้อนี้เลยพลอยไม่รู้ไปด้วย
เอาน่ามาขนาดนี้แล้วเหลือข้อ 4 กับ 5 ก็น่าจะมองออกและ เนาะ 
|
 |
 |
 |
 |
Date :
2010-02-13 23:35:02 |
By :
salapao_codeman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือหลักการพอมองออกค่ะ แต่ว่าไม่รู้จะเอาทั้ง 5 ข้อมารวมเป็น 1 เดียวยังไงคะ เพราะผลลัพธ์ที่ต้องการก็คือข้อสุดท้ายค่ะ
ตัวอย่างข้อมูลที่จะนำมาคำนวณค่ะ
orderdate daliverydate ID ผลลัพของข้อ 2
1/1/2010 10/1/2010 1 10
1/1/2010 11/1/2010 2 11
1/1/2010 12/1/2010 3 12
1/1/2010 13/1/2010 4 13
1/1/2010 14/1/2010 5 14
1/1/2010 15/1/2010 6 15
ผลลัพธ์ข้อที่ 3 คือ 10+11+12+13+14+15 = 75
ผลลัพธ์ข้อที่ 4 คือ 6
ผลลัพธ์ข้อที่ 5 คือ 75/6 = 12.5 ซึ่งสิ่งที่ต้องการท้ายสุดก็คือ 12.5 นี่แหละค่ะ
รบกวนด้วยนะค่ะ ถ้าได้แบบละเอียดๆเลยจะดีมากๆเลยค่ะ
ปล.ถ้ามีโค๊ตแถมให้ด้วยยิ่งดีใหญ่ อิอิ ขอบคุณค่ะ
|
 |
 |
 |
 |
Date :
2010-02-14 00:53:17 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
วิธีทำ มีมากกว่าหนึ่งวิธีค่ะ ขอใช้วิธีที่ตัวเองถนัดที่สุดนะคะ
ชื่อ table กับชื่อ field ไปเปลี่ยนเอานะคะ
ซึ่งเข้าใจว่า วันสั่ง กับ วันส่งของ จะอยู่ table เดียวกัน
และน่าจะเป็น MSSQL Server
ใช้ SQL COMMAND แบบ SUB QUERY เพื่อ EXECUTESCALAR ออกมาครั้งเดียว
Code (VB.NET)
SELECT
CASE TOTALRECORD
WHEN 0 THEN 0
ELSE TOTALSHIPMENTDAY / TOTALRECORD
END AS DILIVERY_MEAN_TIME
FROM
(
SELECT ISNULL(SUM(DATEDIFF(DAY ,[ORDERDATE],[SHIPDATE])),0) AS TOTALSHIPMENTDAY
,COUNT(PurchaseOrderID) AS TOTALRECORD
FROM Purchasing.PurchaseOrderHeader
WHERE ORDERDATE BETWEEN @DATESTART AND @DATEEND
) AS PRIMARYQUERY
'คำอธิบาย
' a. ที่ใช้ CASE ใน main select เพราะ ในกรณีที่ไม่มีข้อมูล ค่าของ TOTALRECORD จะเป็น 0
' ซึ่งจะ RUN ไม่ผ่านเพราะ ERROR DIVIDE BY ZERO ค่ะ
' b. ISNULL() เหตุผลเช่นดียวกันค่ะ
' c. ORDERDATE ชื่อ field ของวันที่ สั่งสินค้า
' d. SHIPDATE ชื่อ field ของวันที่ ส่งสินค้า
' e. PurchaseOrderID ชื่อ field ของ Primary key ในตารางนี้เพื่อหาจำนวน record
' f. Purchasing.PurchaseOrderHeader ชื่อ table
' g. ในส่วน where ของ Sub query ใช้ Parameter 2 ตัว @DATESTART และ @DATEEND
' โดยยยึดเอาวัน สั่งสินค้าเป็นหลัก ค่ะ การใช้ PARAMETER ในการเรียกข้อมูล
' ลองดูตัวอย่างใน กระทู้อื่นๆดูนะคะ ที่ต้องใช้ก้อเพื่อป้องกัน การ ERROR ของการ SET DATE FORMAT ค่ะ
' ด้วยการผ่านแบบ parameter จะมั่นใจได้ว่าข้อมูลถูกต้องและ run ได้ทุกเครื่องค่ะ
' h. ใน subquery จะเป็นการเตรียมข้อมูลจาก requirement ในข้อ 1. 2. 3. 4. ก่อน
' จากนั้น main query จะตรวจเงื่อนไขในข้อ a เพื่อคำนวนผลลัพธ์สุดท้ายค่ะ
'ข้อ c d e f เปลี่ยนเป็นชื่อ ที่ใช้ในฐานข้อมูลค่ะ
|
 |
 |
 |
 |
Date :
2010-02-14 01:15:44 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Dim strDay3Month = 15 / 1 / 2001
Dim strdayend = 17 / 1 / 2001
sql = "SELECT" & _
" Case TOTALRECORD " & _
" WHEN 0 THEN 0 " & _
" ELSE(TOTALSHIPMENTDAY / TOTALRECORD) " & _
" END AS DILIVERY_MEAN_TIME FROM " & _
"( SELECT ISNULL(SUM(DATEDIFF(DAY ,[RequestDate],[DeliveryDate])),0) AS TOTALSHIPMENTDAY ,COUNT(OrderLineID) AS TOTALRECORD " & _
" FROM(MOR_PO_Detail) " & _
" WHERE MOR_PO_Detail.RequestDate BETWEEN '" & strDay3Month & "' and '" & strdayend & "') AS PRIMARYQUERY "
cmd = New SqlCommand(sql, MConn)
' cmd.Parameters.Add("@DATESTART", SqlDbType.NVarChar).Value = 15 / 1 / 2001
' cmd.Parameters.Add("@DATEEND", SqlDbType.NVarChar).Value = 17 / 1 / 2001
MConn.Open()
cmd.ExecuteNonQuery()
MConn.Close()
เขียนอย่างนี้ไว้ค่ะ มันฟ้องว่า Line 1: Incorrect syntax near ')'.
คือตอนแรกก็ใช้ @D... แต่ว่าไม่แน่ใจว่าใช้ถูกหรือป่าว
อย่างนี้ต้องทำอย่างไรหรอคะ
|
 |
 |
 |
 |
Date :
2010-02-14 10:23:42 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Dim strDay3Month = "15/1/2001"
Dim strdayend = "17/1/2001"
sql = "SELECT" & _
" Case TOTALRECORD " & _
" WHEN 0 THEN 0 " & _
" ELSE(TOTALSHIPMENTDAY / TOTALRECORD) " & _
" END AS DILIVERY_MEAN_TIME FROM " & _
"( SELECT ISNULL(SUM(DATEDIFF(DAY ,[RequestDate],[DeliveryDate])),0) AS TOTALSHIPMENTDAY ,COUNT(OrderLineID) AS TOTALRECORD " & _
" FROM(MOR_PO_Detail) " & _
" WHERE MOR_PO_Detail.RequestDate BETWEEN CONVERT(SMALLDATETIME, @DATESTART, 103) and CONVERT(SMALLDATETIME, @DATEEND, 103)) AS PRIMARYQUERY "
cmd = New SqlCommand(sql, MConn)
cmd.Parameters.Add("@DATESTART", SqlDbType.NVarChar).Value = strDay3Month
cmd.Parameters.Add("@DATEEND", SqlDbType.NVarChar).Value = strdayend
MConn.Open()
cmd.ExecuteNonQuery()
MConn.Close()
|
 |
 |
 |
 |
Date :
2010-02-14 10:32:32 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ฟ้องแบบเดิมเลยค่ะ คุณ tungman
Server Error in '/' Application.
Line 1: Incorrect syntax near ')'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Line 1: Incorrect syntax near ')'.
Source Error:
Line 48: cmd.Parameters.Add("@DATEEND", SqlDbType.NVarChar).Value = strdayend
Line 49: MConn.Open()
Line 50: cmd.ExecuteNonQuery()
Line 51: MConn.Close()
Line 52: End Sub
|
 |
 |
 |
 |
Date :
2010-02-14 11:24:45 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
error ในนี้แหละ แต่ไม่รู้ตรงไหนเพราะผมไม่รู้บางคำสั่ง 
Code (VB.NET)
sql = "SELECT" & _
" Case TOTALRECORD " & _
" WHEN 0 THEN 0 " & _
" ELSE(TOTALSHIPMENTDAY / TOTALRECORD) " & _
" END AS DILIVERY_MEAN_TIME FROM " & _
"( SELECT ISNULL(SUM(DATEDIFF(DAY ,[RequestDate],[DeliveryDate])),0) AS TOTALSHIPMENTDAY ,COUNT(OrderLineID) AS TOTALRECORD " & _
" FROM(MOR_PO_Detail) " & _
" WHERE MOR_PO_Detail.RequestDate BETWEEN CONVERT(SMALLDATETIME, @DATESTART, 103) and CONVERT(SMALLDATETIME, @DATEEND, 103)) AS PRIMARYQUERY "
|
 |
 |
 |
 |
Date :
2010-02-14 11:34:19 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วจะแก้ตรงไหนดีน้าาาาา
|
 |
 |
 |
 |
Date :
2010-02-14 12:22:50 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
'ทดลอง ทำเป็น console application run ผ่าน ผลลัพธ์ถูกต้องค่ะ
'Error ของคุณเกิดจาก FROM (MOR_PO_Detail)
'เอาวงเล็บออกค่ะ >> FROM MOR_PO_Detail
Imports System.Data.SqlClient
Imports System.Text
Module Module1
Sub Main()
System.Console.WriteLine(GetDiliveryMeanTime(DateSerial(2001, 1, 1), System.DateTime.Now).ToString())
System.Console.ReadLine()
End Sub
Public Function GetDiliveryMeanTime(ByVal StartDate As Date, ByVal EndDate As Date) As Double
Dim SQlConnectionString As String = "Data Source=GARFIELDS\SQLEXPRESS;Initial Catalog=AdventureWorks;Integrated Security=True"
Dim SQLCommandStr As String
Dim resultRate As Double = 0
'stringbuilder for well sql command pattern
Dim myString As StringBuilder = New StringBuilder()
myString.AppendLine(" SELECT ")
myString.AppendLine(" CASE TOTAL_RECORD ")
myString.AppendLine(" WHEN 0 THEN 0")
myString.AppendLine(" ELSE (TOTAL_SHIPMENT_DAY/TOTAL_RECORD)")
myString.AppendLine(" END AS DILIVERY_MEAN_TIME")
myString.AppendLine(" FROM ")
myString.AppendLine(" (")
myString.AppendLine(" Select ISNULL(SUM(DateDiff(Day, [ORDERDATE], [SHIPDATE])), 0) AS TOTAL_SHIPMENT_DAY")
myString.AppendLine(" ,COUNT([PurchaseOrderID]) AS TOTAL_RECORD")
myString.AppendLine(" FROM Purchasing.PurchaseOrderHeader ")
myString.AppendLine(" WHERE ORDERDATE BETWEEN @DATE_START AND @DATE_END")
myString.AppendLine(" ) AS PRIMARYQUERY ;")
SQLCommandStr = myString.ToString()
Dim MyConn As SqlConnection = New SqlConnection(SQlConnectionString)
Dim MyCommand = New SqlCommand(SQLCommandStr, MyConn)
MyCommand.Parameters.AddWithValue("@DATE_START", StartDate)
MyCommand.Parameters.AddWithValue("@DATE_END", EndDate)
Try
MyConn.Open()
resultRate = System.Convert.ToDouble(MyCommand.ExecuteScalar())
Catch ex As Exception
resultRate = -1
Throw New Exception(ex.Message)
Finally
If Not (MyConn Is Nothing) Then MyConn.Close()
End Try
Return resultRate
End Function
End Module
|
 |
 |
 |
 |
Date :
2010-02-14 12:27:02 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
กำลืม login ^^
ส่วนคำถามที่ insert /update ค่าของ fields ที่มี ' " # % & $ etc. ไม่ได้
ก้อผ่าน parameter แบบนี้ค่ะ
|
 |
 |
 |
 |
Date :
2010-02-14 12:32:00 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันฟ้องอย่างนี้ค่ะ
Line 1: Incorrect syntax near ')'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Line 1: Incorrect syntax near ')'.
Source Error:
Line 48: myString.AppendLine(" ) AS PRIMARYQUERY ;")
Line 49:
Line 50: SQLCommandStr = myString.ToString()
Line 51: Dim MyConn As SqlConnection = New SqlConnection(SQlConnectionString)
Line 52: Dim MyCommand = New SqlCommand(SQLCommandStr, MyConn)
เขียนไว้แบบนี้ค่ะ
ublic Function GetDiliveryMeanTime(ByVal StartDate As Date, ByVal EndDate As Date) As Double
Dim SQlConnectionString As String = WebConfigurationManager.ConnectionStrings("MORConnect").ToString()
Dim SQLCommandStr As String
Dim resultRate As Double = 0
'stringbuilder for well sql command pattern
Dim myString As StringBuilder = New StringBuilder()
myString.AppendLine(" SELECT ")
myString.AppendLine(" CASE TOTAL_RECORD ")
myString.AppendLine(" WHEN 0 THEN 0")
myString.AppendLine(" ELSE (TOTAL_SHIPMENT_DAY/TOTAL_RECORD)")
myString.AppendLine(" END AS DILIVERY_MEAN_TIME")
myString.AppendLine(" FROM ")
myString.AppendLine(" (")
myString.AppendLine(" Select ISNULL(SUM(DateDiff(Day, [RequestDate],[DeliveryDate)), 0) AS TOTAL_SHIPMENT_DAY")
myString.AppendLine(" ,COUNT([OrderLineID]) AS TOTAL_RECORD")
myString.AppendLine(" FROM MOR_PO_Detail ")
myString.AppendLine(" WHERE RequestDate BETWEEN @DATE_START AND @DATE_END")
myString.AppendLine(" ) AS PRIMARYQUERY ;")
SQLCommandStr = myString.ToString()
Dim MyConn As SqlConnection = New SqlConnection(SQlConnectionString)
Dim MyCommand = New SqlCommand(SQLCommandStr, MyConn)
MyCommand.Parameters.AddWithValue("@DATE_START", StartDate)
MyCommand.Parameters.AddWithValue("@DATE_END", EndDate)
Try
MyConn.Open()
resultRate = System.Convert.ToDouble(MyCommand.ExecuteScalar())
Catch ex As Exception
resultRate = -1
Throw (New Exception(ex.Message))
Finally
If Not (MyConn Is Nothing) Then MyConn.Close()
End Try
Return (resultRate)
End Function
|
 |
 |
 |
 |
Date :
2010-02-14 13:15:20 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
myString.AppendLine(" Select ISNULL(SUM(DateDiff(Day, [RequestDate],[DeliveryDate)), 0) AS TOTAL_SHIPMENT_DAY")
'เป็น
myString.AppendLine(" Select ISNULL(SUM(DateDiff(Day, [RequestDate],[DeliveryDate])), 0) AS TOTAL_SHIPMENT_DAY")
'ตก right bracket ไปตัวนึงคะ ^^
|
 |
 |
 |
 |
Date :
2010-02-14 13:23:57 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่อ เห็นแล้วค่ะ ขอบคุณมากๆเลยค่ะ
แต่อยากรบกวนถามอีกสักอย่างสิคะ ว่า
เราจำเป็นต้องเอาโค๊ตตัวนี้ไปสร้างเป็นคลาสแล้วเรียกใช้อีกทีมั้ย คะ
หรือว่าต้องทำอย่างไร ถึงจะเรียกใช้ได้ เพราะลองเรียกดูมันไม่มา หรือสมองมันอาจจะตื้อๆเลยคิดไม่ออกจิงๆค่ะ
รบกวนหน่อยนะค่ะ
|
 |
 |
 |
 |
Date :
2010-02-14 14:01:21 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก้อได้นะคะ คำตอบมีหลายวิธีเสมอสำหรับการเขียนโปรแกรมค่ะ
แล้วแต่จะเลือกยังไง พี่ๆ หลายคนเขียนวิธีทำ class หุ้มการใช้ database นะค่ะ
อย่าง https://www.thaicreate.com/dotnet/forum/038846.html
พี่ Win ยกตัวอย่างมาครบเลยลองก้อปดัดแปลงแก้ไขดูค่ะ
เพราะโดยส่วนตัวถนัด c# เลยไม่ค่อยมี library
หรือ class ของ vb.net แล้วก้อไม่ได้เก่งถึงกับข้ามภาษาได้เหมือนพี่ๆเค้า
ถ้าเขียน อb.net เล้กๆสั้นแบบนี้พอได้ค่ะ
ขอบคุนด้วยเช่นกันค่ะ
|
 |
 |
 |
 |
Date :
2010-02-14 14:15:02 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่อค่ะ
แต่มีปัญหาอีกแล้วค่ะ คือจะเช็คค่าวันที่ ให้มากกว่าหรือเท่ากับวันที่ปัจจุบัน
พอดีเขียน sql ไว้อย่างนี้ค่ะ
SELECT SUM(QTYorder) AS qty, ID AS IDNo
FROM dbo.Test1
WHERE (ETAWHH >= { fn NOW() })
GROUP BY ID
ผลลัพธ์ทีออกมามันจะเอาเวลามาคิดด้วย ทำอย่างไรให้มันเอาแต่วันที่ค่ะ
|
 |
 |
 |
 |
Date :
2010-02-14 17:45:28 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่เข้าใจคำถามค่ะ ^^
|
 |
 |
 |
 |
Date :
2010-02-14 18:16:32 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก็คือจะเลือกข้อมูลที่มีวันที่นัดส่งของ มากกว่าหรือเท่ากับ วันที่ปัจจุบัน
เช่นวันนี้วันที่ 14/2/2010
ก็จะดึงข้อมูลออกมาก where วันที่นัดส่งของ >= วันที่นัดส่งของ
ผลลัพธ์ที่ต้องการก็คือ วันทีนัดส่งตั้งแต่วันที่ 14/2/2010 ขึ้นไปค่ะ
แต่ประเด็นปัญหาคือว่า ไอคำสั่ง where เนี่ย มันดันไปเช็คจากวันที่และเวลานัดส่งของ มากว่าหรือเท่ากับ วันที่และเวลาปัจจุบัน
ก็คือมันจะเอา 14/2/2010 : 18:40 ออกมาอย่างนี้ค่ะ ก็เลยอยากเช็คเฉพาะวันที่อย่างเดียวค่ะ
และอีกอย่างนึงนะค่ะ โค๊ตที่คุณ blueEye ให้มาอะค่ะ คือ somooo เอาไปใช้ไม่ได้ค่ะ แต่จะพยายามเขียนเฉพาะ sql command ออกมาให้ได้ค่ะ เพราะจากที่คุณ blueEye ให้มา somooo เอาไปใช้ไม่เป็นค่ะ แต่จะพยายามต่อไปถึงแม้เวลาจะเหลืออีกไม่กี่ชั่วโมง จะได้เก่งๆเหมือนพี่ๆที่ช่วยตอบ และคุณ blueEye ด้วยค่ะ
|
 |
 |
 |
 |
Date :
2010-02-14 18:40:23 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่อลืมบอกไปค่ะ ว่าโค๊ตคุณ blueEye มัน error แบบนี้ค่ะ
Arithmetic overflow error converting expression to data type int.
|
 |
 |
 |
 |
Date :
2010-02-14 18:41:14 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอาเรื่องเดิมก่อน
แยกไว้ใน Class ที่สร้างขึ้นได้เลยค่ะ
Arithmetic overflow error converting expression to data type int.
ไม่น่าจะมีนะคะ ตรวจสอบให้ดีเพราะใช้ Double ไม่มี int เลย
Code (VB.NET)
Imports System.Data.SqlClient
Imports System.Text
Public Class DatabaseSpecial
Public Shared SQlConnectionString As String = "Data Source=GARFIELDS\SQLEXPRESS;Initial Catalog=AdventureWorks;Integrated Security=True"
Public Shared Function GetDiliveryMeanTime(ByVal StartDate As Date, ByVal EndDate As Date) As Double
Dim SQLCommandStr As String
Dim resultRate As Double = 0
'stringbuilder for well sql command pattern
Dim myString As StringBuilder = New StringBuilder()
myString.AppendLine(" SELECT ")
myString.AppendLine(" CASE TOTAL_RECORD ")
myString.AppendLine(" WHEN 0 THEN 0")
myString.AppendLine(" ELSE (TOTAL_SHIPMENT_DAY/TOTAL_RECORD)")
myString.AppendLine(" END AS DILIVERY_MEAN_TIME")
myString.AppendLine(" FROM ")
myString.AppendLine(" (")
myString.AppendLine(" Select ISNULL(SUM(DateDiff(Day, [ORDERDATE], [SHIPDATE])), 0) AS TOTAL_SHIPMENT_DAY")
myString.AppendLine(" ,COUNT([PurchaseOrderID]) AS TOTAL_RECORD")
myString.AppendLine(" FROM Purchasing.PurchaseOrderHeader ")
myString.AppendLine(" WHERE ORDERDATE BETWEEN @DATE_START AND @DATE_END")
myString.AppendLine(" ) AS PRIMARYQUERY ;")
SQLCommandStr = myString.ToString()
Dim MyConn As SqlConnection = New SqlConnection(SQlConnectionString)
Dim MyCommand = New SqlCommand(SQLCommandStr, MyConn)
MyCommand.Parameters.AddWithValue("@DATE_START", StartDate)
MyCommand.Parameters.AddWithValue("@DATE_END", EndDate)
Try
MyConn.Open()
resultRate = System.Convert.ToDouble(MyCommand.ExecuteScalar())
Catch ex As Exception
resultRate = -1
Throw New Exception(ex.Message)
Finally
If Not (MyConn Is Nothing) Then MyConn.Close()
End Try
Return resultRate
End Function
End Class
ตัวอย่างการเรียกค่ะ
Code (VB.NET)
Sub Main()
System.Console.WriteLine(DatabaseSpecial.GetDiliveryMeanTime(DateSerial(2001, 1, 1), System.DateTime.Now).ToString())
System.Console.ReadLine()
End Sub
|
 |
 |
 |
 |
Date :
2010-02-14 19:50:56 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
System.Console.WriteLine([font=Verdana]DatabaseSpecial[/font].GetDiliveryMeanTime(DateSerial(2001, 1, 1), System.DateTime.Now).ToString())
System.Console.ReadLine()
1. DatabaseSpecial คือชื่อคลาสที่สร้างไว้ แล้วเรียกมาใช้หน้าฟอร์มถูกมั้ยคะ
2. รันแล้วไม่มีอะไรโชว์เลยค่ะ ต้อง return ค่าตรงไหนคะ
|
 |
 |
 |
 |
Date :
2010-02-14 20:36:35 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เข้าใจละ ช่วยกับคุณเก๋ชะปะคะ
คือจะเลือกข้อมูลจากวันนี้ แต่ใช้ getdate() ไม่ก้อ datetime.now
แต่มันจะติด เรื่องที่ว่าเวลาจะห้อยมาด้วย ต้องการให้เวลา เป็น 00:00:00
Code (VB.NET)
Dim ExactlyDate as DateTime = DateSerial( DateTime.Now.year ,DateTime.Now.Month
,DateTime.Now.Day) // เวลาจะเป็น ศูนย์นาฬิกาของวันนี้ ก้อเอาตัสแปรนี้ไปแทนอะค่ะ
' ค่าที่ได้ 2010-02-14 00:00:00.000
' หรือ ที่ Where clause แก้เป็นแบบนี้จะได้ผลลัพธ์เดียวกัน
WHERE DeliveryDate >= DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
รันผ่าน tool ของ SQL SERVER ดูแล้วจะได้ค่าแบบนี้

ปล.
Code (VB.NET)
Dim StartDate As DateTime = DateSerial(2001, 1, 1)
Dim EndsDate As DateTime = System.DateTime.Now
Dim DMeantTime As Double= DatabaseSpecial.GetDiliveryMeanTime( StartDate ,EndsDate )
'จะเข้าใจง่ายกว่าปะคะ
|
 |
 |
 |
 |
Date :
2010-02-14 20:41:30 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ค่ะ อันนี้ของส้มโอเองค่ะ
งง?????
|
 |
 |
 |
 |
Date :
2010-02-14 20:59:02 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่อ ขอโทษทีค่ะ รูปมันเพิ่งขึ้นค่ะ
|
 |
 |
 |
 |
Date :
2010-02-14 21:00:35 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
System.Console.WriteLine(DatabaseSpecial.GetDiliveryMeanTime(DateSerial(2001, 1, 1), System.DateTime.Now).ToString())
System.Console.ReadLine()
1. DatabaseSpecial คือชื่อคลาสที่สร้างไว้ แล้วเรียกมาใช้หน้าฟอร์มถูกมั้ยคะ
2. รันแล้วไม่มีอะไรโชว์เลยค่ะ ต้อง return ค่าตรงไหนคะ
|
 |
 |
 |
 |
Date :
2010-02-14 22:03:50 |
By :
somooo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Dim StartDate As DateTime = DateSerial(2001, 1, 1)
Dim EndsDate As DateTime = System.DateTime.Now
Dim DMeantTime As Double= DatabaseSpecial.GetDiliveryMeanTime( StartDate ,EndsDate )
'จะเข้าใจง่ายกว่าปะคะ
|
 |
 |
 |
 |
Date :
2010-02-14 22:44:47 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|