0

我正在开发一个 Access 数据库,我需要将表格中的记录显示为数据表。我相信我已经正确编写了执行过滤的代码,但不确定如何显示记录。

我知道我可以使用查询更轻松地执行此操作,然后使用基于这些结果的表单,但希望尽可能限制此过程,以减少数据库的整体大小。过滤器将对公司和会计日期进行排序。

任何帮助表示赞赏。

这是我到目前为止的代码......

Option Compare Database

Sub Form_Current()
    Dim oTable As DAO.Recordset
    Dim oDataNeedsGas
    Dim dNextFiscal, dThisFiscal
    Dim iGas


'Fiscal Year turnover date, use DateValue(dNextFiscal) comparison.
    dNextFiscal = "10/1/" & Year(Date)
    dThisFiscal = "10/1/" & Year(Date) - 1

    'For Annual training by year comparison.
    'Year(DateValue(oTable!randomdate)) >= Year(Date)

Set oTable = Application.CurrentDb.OpenRecordset("tbl_main", dbOpenDynaset)    
    iGas = 0

Do Until oTable.EOF = True
    If (Year(DateValue(oTable![GasDate])) >= Year(Date) And oTable![Platoon] = "Data") Then
        `What do I do here?!!?
        iGas = iGas + 1
    End If
msgbox iGas

oTable.MoveNext

Loop  

End Sub

我知道过滤有效,因为我让它计算匹配的记录,然后显示在消息框中,但我希望能够显示匹配的记录。我该怎么做呢?

4

2 回答 2

1

使数据表上的 RecordSource 从空白开始,然后在表单加载时运行此代码:

Option Compare Database

Private Sub Form_Load()
    Dim sSQL as String
    sSQL = "SELECT * FROM tbl_Main "
    sSQL = sSQL & "WHERE Year(DateValue(GasDate)) >= Year(Date) "
    sSQL = sSQL & " AND Platoon = 'Data'"
    Me.RecordSource = sSQL
    MsgBox "RecordCount: " & Me.RecordCount
End Sub

我通常使用 Form 的 RecordSource 和 Forms Filter 和 FilterOn 属性。您始终可以加载显示所有记录的表单,然后过滤到您想要查看的内容。

我不明白你的问题中的这一行: “......但如果可能的话,希望限制这个过程,以减少数据库的整体大小。”

您是否正在尝试提高性能?您是否担心存储太多数据而表变得太大?你问题的那一部分还不清楚。

于 2013-07-26T03:36:40.547 回答
0

您可以将 Subform 的Recordset属性设置为 oTable。但是,将记录集作为主窗体的属性,如下面的代码所示,以便您可以在窗体关闭时释放此引用。

Option Compare Database
Private oTable As Object

Private Sub Command2_Click()

    Set oTable = Application.CurrentDb.OpenRecordset("tbl_main", dbOpenDynaset)
    Set Me.sbfName.Form.Recordset = oTable
End Sub

Private Sub Form_Close()
    If Not oTable Is Nothing Then
        Set oTable = Nothing
    End If
End Sub

对于您的具体示例,您将OpenRecordset基于包含您的日期标准的 SQL 语句。我还没有测试这是否可以更新,因为它适用于表格。(我的印象是它无法更新。)

可以这样做,但我不建议这是推荐的方法RecordSource使用该属性,过滤其记录要容易得多。

我想强调的是,我不会使用Recordset子表单的。使用RecordSource. 您可以将其设置为 SQL 语句和/或过滤记录。使用该Recordset属性是有问题的(并且是不必要的)。

于 2013-07-25T23:15:18.683 回答