C# 条件表达式中的数据类型不匹配,替换为且无需替换
编辑:我通过切换到ACE而不是ODBC解决了我的问题。这可能是ODBC的一些错误?在任何情况下,如果您选择使用ACE,这似乎是一个解决方案。 把这个放在这里是因为stackoverflow不允许我在提问后这么快回答自己的问题。 我的适配器正在抛出“条件表达式中的数据类型不匹配”。尝试用查询填充数据表时出现异常:C# 条件表达式中的数据类型不匹配,替换为且无需替换,c#,ms-access,C#,Ms Access,编辑:我通过切换到ACE而不是ODBC解决了我的问题。这可能是ODBC的一些错误?在任何情况下,如果您选择使用ACE,这似乎是一个解决方案。 把这个放在这里是因为stackoverflow不允许我在提问后这么快回答自己的问题。 我的适配器正在抛出“条件表达式中的数据类型不匹配”。尝试用查询填充数据表时出现异常: "SELECT updateTime AS [Time], updateType AS [Type], updateOperator AS [Operator], REPLACE(upd
"SELECT updateTime AS [Time], updateType AS [Type], updateOperator AS [Operator], REPLACE(updateText, '\\n', '\\r\\n') AS [Update] FROM [updt] WHERE updID = '" + updID + "'"
REPLACE函数用于使换行符使用Windows样式,以便它们在DataGridView和其他winforms控件中正确显示
数据库是Access 2010
我通过ODBC连接(不是Jet)
updID的数据类型是正确的,它是“文本”
尝试获取“updateText”没有要替换的\n字符的行时出现问题。对于任何具有“\n”的行,它都将正常工作
然而,当程序从异常中断时,我可以打开命令对象,获取命令文本,并在Access中运行它,而不会出现任何问题
谢谢在iif()函数中包含该字段。基本上,如果它不为null,则执行替换。否则将其保持为空 您可能需要一个IIF函数,因为Replace函数不能处理Null
"SELECT updateTime AS [Time], updateType AS [Type], updateOperator AS [Operator], " & _
"REPLACE(IsNull(updateText, "", updateText), '\\n', '\\r\\n') AS [Update] " & _
"FROM [updt] WHERE updID = '" + updID + "'"
为什么不先替换文本,然后将其包含在查询中
string strValue;
if(updateText.Contains("\r"))
strValue=updateText.Replace("\n","\r\n");
else
strValue==updateText;
"SELECT updateTime AS [Time], updateType AS [Type], updateOperator AS [Operator],"+
strValue "+ AS [Update] FROM [updt] WHERE updID = '" + updID + "'"
希望有帮助。我通过切换到ACE而不是ODBC解决了我的问题。这可能是ODBC的一些错误?在任何情况下,这似乎是您可以选择使用ACE的解决方案。应该注意的是,问题不是列为空,而是没有\n可替换的列。仍然有文本,但它是一行。我还得到了一个“查询表达式中的函数使用了错误数量的参数”异常。检查MSDN表明ISNULL应该有2个参数,但即使如此,我仍然会得到相同的异常。可能是因为我使用的是ODBC连接吗?updateText是表中的一列。:)这里的目标是在将unix换行符加载到DataTable中时将其替换为windows换行符,以便DataGridView和其他控件可以正确显示它。