将 MS Access 数据库检索到 vb6 并使用 2 DTpicker 过滤数据以获得总和

Retrieving MS Access Database to vb6 and filter data using 2 DTpicker for the sum rate

   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 来筛选总和率的数据。

下面演示了如何使用 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 控件和一个查询按钮快速 UI。结果显示在 ListView 控件中:

我还使用以下数据创建了一个简单的时间卡 table 用于测试:

您可以研究 SQL 互联网上的声明,并找到许多过滤数据的方法。

以下是使用您发布的代码执行此操作的方法:

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