在子表单中搜索值 (vba Access2013)
Search for values in a subform (vba Access2013)
我有一个打开的子表单(在一个表单内)。该子表单基于查询并包含多个记录。我想搜索子表单以查找是否有任何记录具有 = true 的字段值。
经过搜索,最好的建议是使用 sql。这就是我正在使用的:-
Dim iRecCount As Integer
Dim strRecCount As String
Dim vInvoiceID as Variant
vInvoiceID = [Forms]![Invoices]![InvoiceID].Value
strRecCount = "SELECT Count(*) AS CountOfSlotID FROM (Appointments INNER JOIN Students ON Appointments.StudentID = Students.StudentID) INNER JOIN Invoices ON Appointments.InvoiceID = Invoices.InvoiceID WHERE (((Appointments.InvoiceID)=" & vInvoiceID & ") AND ((Students.PAYG)=Yes));"
iRecCount = CurrentDb.OpenRecordset(strRecCount).Fields(0).Value
If iRecCount > 0 Then
[Forms]![Invoices]![Temp Termly].Value = True
Else: [Forms]![Invoices]![Temp Termly].Value = False
End If
如果我在查询中复制并粘贴 SQL 字符串,它会给出正确的结果(事实上,我从工作查询中获得了 SQL 字符串)。然而这个代码 returns 无论如何都是零。我认为这一行有问题:-
iRecCount = CurrentDb.OpenRecordset(strRecCount).Fields(0).Value
任何建议或替代解决方案都会有所帮助。
您将使用 RecordsetClone:
Dim rs As DAO.Recordset
Dim Found As Boolean
Set rs = Me!SubformControlName.Form.RecordsetClone
If rs.RecordCount > 0 Then
rs.FindFirst "[Temp Termly] = True"
Found = Not rs.NoMatch
End If
Set rs = Nothing
If Found = True Then
' Success.
End If
我有一个打开的子表单(在一个表单内)。该子表单基于查询并包含多个记录。我想搜索子表单以查找是否有任何记录具有 = true 的字段值。
经过搜索,最好的建议是使用 sql。这就是我正在使用的:-
Dim iRecCount As Integer
Dim strRecCount As String
Dim vInvoiceID as Variant
vInvoiceID = [Forms]![Invoices]![InvoiceID].Value
strRecCount = "SELECT Count(*) AS CountOfSlotID FROM (Appointments INNER JOIN Students ON Appointments.StudentID = Students.StudentID) INNER JOIN Invoices ON Appointments.InvoiceID = Invoices.InvoiceID WHERE (((Appointments.InvoiceID)=" & vInvoiceID & ") AND ((Students.PAYG)=Yes));"
iRecCount = CurrentDb.OpenRecordset(strRecCount).Fields(0).Value
If iRecCount > 0 Then
[Forms]![Invoices]![Temp Termly].Value = True
Else: [Forms]![Invoices]![Temp Termly].Value = False
End If
如果我在查询中复制并粘贴 SQL 字符串,它会给出正确的结果(事实上,我从工作查询中获得了 SQL 字符串)。然而这个代码 returns 无论如何都是零。我认为这一行有问题:-
iRecCount = CurrentDb.OpenRecordset(strRecCount).Fields(0).Value
任何建议或替代解决方案都会有所帮助。
您将使用 RecordsetClone:
Dim rs As DAO.Recordset
Dim Found As Boolean
Set rs = Me!SubformControlName.Form.RecordsetClone
If rs.RecordCount > 0 Then
rs.FindFirst "[Temp Termly] = True"
Found = Not rs.NoMatch
End If
Set rs = Nothing
If Found = True Then
' Success.
End If