1
私はSubプログラム用に以下のコードを用意しています。 MSAccessデータベースに格納されているデータを使用して行を挿入しています。私がしたいのは、追加されたレコードのID番号を取得して、正常に追加されたときに呼び出されるウィンドウのプロパティに設定できるようにすることです。私はこれを見てみましたが、@@IDENTITY
について何かを得ていますが、全く異なる接続方法を使用しています。MS Accessデータベースから最後に挿入されたIDを取得しています
Private Sub CreateTournament_Click(sender As System.Object, e As System.EventArgs) Handles CreateTournament.Click
' TODO: Check the form for errors, or blank values.
' Create the tournament in the database, add the values where needed. Close the form when done.
Dim cn As OleDbConnection
Dim cmd As OleDbCommand
Dim dr As OleDbDataReader
Dim icount As Integer
Dim str As String
Try
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Master.mdb'")
cn.Open()
str = "insert into Tournaments (SanctioningID,TournamentName,TournamentVenue,TournamentDateTime,TournamentFirstTable,Game,Format,OrganizerID) values(" _
& CInt(SanctioningIDTxt.Text) & ",'" & Trim(TournamentNameTxt.Text) & "','" & _
"1" & "','" & EventDateTimePck.Value & "','" & TableFirstNumberNo.Value & "','" & GameList.SelectedIndex & "','" & FormatList.SelectedIndex & "','" & Convert.ToInt32(ToIDTxt.Text) & "')"
'string stores the command and CInt is used to convert number to string
cmd = New OleDbCommand(Str, cn)
icount = cmd.ExecuteNonQuery
MessageBox.Show(icount)
'displays number of records inserted
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
Me.Close()
Dim n As New TournamentWindow ' Open a new Tournament window if everything is successful
n.TournID = Counter '<< This should be set to the ID of the most recently inserted row
n.Show(HomeForm)'Invoke the form and assign "HomeForm" as it's parent.
End Sub
そうではありません。誰かが認定番号を持っていない場合は、デフォルトで-1になります。したがって、-1の値が複数あることがあります。 @@ IDENTITYについての質問、それは起こる可能性はありませんが、他の誰かがレコードを追加した場合、最後に挿入したものか、挿入したものを与えるでしょうか? –
それはあなたに最後のものを与えます。 –
私はデータベースがロックされ、プログラムの1つのインスタンスだけが使用されていることを確認する必要があります。ありがとう。 –