【问题标题】:Access Query with a textbox as criteria for a string OR int使用文本框作为字符串 OR int 的条件访问查询
【发布时间】:2016-10-07 15:13:03
【问题描述】:

我正在处理一个似乎无法解决的问题。我有一个 Access 查询,我正在根据单个文本框值的条件检查多个列。前 3 列一切正常。它们都是字符串。

SELECT Req.Ctrl, Vend.VendNick, Req.CSCReq, Req.PO, Req.Status, Line.Quote
FROM Line INNER JOIN (Vend INNER JOIN Req ON Vend.[VendID] = Req.[Vend]) 
ON Line.Ctrl = Req.Ctrl
WHERE (((Req.CSCReq)=[Forms]![Index]![Box2])) OR 
(((Req.PO)=[Forms]![Index]![Box2])) OR 
(((Line.Quote)=[Forms]![Index]![Box2]));

当我添加第 4 列时,我收到错误“表达式输入错误,或者太复杂...”

SELECT Req.Ctrl, Vend.VendNick, Req.CSCReq, Req.PO, Req.Status, Line.Quote
FROM Line INNER JOIN (Vend INNER JOIN Req ON Vend.[VendID] = Req.[Vend]) 
ON Line.Ctrl = Req.Ctrl
WHERE (((Req.CSCReq)=[Forms]![Index]![Box2])) OR 
(((Req.PO)=[Forms]![Index]![Box2])) OR 
(((Line.Quote)=[Forms]![Index]![Box2])) OR
(((Req.Ctrl)=[Forms]![Index]![Box2]));

我假设这是因为第 4 列是 int 并且访问没有为该特定列正确定义文本框值的参数。有什么办法可以在查询的列级别或在 sql 中解决这个问题,以便前 3 个仍将值视为字符串,但第 4 个将值视为 int?

感谢您的帮助

【问题讨论】:

    标签: sql ms-access criteria


    【解决方案1】:

    如果要将表中的每一行的列转换为字符串以与文本框值进行比较,请使用 CInt 执行相反的操作。效率会更高:

    (((Req.Ctrl)=CInt([Forms]![Index]![Box2])));
    

    【讨论】:

      【解决方案2】:

      我结合了你的答案和一个小谷歌来帮助我到达我想去的地方。非常感谢您的快速回复。 Ted 的回答使第 4 列有效,但其他 3 列开始失败并出现相同的错误。 JohnHC 也这样做了。下面是最终奏效的方法。

      SELECT Req.Ctrl, Vend.VendNick, Req.CSCReq, Req.PO, Req.Status, Line.Quote
      FROM Line INNER JOIN (Vend INNER JOIN Req ON Vend.[VendID] = Req.[Vend]) 
      ON Line.Ctrl = Req.Ctrl
      WHERE (((Line.Quote)=[Forms]![Index]![Box2])) OR 
      (((Req.PO)=[Forms]![Index]![Box2])) OR 
      (((Req.CSCReq)=[Forms]![Index]![Box2])) OR 
      (((CVar([Req].[Ctrl]))=[Forms]![Index]![Box2]));
      

      出于某种原因,CVar 让一切都开始点击...不知道为什么,但它确实有效。

      【讨论】:

      • 再看看@Ted 的答案,即将参数转换为整数以匹配列的类型(特别是如果您不知道为什么您的答案有效:)。
      【解决方案3】:

      使用 STR() 函数:

      str(Req.Ctrl)=[Forms]![Index]![Box2]
      

      顺便说一句,我讨厌 MS Access 及其对括号的过度使用...

      【讨论】:

      • 将所有 Req.Ctrl 转换为字符串以将其与 texbox 进行比较会非常昂贵。转换输入值总是更好
      猜你喜欢
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      相关资源
      最近更新 更多