条件表达式中的数据类型不匹配

时间:2009-11-21 09:57:12

标签: vb.net ms-access

我在VB.NET中有一个使用Ms Access As Backend的项目...在将数据插入表时,查询和数据类型错误没有错误,但有时会发生OleDB异常 错误是“条件表达式中的数据类型不匹配”。 查询是....

Dim cmdstr1 As String = ""
        Dim constr As String = ""
          Dim sqlQuery As String = ""
        constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\PhoneDiary\MyDiary.mdb"

 cmdstr = "Insert Into [DetailData]([ShortName],[Title],[FirstName],[MiddleName],[LastName],[Occupation],[DOB],[Gender],[Country],[State],[Address],[ZipCode],[City],[Memo],[CategoryId],[SubCategoryId],[FavouritesID],[PhotoPath],[vCardPath]) VALUES(aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo,pp,qq,rr,ss)"

  con = New OleDbConnection(constr)
  com = New OleDbCommand(cmdstr, con)
  con.Open()
 com.Parameters.AddWithValue("aa", xx)
 com.Parameters.AddWithValue("bb", cmbTitle.Text)
 com.Parameters.AddWithValue.....
 com.Parameters.AddWithValue....
 .....................
......
 com.ExecuteNonQuery()-------"Data type mismatch in criteria expression"  Here occurs Error

你也可以帮我解决这个问题,

2 个答案:

答案 0 :(得分:5)

对于OP,您是否可以在OleDbException发生时发布cmdstr值的示例?我怀疑mqbt是对的,可能你的DOB字段无法解析你的DateTime给它的任何格式。

作为一个相关问题,使用OleDbCommand.Parameters.AddWithValue以这种方式更改SQL字符串中的参数是一个好习惯吗?

我总是在VBA Access中构建SQL字符串,只需将字符串与参数连接起来然后用Docmd.RunSql()执行它,这似乎很糟糕,带有数十个参数的SQL字符串。但是很容易看到参数和类型。我做错了吗?

答案 1 :(得分:0)

详细说明您的不匹配错误,有助于解决它引发问题的位置,对于哪种数据类型。否则,您可以在错误抛出消息框

上详细检查错误