Cláusula LIKE con OLEDB en Bases de datos Access

25/08/2007 - 21:26 por Rafael Villaran. RAVIPE | Informe spam
Estoy realizando una aplicación con VS2005 C# y base de datos Access 2000.
La cadena de conexión es la siguiente:

connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\Release\Imhotep.mdb"

Hasta ahora todas las operaciones con la base de datos iban perfectamente
hasta que he empezado a realizar consultas con la cláusula LIKE.
Sencillamente no me funcionan. Si las pruebo en Acces funcionan correctamente.
Alguien podría decirme que está pasnado.

Gracias anticipadas por vuestra ayuda.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
25/08/2007 - 22:07 | Informe spam
"Rafael Villaran. RAVIPE"
wrote in message news:
Estoy realizando una aplicación con VS2005 C# y base de datos Access 2000.
La cadena de conexión es la siguiente:

connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\Release\Imhotep.mdb"

Hasta ahora todas las operaciones con la base de datos iban perfectamente
hasta que he empezado a realizar consultas con la cláusula LIKE.
Sencillamente no me funcionan. Si las pruebo en Acces funcionan
correctamente.
Alguien podría decirme que está pasnado.



En principio, los LIKE funcionan por oledb sin ningún problema. Puede ser
que al construir la sentencia desde C# estés concatenando fuera de lugar las
comillas (si usas una sentencia sin parametrizar), o algo por el estilo.
¿Puedes poner el fragmento de código que construye la consulta, a ver si le
vemos cuál es el problema?
Respuesta Responder a este mensaje
#2 Rafael Villaran. RAVIPE
25/08/2007 - 22:22 | Informe spam
Albero Gracias por interés.

ahí te envío un ejemplo de sentencia:

"SELECT * FROM tbIMHOTEP WHERE (TITULO LIKE '*prueb*') "

también he probado cambiando el * por % pero el resultado es el mismo.
Ya te digo que si lo hago en Access directamente funciona correctamente.

De nuevo Gracias.
Respuesta Responder a este mensaje
#3 Alberto Poblacion
25/08/2007 - 23:27 | Informe spam
"Rafael Villaran. RAVIPE"
wrote in message news:
ahí te envío un ejemplo de sentencia:

"SELECT * FROM tbIMHOTEP WHERE (TITULO LIKE '*prueb*') "

también he probado cambiando el * por % pero el resultado es el mismo.
Ya te digo que si lo hago en Access directamente funciona correctamente.




Acabo de probarlo, y funciona correctamente poniendo % (pero no funciona con
el *). Te copio a continuación el código que he usado para hacer la prueba.
Está en VB en lugar de C# porque lo meti en un proyecto de prueba que ya
tenía abierto y no me di cuenta de que ese proyecto estaba en VB.

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim cn As OleDbConnection = Conexion()
Dim sentencia As String = "SELECT * FROM Customers WHERE (City LIKE
'%Ber%')"
Dim cmd As New OleDbCommand(sentencia, cn)
Dim rdr As OleDbDataReader = cmd.ExecuteReader()
While rdr.Read()
ListBox1.Items.Add(rdr("City"))
End While
rdr.Close()
cn.Close()
End Sub

Private Function Conexion() As OleDbConnection
Dim cn As OleDbConnection = New System.Data.OleDb.OleDbConnection()
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=..\Northwind.mdb;"
cn.Open()
Return cn
End Function

End Class
Respuesta Responder a este mensaje
#4 Rafael Villaran. RAVIPE
26/08/2007 - 08:16 | Informe spam
Alberto he probado el código que me envías y no me funciona. No sé que estaré
haciendo mal. Nunca he usado el DataReader y no conozco bien su
funcionamiento.
Concretamente lo que intento hacer es cargar una grilla con los datos que
cumplan la condición. Lo hago con DataTable.
Si me puedes orientar por esta línea.
Gracias de nuevo.
Respuesta Responder a este mensaje
#5 Rafael Villaran. RAVIPE
26/08/2007 - 08:26 | Informe spam
Perdón, Perdón.
Y como yo digo si es que no leemos, después nos quejamos de los usuarios.
He seguido haciendo el ejemplo con * en lugar del %.

Lo he probado en un código aislado (fuera de mi capa de datos) con el
DataSet y DataTable y ahora funciona, con %, claro.
No sé que está pasando. Revisaré la capa de datos y ya te cuento.

Un saludo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida