Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 条件表达式中的数据类型不匹配,替换为且无需替换_C#_Ms Access - Fatal编程技术网

C# 条件表达式中的数据类型不匹配,替换为且无需替换

C# 条件表达式中的数据类型不匹配,替换为且无需替换,c#,ms-access,C#,Ms Access,编辑:我通过切换到ACE而不是ODBC解决了我的问题。这可能是ODBC的一些错误?在任何情况下,如果您选择使用ACE,这似乎是一个解决方案。 把这个放在这里是因为stackoverflow不允许我在提问后这么快回答自己的问题。 我的适配器正在抛出“条件表达式中的数据类型不匹配”。尝试用查询填充数据表时出现异常: "SELECT updateTime AS [Time], updateType AS [Type], updateOperator AS [Operator], REPLACE(upd

编辑:我通过切换到ACE而不是ODBC解决了我的问题。这可能是ODBC的一些错误?在任何情况下,如果您选择使用ACE,这似乎是一个解决方案。 把这个放在这里是因为stackoverflow不允许我在提问后这么快回答自己的问题。

我的适配器正在抛出“条件表达式中的数据类型不匹配”。尝试用查询填充数据表时出现异常:

"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和其他控件可以正确显示它。