Hej! Jag har inte använd parametrar med frågor mot Access, så jag vet inte om det är korrekt eller inte. Du kan testa utan parametrar: Ok, jag är ingen stjärna på sql, men min första tanke är att du sätter din parameter som Output... Hej! Löste det hela genom:Vad är det för fel?
Skulle någon kunna säga mig vad det är för fel på nedanstående kod.
Databasen är en Access.
Får följande fel:
objError.MessageEn OLE DB-åtgärd i flera steg genererade fel. Kontrollera alla OLE DB-statusvärden som finns tillgängliga. Inget arbete utfördes.
Felet inträffar på "ExecuteNonQuery();"
MVH
Peter Sandberg
Kod:
OleDbConnection myConnection = new OleDbConnection(Application.Contents["myConnString"].ToString());
try
{
string sql = "INSERT INTO [Produkter] (ID) VALUES (@ID);";
OleDbCommand myCommand = new OleDbCommand(sql, myConnection);
myCommand.CommandType = CommandType.Text;
myCommand.Parameters.Add("@ID",OleDbType.Integer);
myCommand.Parameters["@ID"].Direction = ParameterDirection.Output;
myConnection.Open();
myCommand.ExecuteNonQuery();
int i = int.Parse(myCommand.Parameters["@ID"].Value.ToString());
Debug.Write("ID = " + i + "\n");
return i;
catch(Exception objError)
{
Debug.Write("\n");
Debug.Write("objError.Message" + objError.Message + "\n");
Debug.Write("objError.Source = " + objError.Source + "\n");
Debug.Write("Load_Produktgrupper" + "\n");
return -1;
}
finally
{
myConnection.Close();
}Sv: Vad är det för fel?
string sql = string.Format("INSERT INTO [Produkter] (ID) VALUES ({0});", ParameterDirection.Output.ToString());
OleDbCommand myCommand = new OleDbCommand(sql, myConnection);
myCommand.CommandType = CommandType.Text;
myConnection.Open();
myCommand.ExecuteNonQuery();
Sv: Vad är det för fel?
Om du vill hämta ut det id:et som du precis stoppade in tror jag du måste lösa det på nåt annat sätt...Sv:Vad är det för fel?
Utan parameter är det inga problem. Men jag vill veta vilket värde räknarposten fick för att kunna
hänvisa till denna post i kommande kod.
Förmodar att Access inte stöder output parametrar ?
MVH
PeterSv: Vad är det för fel?
string sql = "INSERT INTO [Produkter] (Namn) VALUES ('');";
OleDbCommand myCommand = new OleDbCommand(sql, myConnection);
myCommand.CommandType = CommandType.Text;
myConnection.Open();
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Select @@identity as theNewID";
objReader = myCommand.ExecuteReader();
objReader.Read();
if (objReader.HasRows == false )
return -1;
else
return objReader.GetInt32(0);