0

我正在尝试使用 MS 访问从 Sage 50 UK 导入发票。我面临的问题是,有时,sage 上的发票之前可能有产品,但此后已被删除。不幸的是,对 [INVOICE_ITEM] 使用 select * 查询将包括发票上的所有项目,包括已删除的记录。

这里的数据库模式来看,sage 似乎使用 RECORD_DELETED 字段来跟踪不再应该在发票上的项目(产品)。显然,下一步是在查询中使用 WHERE 来排除已删除的记录。好吧,不幸的是,我的 RECORD_DELETED 字段始终显示默认的“0”值——即使对于发票上实际删除的项目也是如此!

例如,突出显示的记录实际上应该被删除。

将不胜感激这里的任何帮助!

4

1 回答 1

0

迟到的答案,但事实证明,该RECORD_DELETED字段实际上不起作用 - 或者至少不能通过 ODBC 连接使用。

此问题的解决方案是更改 SQL 查询。INVOICE_ITEM我们必须使用从INVOICE表到表的连接,而不是直接从表中获取数据INVOICE_ITEM。这解决了问题,并且只生成实际在发票上的项目。

我不知道为什么会这样,如果有人能提供一些启发,我会很高兴。

询问:

SELECT INVOICE.INVOICE_NUMBER, INVOICE_ITEM.STOCK_CODE, INVOICE_ITEM.DESCRIPTION, INVOICE_ITEM.QUANTITY
       FROM INVOICE
       JOIN INVOICE_ITEM ON INVOICE.INVOICE_NUMBER = INVOICE_ITEM.INVOICE_NUMBER

您可以添加可选的 where 子句:

WHERE INVOICE.INVOICE_OR_CREDIT <> 'Credit Note'

排除贷方票据。您还可以在哪里invoice_number = 'number'(不要忘记撇号)获取特定发票。

于 2020-10-20T08:32:14.290 回答