Я использую первый оператор «Использование» ниже, чтобы вставить строку в таблицу с именем «Архивы». В этой таблице есть первичный ключ, который является autonum в базе данных Access. Второй оператор Using, который я использую, чтобы получить значение для поля autonum, выполняя поиск по только что введенным параметрам. Хотя это работает отлично, это просто кажется некрасивым. Есть ли способ вернуть мне поле autonum после вставки? (Кстати, я удалил некоторый код между этими двумя операторами, поэтому, если он выглядит немного странно, может быть, поэтому.
Using myConn As New OleDbConnection(strConnectionString),
myInsertCommand As New OleDbCommand("INSERT INTO Archives (ArchUserName, ArchUserDomain, ArchDate, ArchRoot, ArchStatus)
VALUES (@strArchUser, @strArchUserDomain, @dteArchDate, @strArchRoot, @strArchStatus);", myConn)
myInsertCommand.Parameters.Add("@strArchUser", OleDbType.VarChar, 100).Value = strArchUser
myInsertCommand.Parameters.Add("@strArchDomain", OleDbType.VarChar, 100).Value = strArchDomain
myInsertCommand.Parameters.Add("@dteArchDate", OleDbType.Date, 20).Value = dteArchDate
myInsertCommand.Parameters.Add("@strArchRoot", OleDbType.VarChar, 255).Value = strArchRoot
myInsertCommand.Parameters.Add("@strArchStatus", OleDbType.VarChar, 100).Value = strArchStatus
myConn.Open()
myInsertCommand.ExecuteNonQuery()
End Using
Dim sql As String = "SELECT ArchID
FROM Archives
WHERE ArchUserName = @ArchUserName
AND ArchUserDomain = @ArchUserDomain
AND ArchDate = @ArchDate
AND ArchRoot = @ArchRoot"
Using myConn As New OleDbConnection(strConnectionString),
command As New OleDbCommand(sql, myConn)
With command.Parameters
.Add("@ArchUserName", OleDbType.VarChar, 50).Value = strArchUser
.Add("@ArchUserDomain", OleDbType.VarChar, 50).Value = strArchDomain
.Add("@ArchDate", OleDbType.Date).Value = dteArchDate
.Add("@ArchRoot", OleDbType.VarChar, 50).Value = strArchRoot
End With
myConn.Open()
strArchID = "Arch" & CStr(command.ExecuteScalar())
strDirectoryName = "Archive" & CStr(command.ExecuteScalar())
ReturnCode = 0
End Using