2014-01-31 3 views
0

Я создаю программу, которая должна фильтровать только min log_time в Log_Type = I и max logtime в Log_Type = O. Необходимо отобразить в reportviewer. Спасибо, ребята, я не знаю, как начать с в мин и максMin и Max для vb.net

enter image description here

enter image description here

+0

Что такое источник данных о ReportViewer? –

+0

dataset база данных sir mysql. –

ответ

2

Так вы с помощью DataSet в DataSource для ReportViewer, который заполняется из MySql -Database. Затем вы должны либо фильтровать DataSet, либо фильтровать через sql в первую очередь.

Например (через Linq-To-DataSet):

Dim groups = From row In ds.Tables(0) 
      Let id = row.Field(Of Int32)("ID") 
      Let empId = row.Field(Of String)("EMP_ID").Trim() 
      Let logType = row.Field(Of String)("LOG_TYPE").Trim() 
      Let logDate = row.Field(Of Date)("LOG_DATE") 
      Let logTime = row.Field(Of TimeSpan)("LOG_TIME") 
      Let creditDate = row.Field(Of Date)("CREDIT_DATE") 
      Select data = New With {id, empId, logType, logDate, logTime, creditDate, row} 
      Group data By data.empId, data.logType Into TypeGroup = Group 

Dim newDataSource As DataTable = ds.Tables(0).Clone() ' empty table with same schema ' 
For Each grp In groups 
    Dim iGroup = From data In grp.TypeGroup 
       Where StringComparer.OrdinalIgnoreCase.Equals("i", data.logType) 
    Dim min = (From data In iGroup Order By data.logTime Ascending).FirstOrDefault() 
    Dim max = (From data In iGroup Order By data.logTime Descending).FirstOrDefault() 
    If min IsNot Nothing Then 
     newDataSource.Rows.Add(min.id, min.empId, min.logType, min.logDate, min.logTime, min.creditDate) 
    End If 
    If max IsNot Nothing AndAlso Not Object.ReferenceEquals(min, max) Then 
     newDataSource.Rows.Add(max.id, max.empId, max.logType, max.logDate, max.logTime, max.creditDate) 
    End If 
    Dim oGroup = From data In grp.TypeGroup 
       Where StringComparer.OrdinalIgnoreCase.Equals("o", data.logType) 
    min = (From data In oGroup Order By data.logTime Ascending).FirstOrDefault() 
    max = (From data In oGroup Order By data.logTime Descending).FirstOrDefault() 
    If min IsNot Nothing Then 
     newDataSource.Rows.Add(min.id, min.empId, min.logType, min.logDate, min.logTime, min.creditDate) 
    End If 
    If max IsNot Nothing AndAlso Not Object.ReferenceEquals(min, max) Then 
     newDataSource.Rows.Add(max.id, max.empId, max.logType, max.logDate, max.logTime, max.creditDate) 
    End If 
Next 

ds.Tables.Clear() 
ds.Tables.Add(newDataSource) 
+0

Сэр я объявляю ds как Dataset, тогда я получил этот erro -Variable 'ds', прежде чем ему было присвоено значение. Исключительное исключение ссылки может возникнуть во время выполнения. –

+0

спасибо за код sir @Tim. –

+0

sir еще одна ошибка @tim Ссылка на объект не установлена ​​в экземпляр объекта. –