x64 source para office microsoft data conexion cadena .net ms-access oledb jet

.net - source - Función no definida ''Reemplazar'' en la expresión



provider=microsoft.ace.oledb.12.0 office 2016 (2)

La respuesta actualmente aceptada a esta pregunta está algo desactualizada. Utilizando

Provider=Microsoft.ACE.OLEDB.12.0

el siguiente código C # funciona bien:

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

En otras palabras, la función Replace() puede haber causado problemas con el antiguo controlador OLEDB "Jet" (y tal vez versiones anteriores del controlador "ACE"), pero a partir de la versión de Access 2010 ya no es un problema.

Tengo una aplicación VB.Net. Lo conecto con una base de datos de MS Access. Ahora tengo que ejecutar una consulta. Mi consulta es: Update table1 set field1=replace(field1,''|'',''"'')

Esta consulta parece funcionar bien desde el analizador de consultas de la base de datos de Access, pero cuando hago lo mismo desde el código VB.Net me arroja un error que dice "Función no definida ''Reemplazar'' en expresión"

Estoy usando conexión y comando OLEDB. Estoy usando la función "executenonquery".

¿Alguien puede ayudarme?


Lamentablemente, cuando se conecta a una base de datos de Access desde su aplicación VB.Net, no está utilizando el motor de consulta de Access. Estás usando Jet. Algunas de las funciones disponibles para usted en Access (como Reemplazar ) no están disponibles en Jet.

La solución clásica es usar una combinación de Iif , Instr , etc. ( están disponibles). Sí, no es tan bueno como tener Replace para jugar, pero tendrás que aprender a prescindir.