2012-06-10 7 views
0

Я обновляю базу данных с новым зарегистрированным пользователем. им будет предоставлен идентификатор пользователя. Я хочу использовать этот номер при обновлении местоположения в другой таблице. но я не знаю, что будет идентификатором пользователя. (это номер автоинкремента). Итак, я подумал, что обновляю первую таблицу. Затем выберите максимальный идентификатор пользователя и вставьте этот идентификатор в качестве идентификатора пользователя местоположения в другой таблице, но я не могу заставить его работать.Вставка максимального значения одной таблицы из одной таблицы в другую.

Вот код.

String StrSQL = "INSERT INTO Fastelejer (Fornavn,Efternavn) VALUES ('" + fornavn + "','" +  
Efternavn + "')"; 
OleDbCommand InsertCommand = new OleDbCommand(StrSQL, conn); 
InsertCommand.ExecuteNonQuery(); 
StrSQL = "INSERT INTO Bådpladser (Fastelejerid) SELECT MAX (Fastelejerid) FROM  
StrSQL = "INSERT INTO Bådpladser (Fastelejerid) SELECT MAX (Fastelejerid)FROM 
Fastelejer WHERE Pladsnummer = " + Pladsnummer; 

Pladsnummer представляет собой вход для их местоположения. Таким образом, регистрация должна поместить идентификатор пользователя в выбранное место.

+0

Смотрите документацию MS здесь о том, как получить значение http://support.microsoft.com/kb/ 815629 –

ответ

0

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

command.CommandText = "INSERT Table1 (...) values (...); SELECT @@IDENTITY"; 
var identity = (int) command.ExecuteScalar(); 
command.CommandText = "INSERT Table2 (user_id, ...) VALUES (@user_id, ...)"; 
command.Parameters.AddWithValue("@user_id", identity); 
command.ExecuteNonQuery(); 
Смежные вопросы