如何使用与连续表单相关联的文本框和查询创建实时搜索功能?

How do i make a live search function with a text box and query associated with a continuous form?

你好,我正在尝试在 MS Access 2013 中构建一个带有文本框和连续 form.The 的实时搜索功能 form.The 文本框和连续表格采用相同的形式,尽管文本框位于 header。此表单是另一个表单的子表单,如果重要,请告诉我。

我正在尝试使用用户在 txtSearch 控件中键入的内容来更新连续表单。该控件有一个 On Change 事件,当控件值发生变化时,该事件将触发后面的代码。通过下面的查询,我收到 run-time 错误 13。我不确定如何解决它。

我在下面添加了其他信息,以供那些认为有帮助的人使用。

控件名称:

隐藏代码: 我在原始查询中进行了查询,以使搜索查询更小且更易读。不确定这是否会影响搜索能力。所有字段都应该是可搜索的,尽管我在这里将其分解为一个进行测试。

Private Sub txtSearch_Change()
    SQL = "SELECT [qryPallställDetails].[SLA_ID], [qryPallställDetails].[ArtNr], [qryPallställDetails].[Benämning], [qryPallställDetails].[Saldo], [qryPallställDetails].[DtmReg], [qryPallställDetails].[InvDtm], [qryPallställDetails].[PV] " _
                & "FROM [qryPallställDetails]" _
                & "WHERE ((([qryPallställDetails].[Benämning])= " & Me.txtSearch.Text & "));"
    Me.RecordSource = SQL
    Me.Requery
End Sub

原始查询:(未vb格式化。)

SELECT tblSLA.*, tblVerk.Verk, [tblVerkShelfs].[ShelfNumber] & [tblVerk_Place].[Place] AS VP, 
[tblPallställ].[PName] & [tblPallställSection].[Section] & [tblPallställ_Row].[pallställRow] & [tblPallställPlace].[Place] AS PV,
[tblVerk].[Des] & [tblVerkShelfs].[ShelfNumber] & [tblVerk_Place].[Place] AS VD

FROM tblVerk
RIGHT JOIN (tblVerkShelfs
RIGHT JOIN (tblVerk_Place
RIGHT JOIN ((tblSLA
LEFT JOIN (tblPallställ

RIGHT JOIN (tblPallställSection
RIGHT JOIN (tblPallställPlace
RIGHT JOIN (tblPallställ_Row
RIGHT JOIN tblPallställData

ON tblPallställ_Row.PallställRow_ID = tblPallställData.PallställRow_ID)
ON tblPallställPlace.PallsällPlace_ID = tblPallställData.PallsällPlace_ID)
ON tblPallställSection.PallställSection_ID = tblPallställData.PallställSection_ID)
ON tblPallställ.Pallställ_ID = tblPallställData.Pallställ_ID)
ON tblSLA.SLA_ID = tblPallställData.SLA_ID)

LEFT JOIN tblVerkData ON tblSLA.SLA_ID = tblVerkData.SLA_ID)
ON tblVerk_Place.VerkPlace_ID = tblVerkData.VerkPlace_ID)
ON tblVerkShelfs.Verk_Shelf_ID = tblVerkData.Verk_Shelf_ID)
ON tblVerk.Verk_ID = tblVerkData.Verk_ID;

我一直在寻找答案,尽管我还没有找到关于我正在尝试做的事情的答案。

运行时错误 13 是类型不匹配。

您有(我假设)文本列 [Benämning] 并将其与字符串进行比较,但不使用引号。

目光短浅的解决方案是在其周围加上单引号:

& "WHERE ((([qryPallställDetails].[Benämning])= '" & Me.txtSearch.Text & "'));"

但是当您的搜索字符串本身包含单引号时,这又会失败。

因此:在使用 SQL 连接变量时使用 Gustav 的 。它处理字符串和其他变量。

& "WHERE ((([qryPallställDetails].[Benämning])= " & CSql(Me.txtSearch.Text) & "));"