2017-07-06 4 views
0

Momentan versuche ich nach Datum zu gruppieren, aber ignoriere die Zeit, die es als mein dgv präsentiert hat, gruppiere es zu der Zeit auch, ich habe mich umgesehen und kämpfe um die Anpassung an die Arbeit. Dies ist der ursprüngliche Code, der funktioniert, aber nach Datum/Uhrzeit gruppiert.VB.net GROUP nach Datum Zeit ignorieren

Dim sql2 
    Try 

     connect() 
     sql2 = "SELECT r_datetime, SUM(r_quantity) FROM [r_repair] WHERE r_location = 'CNV' AND r_line =('" & computer_line & "') AND r_datetime >= @startdata2 AND r_datetime < @enddata2 AND r_area = 'DPMO(T)' GROUP BY r_datetime" 
     Dim adapter2 As New SqlDataAdapter(sql2, con) 

     With adapter2.SelectCommand.Parameters 
      .Clear() 

      .Add("@startdata2", SqlDbType.DateTime).Value = monthly_from.Value 
      .Add("@enddata2", SqlDbType.DateTime).Value = monthly_to.Value.AddDays(1) 
     End With 

     Dim table_stencil As New DataTable() 
     table_stencil.Locale = System.Globalization.CultureInfo.InvariantCulture 
     adapter2.Fill(table_stencil) 
     Me.bs_m_t.DataSource = table_stencil 

     dgv_m_t.DataSource = bs_m_t 

     disconnect() 

     dgv_m_t.RowHeadersWidth = "28" 

     dgv_m_t.Columns(0).HeaderText = "Date:" 
     dgv_m_t.Columns(1).HeaderText = "Quantity:" 

     dgv_m_t.EnableHeadersVisualStyles = False 

    Catch ex As System.Exception 
    End Try 

Irgendwelche Ideen?

Cheers, Pete

Antwort

0

Zuerst sollten Sie immer alle Ihre Variablen parametrisieren.

Zweitens, wenn Sie nach dem Datum gruppieren möchten, können Sie die Datetime in der Auswahlliste haben, werden Sie etwas zu tun haben:

SELECT cast(r_datetime as date) as r_date, 
     SUM(r_quantity) as r_sum_quantity 
FROM [r_repair] 
WHERE r_location = 'CNV' 
AND r_line = @r_line 
AND r_datetime >= @startdata2 
AND r_datetime < @enddata2 
AND r_area = 'DPMO(T)' 
GROUP BY CAST(r_datetime as date) 
+0

Arbeiten wie eine Behandlung - nur ein weiteres einfaches eine, die Daten, die ich habe, ist für die 02/07/2017 und 04/07/2017 - ist es einfach, es zu zeigen, sagen für ein Datum, das keine Daten hat, um es eine Menge von 0 zu geben, so in der dgv es werde zeigen 01/07/2017, 02/07/2017, 03/07/2017 .....? –

+0

Zuerst bin ich [froh zu helfen] (http://meta.stackoverflow.com/questions/291325/how-to-show-appreciation-to-a-user-on-stackoverflow/291327#291327) . Zweitens möchten Sie vielleicht [diesen Link] ansehen (https://stackoverflow.com/questions/38218157/get-all-day-of-month-thenmapping-data-to-specific-date/38219556#38219556). –

0

Verwendung CONVERT(DATE, r_datetime). Der date Datentyp hat keine Zeitkomponente.