Неопределенная функция «Заменить» в выражении - PullRequest
3 голосов
/ 14 июня 2011

У меня есть приложение VB.Net.Я связываю это с базой данных MS Access.Теперь я должен выполнить запрос.Мой запрос: Update table1 set field1=replace(field1,'|','"')

Этот запрос, кажется, работает нормально из анализатора запросов базы данных Access, но когда я делаю то же самое с кодом VB.Net, он выдает ошибку с сообщением «Неопределенная функция» Заменить'в выражении "

Я использую соединение и команду OLEDB.Я использую функцию «executetenonquery».

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

4 голосов
/ 14 июня 2011

К сожалению, когда вы подключаетесь к базе данных Access из приложения VB.Net, вы вообще не используете механизм запросов Access. Вы используете Jet. Некоторые функции, доступные вам в Access (например, Заменить ), недоступны в Jet.

Классическим решением является использование комбинации Iif , Instr и т. Д. (Эти доступны ) Да, это не так хорошо, как иметь Заменить для игры, но вам придется научиться обходиться без.

3 голосов
/ 24 июля 2014

В настоящее время принятый ответ на этот вопрос несколько устарел. Использование

Provider=Microsoft.ACE.OLEDB.12.0

следующий код C # работает просто отлично:

cmd.CommandText =
    "UPDATE table1 SET field1 = Replace(field1, '|', '\"')";
cmd.ExecuteNonQuery();

Другими словами, функция Replace() могла вызывать проблемы со старым драйвером OLEDB "Jet" (и, возможно, более ранними версиями драйвера "ACE"), но с версии для Access 2010 это больше не проблема .

...