从字符串中提取的ID无法用于连接绑定形式-“表达式...太复杂”

时间:2019-03-11 01:07:12

标签: sql ms-access relationship

我在Access数据库中有一个指向Outlook Mailitem文件夹的链接表。这样做很方便,因为它可以不断进行自我更新,但是我无法添加额外的字段来将这些记录与父表相关联。

我的解决方法是将自动生成/添加的ID字符串放入主题中,以便从那里开始工作。为了使表单按照我需要的方式工作,我正在尝试创建一个查询,该查询从链接表中获取我需要的字段,并添加一个带有提取的ID的计算字段,以便可以将其引用为与之相关的记录。表格。

查询工作正常(我提取了所有记录及其ID),但是当我尝试通过计算字段来过滤此查询中的记录时,我得到:

  

该表达式的输入错误,或者过于复杂而无法评估。例如,一个数字表达式可能包含太多复杂的元素。通过将表达式的一部分分配给变量来尝试简化表达式。

我尝试将计算出的字段分为三个字段,以使其更易于阅读,希望这样可以更轻松地评估Access的值,但是我仍然遇到相同的错误。我的基本查询当前是:

SELECT InStr(Subject,"Support Project #CS")+19 AS StartID, 
       InStr(StartID,Subject," ") AS EndID, 
       Int(Mid(Subject,StartID,EndID-StartID)) AS ID, 
       ProjectEmails.Subject, 
       ProjectEmails.[From], 
       ProjectEmails.To, 
       ProjectEmails.Received, 
       ProjectEmails.Contents
FROM ProjectEmails
WHERE (((ProjectEmails.[Subject]) Like "*Support Project [#]CS*"));

我尝试将子表单绑定到qryProjectEmailWithID.ID = SupportProject.ID上的此查询,其中主表单绑定到SupportProject,但出现上述错误。我尝试构建一个查询,该查询从该查询中选择ID =给定参数的所有记录,但仍然出现相同的错误。


添加支持项目ID的工作查询如下所示:

+----+--------------------------------------+----------------------+----------------------+------------+----------------------------------+
| ID |               Subject                |          To          |         From         |  Received  |             Contents             |
+----+--------------------------------------+----------------------+----------------------+------------+----------------------------------+
|  1 | RE: Support Project #CS1 ID Extra... | questions@so.com     | Isaac.Reefman@so.com | 2019-03-11 | Trying to work out how to add... |
|  1 | RE: Support Project #CS1 ID Extra... | isaac.reefman@so.com | questions@so.com     | 2019-03-11 | Thanks for your question. The... |
|  1 | RE: Support Project #CS1 ID Extra... | isaac.reefman@so.com | questions@so.com     | 2019-03-11 | You should use a different me... |
|  2 | RE: Support Project #CS2 IT issue... | support@domain.com   | someone@company.com  | 2019-02-21 | I really need some help with ... |
|  2 | RE: Support Project #CS2 IT issue... | someone@company.com  | support@domain.com   | 2019-02-21 | Thanks for your question. The... |
|  2 | RE: Support Project #CS2 IT issue... | someone@company.com  | support@domain.com   | 2019-02-21 | Have you tried turning it off... |
|  3 | RE: Support Project #CS3 email br... | support@domain.com   | someone@company.com  | 2019-02-12 | my email server is malfunccti... |
|  3 | RE: Support Project #CS3 email br... | someone@company.com  | support@domain.com   | 2019-02-12 | Thanks for your question. The... |
|  3 | RE: Support Project #CS3 email br... | someone@company.com  | support@domain.com   | 2019-02-13 | I've just re-started the nece... |
+----+--------------------------------------+----------------------+----------------------+------------+----------------------------------+

有问题的视图将填充一个数据表,该数据表看起来与ID与当前SupportProject记录的ID匹配的项相同,并在选择新记录时更新。单独的文本框应显示在那个网格中选择的记录的全部内容,例如:

  

您是否尝试过将其关闭然后再次打开?

     

发件人:support@domain.com

     

在:2019年2月21日

     

感谢您的提问。此问题已分配给支持项目#CS2,支持人员将尽快与您联系以帮助您。由于它被认为是中等优先级,因此您应该期待每日更新。

     

谢谢

     

支持

     

来自:某人@公司

     

在:2019年2月21日

     

我的计算机确实需要一些帮助。似乎真的很慢,我无法高效地完成工作。

当我尝试使用计算出的数字与SupportProject表的PK相关时,这些事情都不会发生...


我不知道这是否是问题的一部分,但是无论我使用Int(Mid(Subject...还是Val(Mid(Subject...,我仍然显然会获得Double,其中ID字段(作为自动增量ID)为长。我无法解决如何强制它返回Long的问题,所以我无法测试这是否是问题所在。

1 个答案:

答案 0 :(得分:0)

那是发布的SQL产生的输出?我确实想要原始数据,但足够接近。如果要求提取...CS之后的数字,请在查询中计算并保存查询:
Val(Mid([Subject],InStr([Subject],"CS")+2))

然后构建另一个查询以将第一个查询连接到表。

SELECT qryProjectEmailWithID.*, SupportProject.tst
FROM qryProjectEmailWithID
INNER JOIN SupportProject ON qryProjectEmailWithID.ID = SupportProject.ID;

过滤条件可以应用于任何一个ID字段。

子窗体可以在主窗体上显示与SupportProject记录同步的相关子记录。

我先用您的数据然后通过指向我的收件箱的链接测试了ID calc。查询联接没有问题。