2014-01-30 2 views
0

Привет Я представляю форму для доступа, но хочу получить доступ к назначенному номеру авто, который будет отображаться в текстовом поле после отправки. Ниже я был, любые предложения были бы замечательными!C# get access 2010 autonumber

string cmdstr = "Insert into TaskPerformed(TaskType,OtherType,Analyst,DateCompleted)Values(@b,@c,@d,@e)"; 
string query2 = "Select @@IDENTITY"; 

OleDbConnection con1 = new OleDbConnection(constr); 
OleDbCommand com = new OleDbCommand(cmdstr, con1); 
OleDbCommand cmdNewID = new OleDbCommand("SELECT @@IDENTITY", con1);// 

con1.Open(); 

cmd.CommandText = query2; 
com.ExecuteNonQuery(); 
con1.Close(); 

label16.Text = cmdNewID.ToString(); 
+2

Вы не выполняется cmdNewId - это может помочь –

+0

Кроме того, ваши заполнители параметров должны быть просто вопросительными знаками ('?'), и вы, похоже, не создаете никаких параметров '.Parameter' или присваиваете им значения. –

+0

@GordThompson Вы можете вызывать параметры, которые вам нравятся IMHO, просто имена не используются, а только порядок. Я предпочитаю использовать «настоящие» имена, а не?, Это облегчает видеть, куда я иду. – Fionnuala

ответ

3

Похоже, что проблемы у Вас с потому, что вы не выполняет вторую команду ... и вы закрываете соединение, прежде чем использовать его

using(OleDbCommand cmdNewID = new OleDbCommand("SELECT @@IDENTITY", con1)) 
{ 
    con1.Open(); 

    cmd.CommandText = query2; 
    com.ExecuteNonQuery(); 

    label16.Text = cmdNewID.ExecuteScalar(); 
} 
Смежные вопросы