存储过程Access中的错误

时间:2011-03-02 16:02:28

标签: c# ms-access

我创建了一个查询: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。

任何想法或帮助将不胜感激。

非常感谢。

4 个答案:

答案 0 :(得分:2)

我担心只有在Access中运行才能使用替换,正如Vincent所提到的,它是VBA功能,而不是Jet / ACE功能。还讨论了:Exception when trying to execute "REPLACE" against MS Access。我已经回答了我认为你的第一个问题update table access,并提出了可能的解决方案。

答案 1 :(得分:1)

尝试使用

更改commandtext
cmd1.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()。