2017-01-16 8 views
0

フォーム上の入力に基づいてSQL Serverテーブルに新しいレコードを挿入するVBAスクリプトがMS Accessにあります。MS AccessでSQL Insert後にメッセージボックスに新しく作成されたIDを引用します。


Private Sub Allocate_Click() 
    Dim strSQL As String 
    strSQL = "INSERT INTO dbo_ALLOCATIONS " _ 
    & "([Employee No],[Device Serial Number],[Start Date]) VALUES " _ 
    & "('" & Me.EmployeeNumber & "', '" & Me.SerialNumber & "', '" & Me.StartDate & "')" 
    CurrentDb.Execute strSQL, dbFailOnError 
    Dim ReceiptNo As dao.Recordset 
    Set ReceiptNo = CurrentDb.OpenRecordset("select @@identity") 
    MsgBox "Device Successfully Allocated. Receipt ID is " & CurrentDb.OpenRecordset("select @@identity") 
End Sub 

最後に、挿入時に自動インクリメントされたIDを照会します。私は、メッセージボックスでこれを引用して、ユーザが他の場所でそれを利用できるようにしたいと考えています。どうすればMsgBoxコマンドのように引用することができますか?今の私が持っているのは、このコマンドを組み合わせることができないという事実の周りに多くの問題を引き起こし、「ReceiptNo」だけを使用するときは文字列ではないと言います。

答えて

2

レコードセットには1つの結果しか存在しません。最後の行を次のように変更してみてください。

MsgBox "Device Successfully Allocated. Receipt ID is " & ReceiptNo(0) 
+0

これは、必要に応じて正確に動作します。前にReceiptNoを追加しましたが、必要な結果を得た列番号の選択を追加していませんでした – Gallus

0

レコードセット全体を印刷することはできません。ファイルの終わりに達していないときに、印刷する列を参照してレコードセットをループする必要があります。その後、列を文字列として出力します。私はそれをテストしなかった。

While not ReceiptNo.EOF 
    Msgbox Str(ReceiptNo!Identity) 
    ReceiptNo.moveNext 
Wend 
関連する問題