2014-12-10 130 views
0

尝试从表'发票'中的最近记录获取RecieptNumber(autonumber)以将值存储在变量invoiceNum(integer)中。访问(VBA)访问记录集中的最后一条记录

Dim rstInvoices As Recordset 

Set cdCurrentDatabase = CurrentDb 
Set rstInvoices = cdCurrentDatabase.OpenRecordset("SELECT LAST ([RecieptNumber]) FROM Invoices;") 

invoiceNum = rstInvoices("[RecieptNumber]").Value 

昨天开始VBA编程,非常感谢任何帮助,我将能够理解。

+0

您的要求:'SELECT LAST([RecieptNumber])如rNum FROM Invoices'您的vba:'InvoicesinvoiceNum = rstInvoices.Fields(“rNum”)。Value'。另请参阅:http://msdn.microsoft.com/fr-fr/library/office/ff197799(v=office.15).aspx – scraaappy 2014-12-10 22:57:49

+0

[如何获取表单的最后一条记录ID?]( http://stackoverflow.com/questions/13587638/how-to-get-the-last-record-id-of-a-form) – LondonRob 2014-12-10 23:02:28

+0

如果你在一个多用户系统上,任何涉及Last,Top等的东西,是非常危险的,你需要一个CurrentDb和@@ Identity的实例,参见http://stackoverflow.com/questions/1628267/autonumber-value-of-last-inserted-row-ms-access-vba – Fionnuala 2014-12-11 01:28:33

回答

0

的字符串参数rstInvoices有提及,实际上是通过执行SELECT语句返回现场。但是查询不返回字段RecieptNumber,但是Last(RecieptNumber)没有指定名称。因此,你首先要使用AS条款,得到聚合列名:

SELECT LAST(RecieptNumber) AS LastNumber ... 

现在,您可以参考该字段中VBA:

invoiceNum = rstInvoices("[LastNumber]").Value 
2

你想要做的事,如:

SELECT TOP 1 RecieptNumber FROM Invoices ORDER BY RecieptNumber DESC 

这将责令其所以最后一个记录是第一个在列表中,然后它需要的第一个记录。当然,假定RecieptNumber按数字顺序创建。

而且它的窃听我,所以我会补充这一点 - 它应该是ReceiptNumber,不RecieptNumber ...