(访问)在文本字段中搜索与另一个表字段中的字符串匹配的字符串,并在子表单中显示这些匹配记录

Posted

技术标签:

【中文标题】(访问)在文本字段中搜索与另一个表字段中的字符串匹配的字符串,并在子表单中显示这些匹配记录【英文标题】:(Access) search text field for strings matching those in another table's field and display these matching records in a subform 【发布时间】:2020-01-18 03:55:16 【问题描述】:

这是我的情况,

tbl_products / frm_products

ID__产品 products__name(短文本) products__description(短文本)

tbl_articles / frm_articles

ID__articles articles__name(短文本) articles__body(长文本)

我有一个绑定到 tbl_articles 的表单,其中包含一个绑定到 tbl_products 的子表单。

我希望发生的是,

    一旦用户在articles__body 字段中输入文本,(使用更新后模块) 它会在这个长文本字段中搜索与产品名​​称匹配的任何单词 然后(在子表单中)显示匹配的产品。

例如,如果用户当前查看的articles__body 记录中包含'product 1',则会在子表单中显示product 1 的记录。

也许更新后不合适,因为它需要看起来记住这些匹配。例如,如果 tbl_articles 的记录 1 匹配/显示子表单上的产品 1,而记录 2 匹配/显示产品 2,3 和 4;我需要用户能够重新访问记录 1 并查看产品 1 匹配,而无需编辑文本(并触发更新后)。

我不知道从哪里开始。这不是一个简单的如果字符串包含,最初我想到了类似的想法 - 像'* [in tbl_products, record 1's products__name] *'为每条记录重复(显然不是正确的语法,只是简单地向我自己识别过程),但是这是不切实际的,因为随着更多产品的添加,要匹配的字符串数量会随着时间的推移而增加。

任何帮助都会很棒, 亲切的问候

【问题讨论】:

为了让您抢占先机,Instr() 函数是您的朋友……您可以像这样搜索字符串:InStr("Testing for Product1 in my record", "Product1")跨度> 这有什么用?这些表不显示关系。 【参考方案1】:

设置 Filter 和 FilterOn 属性。建议将子表单容器控件命名为与其所持有的表单不同的名称,例如 ctrProducts。

Me.ctrProducts.Form.Filter = "InStr('" & Me.articles_body & "', [products_name])>0"
Me.ctrProducts.Form.FilterOn = True

【讨论】:

请原谅我的回复迟到和我的无知,这似乎是一个优雅的解决方案,但我在哪里放置代码?对应目的,简单来说就是视觉检查表——文章中一旦写了一段文字,我就可以看到对应的检查表条件已经满足,没有任何关系。这个想法是,一旦正文更新,它会搜索产品表以查看正文中是否有任何产品名称。 您可以尝试引用您的问题的 AfterUpdate 事件。 你太棒了,谢谢你,它正在工作,我可以看到你几乎回答了 666 个问题,继续前进 很高兴它成功了。如果您真的喜欢它,您可以通过将答案标记为已接受来制作更多。但是,不清楚这种表单/子表单排列的目的是什么。 没问题,如果我想让它搜索的不仅仅是关键字,显然'或'不起作用,我想我必须采取不同的方法?

以上是关于(访问)在文本字段中搜索与另一个表字段中的字符串匹配的字符串,并在子表单中显示这些匹配记录的主要内容,如果未能解决你的问题,请参考以下文章

在 mySQL 中的整个表中搜索字符串

在 MySQL 数据库的每个表的字段中搜索文本

在 MySQL 数据库的每个表的字段中搜索文本

在 MySQL 数据库的每个表的字段中搜索文本

在 MySQL 数据库的每个表的字段中搜索文本

在 MySQL 数据库的每个表的字段中搜索文本