Access数据集中的星号导致错误

时间:2013-06-12 05:59:43

标签: database ms-access escaping asterisk

我之前从未真正使用过Access(虽然我已经用MySQL和PHP做了很多),所以这是我的第一次尝试。这很简单:两个表,tblShapes和tblExamples。它们通过“JCH Shape”链接,它是tblShapes(它的文本)的主要部分。我用一个可以选择JCH形状的组合框制作了一个表格。然后我重新查询表单,以便可以使用适当的数据填充子表单。

但是,我的一些数据仅通过星号来区分。所以,现在,我所拥有的行中的JCH Shape列的值是:

  • (克)CVC
  • (克)C * V
  • CV * CV
  • CVCV

在我添加最后一个值“CVCV”之前我没事。现在,每当我点击它时,每当我尝试选择其他数据时,表单都会重新查询,但显示空白数据,直到我关闭表单并重新打开它,除非我选择CVCV,在这种情况下它显示自己的数据就好了,如果表格认为其他一切都丢失了相关数据。

Asterisk肯定是这里的问题,但它只是区分CV * CV和CVCV或其他唯一区别字符*的形式(它不影响(g)CVC和(g)C)的问题例如,* V,但是当我尝试制作(g)CV时,出现了同样的问题)。我不明白。当我打电话给Requery时,我正在想办法出错了,但我不知道Access如何在内部工作以了解它是否错误地将*解释为通配符,或者我做错了什么。

我已链接到该文件。我知道它很乱,但这是我的第一次尝试。任何帮助将非常感谢:

http://the-polyglot.net/uploads/other/SP-JCH-Words.accdb

谢谢!

编辑:现在在我上传的版本中,它似乎是在第一次点击后为每个条目执行此操作。我根本不明白。它只在我5分钟前点击CVCV时才这样做,我做的唯一一件事是关闭并重新打开Access。

2 个答案:

答案 0 :(得分:0)

首先,您应该为tblShapes表使用Autonumber主键,以便每个'Shape'具有唯一值。 tblExamples中应该有一个外键值来显示表之间的关系。

其次,(无论你是否遵循我的第一点),你有一个主表格和两个子表格。

主窗体应该将RecordSource设置为空。

子表单的LinkMaster属性应设置为组合框的名称。

我会给控件名称前面的三个字母,例如cmb for combobox和txt for textbox。这将使代码更清晰,并避免在字段和控件使用相同名称时发生冲突。

祝你好运!

答案 1 :(得分:0)

我想我解决了这个问题。我在主表单的记录集Like [Forms]![Add Record]![ShapeCombo]

上使用了一个标准

因此,在某些情况下,这会导致Like CV*CV。我把它改成了一个字面匹配,它工作正常。我仍然想知道是否有一种简单的方法来逃避Like表达式中的敏感字符。例如,有没有人知道除了进行手动字符串替换以及将*更改为[*]之外的其他方法?我的问题已得到解决,但我很好奇如果我需要使用带有预期通配符和文字星号的Like表达式,我将如何解决它。