组合框不会返回正确的结果

时间:2016-06-23 19:51:06

标签: ms-access access-vba

我的组合框的以下行源显示正确的结果,除非客户端(这是指向tblClient的链接)是661.在所有其他情况下,给出正确的结果。 661是tblClient的PK。在这种情况下,该字段为空,但实际上它确实具有tblReceipts的正确PK。我知道这一点,因为将组合框链接到frmreceipts的命令按钮可以正常工作。我已经对我的数据进行了三次检查,并将Row Source链接到Access Query,而不是纯SQL。 'Access Query返回正确的数据,让我猜测问题不在于SQL,而在于表单或组合框中。重要的是客户端661的功能与所有其他客户端相同,除了在这方面。如果所有其他方法都失败了,我将创建一个单独的命令按钮,以便在涉及661时执行必要的操作。非常希思罗宾逊,我知道。

SELECT tblReceipts.ID, tblClient.ClientID, tblClient.ClientName, tblReceipts.DateRec, tblReceipts.Type, tblReceipts.Amount, tblReceipts.SerialNo
FROM tblReceipts INNER JOIN tblClient ON tblReceipts.ClientLookup = tblClient.ClientID
WHERE (((tblClient.ClientID)=IIf([Forms]![frmDisclosure]![Client]=661,417,[Forms]![frmDisclosure]![Client])))
ORDER BY tblClient.ClientName, tblReceipts.DateRec DESC;

更多信息:我的组合框的列数为7,第一个是客户端的PK。列宽通常为零,但如果我将其设为1cm,则客户端661正确显示PK 417.当然,大多数记录都不令人满意,但很有趣。

2 个答案:

答案 0 :(得分:0)

  

..我的组合框显示正确的结果,除非客户端...是661

好吧,用417替换661,所以你永远不会收到661的数据,而且你应该仔细检查417的数据。

尝试运行此命令以检索417的数据:

PHP

尝试显示当前的ClientID:

SELECT tblReceipts.ID, tblClient.ClientID, tblClient.ClientName, tblReceipts.DateRec, tblReceipts.Type, tblReceipts.Amount, tblReceipts.SerialNo
FROM tblReceipts INNER JOIN tblClient ON tblReceipts.ClientLookup = tblClient.ClientID
WHERE (tblClient.ClientID=417)
ORDER BY tblClient.ClientName, tblReceipts.DateRec DESC;

现在,研究检索到的CurrentClientID值。

答案 1 :(得分:0)

通过更改表单的“当前”事件中组合框的行来源解决了该问题。

Select Case Client
    Case 661
        Me.ReceiptsLookup.RowSource = "SELECT tblReceipts.ID, tblClient.ClientID, tblClient.ClientName, tblReceipts.DateRec, tblReceipts.Type, tblReceipts.Amount, tblReceipts.SerialNo " & _
                                      "FROM tblReceipts INNER JOIN tblClient ON tblReceipts.ClientLookup = tblClient.ClientID " & _
                                      "WHERE (((tblClient.ClientID) = 417)) " & _
                                      "ORDER BY tblClient.ClientName, tblReceipts.DateRec DESC "

结束选择