我在后端尝试使用SQL Server的新手MS Access表单(链接到)。
所以我有一个简单的表格,用于创建用
创建的发票create table Invoice
(
ID INT not null primary key,
IssuerID int not null,
InvoiceID int not null,
CustomerID int not null
)
也许我甚至不需要ID,因为我可以通过对唯一地识别条目(IssuerID,InvoiceID)。
总而言之,我希望IssuerID
向CustomerID
添加发票,而InvoiceID
自然会增加1.我可以做类似的事情
SELECT ISNULL(MAX(InvoiceID), 0) + 1 AS InvoiceID
FROM Invoice
WHERE IssuerID = @sp;
其中@sp
是某个值。
在UI逻辑中,我有一个组合框来选择IssuerID
(ACCESS),这里我的问题就开始了。
我已为InvoiceID
使用了一个文本框。我希望它通过下一个ID更新表格(即,如果IssuerID = 5,有3张已开具发票,下一张发票应编号为4)。
我无法直接进行SQL工作,也无法在IssuerID
组合中的after_update中使用VBA。
所以我创建了一个视图(在SQL Server中并链接到它),包含所有可能的IssuerIds及其相应的nextInvoiceIds。
SELECT
IssuerID, NextInvoiceID
FROM
(SELECT
Issuers.ID AS IssuerID,
ISNULL(MAX(Invoice.InvoiceID), 0) + 1 AS NextInvoiceID
FROM
Issuers
FULL OUTER JOIN
Invoice ON Issuers.ID = Invoice.IssuerID
GROUP BY
Issuers.ID) AS UNDATA
接下来,我可以选择nextInvoiceID
,但现在我还需要它来更新实际的列。
是否可以来自同一个文本框?
我应该使用某种触发器来回退更新此(InvoiceID)(或者SQL Server中是否还有其他自动增量选项)?