Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在组合列表中搜索数据_Vba_Ms Access - Fatal编程技术网

Vba 在组合列表中搜索数据

Vba 在组合列表中搜索数据,vba,ms-access,Vba,Ms Access,我有一个数据库,其中有一个表ALL_INCOME,其中包含我所有与收入相关的数据 我设法创建了一个搜索按钮,它能够成功地搜索日期范围内的数据 我的表格包含以下字段: 日期、收入类型、金额 我想在一个日期范围内搜索,以便它可以选择要显示的特定类型的收入记录 例如,如果我的表和组合列表中有投资、储蓄作为收入类型,我希望能够使用特定类型的收入在日期范围内进行搜索 这些是我的代码,可以在显示所有数据的日期范围内搜索数据 Private Sub Command20_Click() ' Search but

我有一个数据库,其中有一个表ALL_INCOME,其中包含我所有与收入相关的数据

我设法创建了一个搜索按钮,它能够成功地搜索日期范围内的数据

我的表格包含以下字段:

日期、收入类型、金额

我想在一个日期范围内搜索,以便它可以选择要显示的特定类型的收入记录

例如,如果我的表和组合列表中有投资、储蓄作为收入类型,我希望能够使用特定类型的收入在日期范围内进行搜索

这些是我的代码,可以在显示所有数据的日期范围内搜索数据

Private Sub Command20_Click()
' Search button
Call Search
End Sub

Sub Search()
Dim strCriteria, task As String

Me.Refresh
If IsNull(Me.OrderDateFrom) Or IsNull(Me.OrderDateTo) Then
    MsgBox "Please enter the date range", vbInformation, "Date Range Required"
    Me.OrderDateFrom.SetFocus

Else
    strCriteria = "([DATE] >= #" & Me.OrderDateFrom & "# And [DATE] <= #" & Me.OrderDateTo & "#)"
    task = "select * from ALL_INCOME where (" & strCriteria & ") order by [DATE]"
    DoCmd.ApplyFilter task
    
End If
End Sub
Private子命令20_Click()
'搜索按钮
呼叫搜索
端接头
子搜索()
Dim strCriteria,任务作为字符串
我,刷新一下
如果IsNull(Me.OrderDateFrom)或IsNull(Me.OrderDateTo),则
MsgBox“请输入日期范围”,vbInformation,“需要日期范围”
Me.OrderDateFrom.SetFocus
其他的

strCriteria=“([DATE]>=#”&Me.OrderDateFrom&“#和[DATE]尝试以下代码。它将在两个日期范围之间搜索特定的
IncomeType
。如果您未选择任何
IncomeType
,则它将过滤指定日期范围内的所有
IncomeType

Option Compare Database
Option Explicit

Private Sub cmdApplyFilter_Click()
    Call Search
End Sub

Sub Search()
Dim strCriteria, task As String

Me.Refresh
If IsNull(Me.OrderDateFrom) Or IsNull(Me.OrderDateTo) Then
    MsgBox "Please enter the date range", vbInformation, "Date Range Required"
    Me.OrderDateFrom.SetFocus

Else
    strCriteria = "[MyDate] >= " & Format(Me.OrderDateFrom, "\#mm\/dd\/yyyy\#") & _
                  " And [MyDate] <= " & Format(Me.OrderDateTo, "\#mm\/dd\/yyyy\#") & _
                  " AND [IncomeType] LIKE '" & IIf(IsNull(Me.cboIncomeType), "*", Me.cboIncomeType) & "'"
    'task = "select * from ALL_INCOME where (" & strCriteria & ") order by [DATE]"
    DoCmd.ApplyFilter , strCriteria
    
End If
End Sub
选项比较数据库
选项显式
专用子cmdApplyFilter_Click()
呼叫搜索
端接头
子搜索()
Dim strCriteria,任务作为字符串
我,刷新一下
如果IsNull(Me.OrderDateFrom)或IsNull(Me.OrderDateTo),则
MsgBox“请输入日期范围”,vbInformation,“需要日期范围”
Me.OrderDateFrom.SetFocus
其他的
strCriteria=“[MyDate]>=”&格式(Me.OrderDateFrom,\\\\ mm\/dd\/yyyy\\”)_

“和[我的日期]问题是什么?错误消息,错误结果,什么都没有发生?如果你想包括收入类型的标准,那么就这样做。包括一个用于选择收入类型的组合框,并将其包括在VBA中以构造标准。这是否回答了你的问题?问题是,我可以将组合添加到表单中,但如何将其包括在VBA代码中以构造标准ct a标准是一个问题。你能用我在这里发布的代码为我创建一个新的vba代码吗?不。你可以按照我提供的链接阅读。它将产生一个指导你的教程。尝试一下,当你有新代码的具体问题时,发布问题。调整
[MyDate]
[IncomeType]
和您的表字段名。还可以用您的组合框名称调整
cboIncomeType
。注意事项。请尝试一下,然后回复您。SirIt成功了。非常感谢