Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,028

HOME > .NET Framework > Forum > หาผลต่างของวันที่ แล้วนำมาคำนวณค่ะ คือว่าต้องการเขียน vb.net โดยต้องการ1. Select อมูลออกมาตามช่วงเวลาที่กำหนด



 

หาผลต่างของวันที่ แล้วนำมาคำนวณค่ะ คือว่าต้องการเขียน vb.net โดยต้องการ1. Select อมูลออกมาตามช่วงเวลาที่กำหนด

 



Topic : 038903



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์




คือว่าต้องการเขียน vb.net
โดยต้องการ
1. Select ข้อมูลออกมาตามช่วงเวลาที่กำหนด
2. นำข้อมูลที่ select (จากข้อที่ 1) มาหาผลต่างของวันที่ระหว่างวันที่สั่งซื้อ กับวันที่ที่มาส่ง เป็นจำนวนวัน
3. นำผลต่างของจำนวนวันทั้งหมดที่คำนวณได้ (จากข้อที่ 2) มาบวกรวมกัน
4. นับจำนวนข้อมูลที่ select (ออกมาจากข้อที่ 1) ว่ามีทั้งหมดกี่เรคคอร์ด
5. นำผลรวมของผลต่าง(ข้อที่ 3) หารด้วย ผลรวมของจำนวนเรคคอร์ดที่ select (ข้อที่ 4)

คืออยากทราบว่าจะต้องเขียนโปรแกรมอย่างไรบ้างคะ นึกไม่ออกจริงๆค่ะ เข้าใจว่าต้อง select มันออกมาก่อนแล้วก็ใส่คำสั่ง diff เข้าไป แล้วก็ sum แต่ไม่รู้ว่าต้องทำอย่างไรบ้าง รบกวนด้วยค่ะ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-02-13 23:25:29 By : somooo View : 6059 Reply : 26
 

 

No. 1



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


อย่างนี้เปล่า

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
 


 

No. 2



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


คือหลักการพอมองออกค่ะ แต่ว่าไม่รู้จะเอาทั้ง 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
 

 

No. 3



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


วิธีทำ มีมากกว่าหนึ่งวิธีค่ะ ขอใช้วิธีที่ตัวเองถนัดที่สุดนะคะ
ชื่อ 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
 


 

No. 4

Guest


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
 


 

No. 5



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


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
 


 

No. 6



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


ฟ้องแบบเดิมเลยค่ะ คุณ 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
 


 

No. 7



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


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
 


 

No. 8



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


แล้วจะแก้ตรงไหนดีน้าาาาา
Date : 2010-02-14 12:22:50 By : somooo
 


 

No. 9

Guest


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
 


 

No. 10



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


กำลืม login ^^
ส่วนคำถามที่ insert /update ค่าของ fields ที่มี ' " # % & $ etc. ไม่ได้
ก้อผ่าน parameter แบบนี้ค่ะ
Date : 2010-02-14 12:32:00 By : blurEye
 


 

No. 11



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


มันฟ้องอย่างนี้ค่ะ
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
 


 

No. 12



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


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
 


 

No. 13



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


อ่อ เห็นแล้วค่ะ ขอบคุณมากๆเลยค่ะ
แต่อยากรบกวนถามอีกสักอย่างสิคะ ว่า
เราจำเป็นต้องเอาโค๊ตตัวนี้ไปสร้างเป็นคลาสแล้วเรียกใช้อีกทีมั้ย คะ
หรือว่าต้องทำอย่างไร ถึงจะเรียกใช้ได้ เพราะลองเรียกดูมันไม่มา หรือสมองมันอาจจะตื้อๆเลยคิดไม่ออกจิงๆค่ะ
รบกวนหน่อยนะค่ะ
Date : 2010-02-14 14:01:21 By : somooo
 


 

No. 14



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ก้อได้นะคะ คำตอบมีหลายวิธีเสมอสำหรับการเขียนโปรแกรมค่ะ
แล้วแต่จะเลือกยังไง พี่ๆ หลายคนเขียนวิธีทำ 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
 


 

No. 15



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


อ่อค่ะ
แต่มีปัญหาอีกแล้วค่ะ คือจะเช็คค่าวันที่ ให้มากกว่าหรือเท่ากับวันที่ปัจจุบัน
พอดีเขียน 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
 


 

No. 16



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ไม่เข้าใจคำถามค่ะ ^^
Date : 2010-02-14 18:16:32 By : blurEye
 


 

No. 17



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


ก็คือจะเลือกข้อมูลที่มีวันที่นัดส่งของ มากกว่าหรือเท่ากับ วันที่ปัจจุบัน
เช่นวันนี้วันที่ 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
 


 

No. 18



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


อ่อลืมบอกไปค่ะ ว่าโค๊ตคุณ blueEye มัน error แบบนี้ค่ะ
Arithmetic overflow error converting expression to data type int.
Date : 2010-02-14 18:41:14 By : somooo
 


 

No. 19



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


เอาเรื่องเดิมก่อน
แยกไว้ใน 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
 


 

No. 20



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


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
 


 

No. 21



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


เข้าใจละ ช่วยกับคุณเก๋ชะปะคะ
คือจะเลือกข้อมูลจากวันนี้ แต่ใช้ 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 ดูแล้วจะได้ค่าแบบนี้
aaa



ปล.
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
 


 

No. 22



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่ค่ะ อันนี้ของส้มโอเองค่ะ

งง?????
Date : 2010-02-14 20:59:02 By : somooo
 


 

No. 23



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


อ่อ ขอโทษทีค่ะ รูปมันเพิ่งขึ้นค่ะ
Date : 2010-02-14 21:00:35 By : somooo
 


 

No. 24



โพสกระทู้ ( 137 )
บทความ ( 0 )



สถานะออฟไลน์


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
 


 

No. 25



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


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
 


   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : หาผลต่างของวันที่ แล้วนำมาคำนวณค่ะ คือว่าต้องการเขียน vb.net โดยต้องการ1. Select อมูลออกมาตามช่วงเวลาที่กำหนด
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่