【问题标题】:Getting the most recent autonumber field from another table从另一个表中获取最新的自动编号字段
【发布时间】:2015-08-18 19:03:45
【问题描述】:

我有 2 张桌子:

tblInvoice (InvoiceID (pk), Invoice)

tblLineItem (LineItemID (pk), InvoiceID)

我有 2 个表单“主菜单”和“商店”。在“主菜单”窗体上,当您单击 btnNext 时,它将为 tblInvoice 中的 InvoiceID 生成自动编号,然后转到“商店”窗体。在“Shop”表单上,我有一个名为 txtLineItem 的文本框,我在其中输入行项目,当我单击 btnRecord 时,我希望它使用 tblInvoice 中最新的 InvoiceID。我无法让 btnRecord 工作,而且我不太确定如何在 tblInvoice 中获取最新的自动编号。任何帮助或建议都会很棒。提前致谢。

这是我的 btnRecord 代码:

Private Sub btnRecord_Click()
    DoCmd.SetWarnings False
    Set Recordset = CurrentDb.OpenRecordset(Invoice)
    InvoiceID = CLng(Recordset(InvoiceID))

    DoCOmd.RunSQL "INSERT INTO [tblLineItem] (InvoiceID) VALUES (' & Now(InvoiceID) & ')"
    DoCmd.RunSQL "INSERT INTO [tblLineItem] (LineItemID) VALUES ('" & txtLineItem & "')"
    DoCmd.SetWarnings True
End Sub

我还在以下链接中提供了数据库: https://drive.google.com/file/d/0Bye-M8FI1tRUdHU3QkxsUFhNNnc/view?usp=sharing

【问题讨论】:

    标签: sql ms-access vba autonumber


    【解决方案1】:

    您可以使用一个 MAX 函数。假设带有自动编号的字段名为 ID:

    SELECT Max([ID]) FROM [Table]
    

    【讨论】:

    • 这是我所拥有的,但我无法让它工作:DoCmd.RunSQL "INSERT INTO [tblLineItem] (LineItemID, InvoiceID) VALUES ('" & txtLineItem & "', 'SELECT Max([InvoiceID]) FROM [tblInvoice]')"
    • 如果您尝试插入一条记录,其中一个值是字符串,另一个值来自另一个表,我不确定该语句的问题是什么。您可能想等待更有知识的人回答。编辑:您可以将其视为示例:stackoverflow.com/questions/5907206/… 如果给您带来麻烦的是编写字符串本身,使用正确的引号和所有这些,我建议您编写一个字符串,debug.print 它,当它是好的 runSQL 时字符串。
    • 谢谢你,在研究了你提供的公式后,我实际上能够让它工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2015-10-03
    相关资源
    最近更新 更多