VBA + SQL Server - 插入上次ID

问题描述 投票:1回答:1

希望你能提供帮助 - 我在INSERT之后收到最后一个ID时遇到问题。

所以环境 - 访问2016,SQL Server和VBA

Dim db As DAO.Database
Dim RS As New ADODB.Recordset
Dim sql As String

我宣布了这些论文然后私有子。

Private Sub CreateOrderHeader()
Dim CustomerID As Integer
Dim OrderDate As String
Dim OrderStatus As String
Dim OrderValue As Double
Dim OrderNotes As String
Dim OrderPostageID As String
Dim OrderAddressID As String
Dim OrderBatchID As Integer
Dim OrderPayment As String
Dim OrderCourierID As String
Dim OrderAgentID As Integer
Dim OrderOutstanding As Double

CustomerID = tbxCusID
OrderDate = Format(Now)
OrderStatus = "InProcess"
OrderValue = txtTotal.value
OrderNotes = tbxNotes.value
OrderPostageID = txtPostage.Column(0)

If tbxCustomerAddress = tbxDeliveryAddress Then
    OrderAddressID = 3 'default customers address
Else
    'NEED TO GET CUSTOMER ADDRESS TO DO
End If
OrderBatchID = cmbBatch.Column(0)
OrderPayment = sPayMethod
OrderCourierID = cbxShipping.Column(0)
OrderAgentID = 0
OrderOutstanding = txtTotal.value

 Dim testvar As String

sql = "INSERT INTO dbo_OrderHeader " _
      & "(OrdCusID, OrdDate, OrdStatus, OrdValue, OrdNotes, OrdPostageID, OrdDelAddID,OrdBatchID,OrdPaymentMethod, OrdCourierID,ordAgentID, OrdOutstanding,OrdSource) " _
      & " VALUES ('" & CustomerID & "' ,'" & OrderDate & "', '" & OrderStatus & "', '" & OrderValue & "', '" & OrderNotes & "', '" & OrderPostageID & "','" & OrderAddressID & "','" & OrderBatchID & "','" & OrderPayment & "','" & OrderCourierID & "','" & OrderAgentID & "','" & OrderOutstanding & "', 1)"



DoCmd.RunSQL (sql)

sql = "SELECT @@IDENTITY As IDT"
RS.Open sql, CurrentProject.Connection, adOpenStatic, adLockReadOnly
IDT = RS!IDT

MsgBox ("Succes - OrderHeader" & " '" & IDT & "'  ")
End Sub

我期待这段代码的结果:

sql = "SELECT @@IDENTITY As IDT"
RS.Open sql, CurrentProject.Connection, adOpenStatic, adLockReadOnly
IDT = RS!IDT

但这给了我“0”的结果。

你能帮忙吗?

谢谢

sql sql-server vba ms-access
1个回答
2
投票

你可以试试这个:

Set db = CurrentDB
db.Execute(sql)

IDT = db.OpenRecordset("SELECT @@IDENTITY")(0)
Set db = Nothing

注意

不要像DoCmd.RunSQL (sql)那样执行插入查询而是按照上面的方法。

© www.soinside.com 2019 - 2024. All rights reserved.