2013-08-12 25 views
0

下面的代碼有一個update和一個insert語句,使用相同的參數。更新函數WORKS,插入語句不... ...(更新中,所有參數都成功設置在數據庫中)VB.Net到AccessDB by SQL - INSERT INTO帶參數錯誤

我不會發布剩餘的連接字符串,因爲這已經設置和工作。

我收到以下錯誤:標準表達式中的數據類型不匹配。

Dim UpdateCon As MasterConnection = New MasterConnection() 
Dim myCommand As OleDb.OleDbCommand = UpdateCon.GetConnection().CreateCommand 
myCommand.Parameters.Add(New OleDb.OleDbParameter("@Navn", BoxKundeNavn.Text)) 'text field' 
myCommand.Parameters.Add(New OleDb.OleDbParameter("@Hendelsesdato", DtpHendelsesdato.Value.ToString)) 'datetimepicker' 
myCommand.Parameters.Add(New OleDb.OleDbParameter("@Event", BoxTrojans.Text)) 'text field' 
myCommand.Parameters.Add(New OleDb.OleDbParameter("@Annet", BoxLogg.Text)) 'text field' 
myCommand.Parameters.Add(New OleDb.OleDbParameter("@EndretAv", Analyst.ToString)) 'string variable' 
myCommand.Parameters.Add(New OleDb.OleDbParameter("@EndretDato", Date.Now().ToString)) 'datetime picker' 
myCommand.Parameters.Add(New OleDb.OleDbParameter("@Kontaktet", contacted)) 'boolean' 
myCommand.Parameters.Add(New OleDb.OleDbParameter("@BrukerID", BoxKundeID.Text)) 'text field' 

If userExist = True Then 
    Dim SqlText As String = "Update master Set Navn= @Navn, Hendelsesdato= @Hendelsesdato, Event= @Event," & _ 
       "Annet= @Annet, EndretAv= @EndretAv, [email protected], [email protected] WHERE BrukerID= @BrukerID" 
    myCommand.CommandText() = SqlText 
Else 
    intCheck = MsgBox("Du er nå i ferd med å legge til en ny unik kundeID i database, er dette riktig?", vbYesNo, "Ny kundeID") 
    If intCheck = True Then 
     Dim SqlText As String = "INSERT INTO master (Hendelsesdato, BrukerID, Navn, Event, Annet, Kontaktet, EndretDato, EndretAv) " & _ 
        "VALUES (@Hendelsesdato, @BrukerID, @Navn, @Event, @Annet, @Kontaktet, @EndretDato, @EndretAv)" 
     myCommand.CommandText() = SqlText 

    Else 
     Exit Sub 
    End If 
End If 

Dim test As Integer 
Try 
    UpdateCon.GetConnection.Open() 
    test = myCommand.ExecuteNonQuery() 
    UpdateCon.GetConnection.Close() 
Catch ex As OleDb.OleDbException 
    MsgBox(ex.Message.ToString) 
End Try 
+1

如果用戶不存在,什麼是「BrukerID」?這是在數據庫中自動生成的 - 你明確地在你的'insert'語句中設置它。 –

+0

BrukerID或UserID在參數列表中給出。 – Silverdream

+0

是的,我知道,這正是我的觀點 - 當用戶不存在時它有什麼價值? –

回答

2

Access.OLEDB 忽略參數名稱;參數必須在確切的命令中定義,它們出現在命令文本中。由於您的兩個命令使用相同的參數,因此您需要使用單獨的代碼塊來定義每個參數的參數