我创建了一个查询:SELECT Replace(column_name,a,b) AS expr1
FROM table1;
此查询的名称为: filepath 。
我在C#中编写了以下代码。当我编译代码时,它在PROCEDURE子句中语法错误。
OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection= ren_connection1;
cmd1.CommandType = CommandType.Text;
cmd1.CommandText = "Execute filepath";
OleDbParameter oldfilevalue = new OleDbParameter();
oldfilevalue.ParameterName = "a";
oldfilevalue.OleDbType = OleDbType.VarChar;
oldfilevalue.Direction = ParameterDirection.Input;
oldfilevalue.Value = oldname2;
OleDbParameter newfilevalue = new OleDbParameter();
newfilevalue.ParameterName = "b";
newfilevalue.OleDbType = OleDbType.VarChar;
newfilevalue.Direction = ParameterDirection.Input;
newfilevalue.Value = oldname1;
cmd1.Parameters.Add(oldfilevalue);
cmd1.Parameters.Add(newfilevalue);
i = cmd1.ExecuteNonQuery();
// oldefile值可以是这样的:D:/ myfile / pictures / cars / // newfile值可以是这样的:D:/ myfile / pictures / jeeps /
我想在一行中用另一个字符串替换一个字符串而不修改整行..我认为替换会起作用但它没有:(
访问版本是:2007。
任何想法或帮助将不胜感激。
非常感谢。
答案 0 :(得分:2)
我担心只有在Access中运行才能使用替换,正如Vincent所提到的,它是VBA功能,而不是Jet / ACE功能。还讨论了:Exception when trying to execute "REPLACE" against MS Access。我已经回答了我认为你的第一个问题update table access,并提出了可能的解决方案。
答案 1 :(得分:1)
尝试使用
更改commandtextcmd1.CommandText = "EXECUTE yourProcedureName";
编辑现在你的程序被正确调用你需要解决缺少的“替换”功能(顺便说一下,你试过Vincent Vancalbergh的建议,看看是否可以使用“替换”吗?会容易得多....)
我在评论中说的是,您可以选择表格的内容,在c#代码中执行替换,并且(如果需要)使用新值更新您的表格。
你的选择变为:
SELECT table1_id, column_name FROM table1;
并且您的代码更改为:
//you should change ExecuteNonQuery to ExecuteReader, since you want
// to read the results of your SELECT
OleDbDataReader rdr= cmd1.ExecuteReader();
//Iterate through the table
while(rdr.Read())
{
string currentValue=rdr["column_name"].ToString();
string newValue = currentValue.Replace(a, b);
//now do what you need with the row
// ...
}
答案 2 :(得分:1)
我找到了以下here:
在公司全面升级到XP之前 访问没有问题 数据库,所以我不确定是否这样 将是您的问题的解决方案。但 之后我遇到了类似你的问题 有些人从2000年升级到XP 访问数据库。未定义的功能 弹出“替换”错误。在 事实证明是结束了 安装的VBA版本。 6 与6.3相比。问题机器了 6.0已安装。开始访问帮助 - >关于MS Access - >系统信息 - > 应用 - > Microsoft Access 2000 - >摘要。 VBA版本6.00产生错误,VBA版本6.03 没问题。小心,尼克
现在的问题是,您使用的VBA版本是什么?
答案 3 :(得分:1)
解决方案是@ onedaywhen回答她:
Exception when trying to execute "REPLACE" against MS Access
它使用Mid(),Len()和InStr()代替Replace()。