Получение последнего вставленного идентификатора из базы данных MS Access - PullRequest
1 голос
/ 23 февраля 2012

У меня есть следующий набор кода для подпрограммы. Это вставка строки в базу данных MSAccess с использованием данных, представленных в содержащей форме. То, что я хотел бы сделать, это захватить идентификационный номер этой добавленной записи, чтобы его можно было установить для свойства окна, которое вызывается при успешном добавлении. Я попытался найти это, но я получил кое-что о @@IDENTITY, но он использует совершенно другой способ подключения.

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 голос
/ 23 февраля 2012

Предполагая, что у вас есть столбец автоинкремента в таблице Турниров, вы можете сделать «SELECT @@ IDENTITY», чтобы получить идентификатор последней вставленной записи.

Кстати, является ли SanctioningIDTxt.Text уникальным?Если это так, вы не можете использовать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...