我的查询是
ExcelQuery = "Update [Sheet1$] "
+"set CITIZEN_ID = #" + value
+ " where CITIZEN_ID = " + value;
正如您所看到的,我基本上只是在CITIZEN_ID字段前加上“#”。 value是一个int / numeric值。因此,如果我在CITIZEN_ID列中有“256”,它将被转换为“#256”
当我执行此操作时,我得到一个OleDbException Syntax error in date in query expression
所以我用这样的单引号包围了部分查询,
ExcelQuery = "Update [Sheet1$] "
+"set CITIZEN_ID = '#" + value + "' "
+"where CITIZEN_ID = " + value;
这次我得到了另一个OleDbException,Data type mismatch in criteria expression.
我猜测由于某种原因,CITIZEN_ID字段除了普通数字之外不想采取任何其他内容。我有什么方法可以解决这个问题吗?
谢谢!
答案 0 :(得分:1)
您不能只更改数字格式,以便在CITIZEN_ID字段中的每个数字前显示“#”。
这并不能解决你所说的问题..但它避免了: - )
<强>更新强> StackOverflow问题(excel-cell-formatting)讨论了使用C#
的单元格格式答案 1 :(得分:1)
听起来您正在尝试使用SQL INSERT
将文本值放入DBMS(Access数据库引擎)视为DOUBLE FLOAT
的列中,从而导致类型不匹配错误。您可以更改注册表值以说服引擎将列视为文本,请参阅: