VB.Net通过SQL访问数据库-插入到,参数错误

VB.Net通过SQL访问数据库-插入到,参数错误,sql,vb.net,ms-access,Sql,Vb.net,Ms Access,以下代码有一个update和一个insert语句,使用相同的参数。update函数起作用,Insert into语句不。。。(在更新中,在数据库中成功设置所有参数) 我不会发布连接字符串的其余部分,因为这已经设置好并正在运行 我收到以下错误:条件表达式中的数据类型不匹配 Access.OLEDB忽略参数名称;必须按照参数在命令文本中出现的确切顺序定义参数。由于您的两个命令以不同的顺序使用相同的参数,因此您必须使用单独的代码块来定义每个命令的参数。如果用户不存在,BrukerID是什么?这是在数据

以下代码有一个
update
和一个
insert
语句,使用相同的参数。update函数起作用,Insert into语句不。。。(在更新中,在数据库中成功设置所有参数)

我不会发布连接字符串的其余部分,因为这已经设置好并正在运行

我收到以下错误:条件表达式中的数据类型不匹配


Access.OLEDB忽略参数名称;必须按照参数在命令文本中出现的确切顺序定义参数。由于您的两个命令以不同的顺序使用相同的参数,因此您必须使用单独的代码块来定义每个命令的参数。

如果用户不存在,
BrukerID
是什么?这是在数据库中自动生成的吗?您在
insert
语句中显式设置它。BrukerID或UserID在参数列表中给出。是的,我知道,这正是我的观点-当用户不存在时,它有什么值?当用户不存在时,该字段将由用户手动填充,并将包含数据。这将在程序中进一步检查,以查看它是否保留为空(所有字段都已检查)。AccessDB也是一个文本字段,BrukerID将包含11个数字或一些字母+数字。感谢您的想法,但它并没有解决问题(它只想在一些变量和调用之前添加CType)。我将继续搜索代码;)
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, EndretDato=@EndretDato, Kontaktet=@Kontaktet 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