Извлечение базы данных MS Access в vb6 и фильтрация данных с использованием 2 DTpicker для суммарной скорости - PullRequest
0 голосов
/ 20 сентября 2019

enter image description here

   Private Sub Command5_Click()
   Dim li As ListItem
   Dim lngRunningTotal As Long

   For Each li In ListView1.ListItems
      lngRunningTotal = lngRunningTotal + CLng(li.SubItems(6)) 'calculate all the in Total min column
   Next

   sumText.Text = CStr(lngRunningTotal) 'display total
End Sub

Я хочу отфильтровать данные, используя 2 DTpicker для суммы сумм.

Ответы [ 2 ]

2 голосов
/ 21 сентября 2019

Вот как вы можете сделать это с кодом, который вы разместили:

Private Sub Command5_Click()
    Dim li As ListItem
    Dim lngRunningTotal As Long
    Dim iLogDateIndex As Integer
    Dim iMinutesIndex As Integer

    iLogDateIndex = 5
    iMinutesIndex = 6

    For Each li In ListView1.ListItems

        If CDate(li.SubItems(iLogDateIndex)) >= DTPickerStart And CDate(li.SubItems(iLogDateIndex)) <= DTPickerEnd Then
            lngRunningTotal = lngRunningTotal + CInt(li.SubItems(iMinutesIndex)) ' calculate all the in Total min column
        End If

    Next

    ' Display total
    sumText.Text = CStr(lngRunningTotal)

End Sub
1 голос
/ 20 сентября 2019

Ниже показано, как фильтровать ваши данные с помощью оператора SQL:

Private Sub cmdQuery_Click()
    Dim objAdoConnection As New ADODB.Connection
    Dim objRecordset As ADODB.Recordset
    Dim sConnectionString As String
    Dim sSQLStatement As String
    Dim sDatabaseFile As String
    Dim itm As ListItem

    ' Path to Access database
    sDatabaseFile = "C:\Temp\Stack\ADO\Database.accdb"

    ' Connection string
    sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & sDatabaseFile

    ' Open Connection
    objAdoConnection.Open sConnectionString

    ' Open recordset with SQL query
    sSQLStatement = "SELECT * FROM TimeCards WHERE WorkDate BETWEEN #" & DTPickerStart & "# AND #" & DTPickerEnd & "#"
    Set objRecordset = objAdoConnection.Execute(sSQLStatement)

    ' Clear ListView
    ListView1.ListItems.Clear

    ' Move Recordset to first record
    objRecordset.MoveFirst

    ' Display record data
    Do While Not objRecordset.EOF

        ' Add record to ListView
        Set itm = ListView1.ListItems.Add(, , objRecordset.Fields("ID"))
        itm.SubItems(1) = objRecordset.Fields("EmployeeID")
        itm.SubItems(2) = objRecordset.Fields("WorkDate")
        itm.SubItems(3) = objRecordset.Fields("WorkHours")

        ' Move to next record
        objRecordset.MoveNext

    Loop

    ' Close connection and release objects
    objAdoConnection.Close
    Set objRecordset = Nothing
    Set objAdoConnection = Nothing

End Sub

Я сделал быстрый пользовательский интерфейс с двумя элементами управления DTPicker и кнопкой Query.Результаты отображаются в элементе управления ListView:

Database Query UI

Я также создал простую таблицу TimeCards со следующими данными для тестирования:

TimeCards Table

Вы можете исследовать операторы SQL в Интернете и найти множество способов фильтрации своих данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...