Problema con VB6 contra Access2000 y LIKE
Estoy haciendo una aplicación en Visual Basic 6 que ataca a una BD en Access 2000.
Las conexiones a la Base de Datos las hago de la siguiente manera:
Dim bd As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSelect as String
StrSelect = ?Select * from cliente?
bd.Provider = "Microsoft.Jet.OLEDB.4.0"
bd.Open RutaBD
rs.Open strSelect, bd, adOpenForwardOnly, adLockOptimistic
If rs.BOF and rs.EOF Then
<sentencias>
Else
<sentencias>
End If
rs.Close
Set rs = Nothing
bd.Close
Set bd = Nothing
Pero tengo un problema con las Select que contienen comparaciones con el operador Like. Me explico:
Cliente
Código Nombre
1 Marc
2 Mark
Si hago Select * from cliente where cliente.nombre like ?Marc? Funciona.
Pero si hago Select * from cliente where cliente.nombre like ?M*? No funciona.
Ni tampoco Select * from cliente where cliente.nombre like ?Mar??.
Por otro lado si hago la consulta con el Asistente de Access, el resultado es correcto. Pero si copio la línea SQL que crea éste al VB sigue sin funcionar. ¿Por eso mi problema creo que esta solo en el uso de los comodines *?.
No es problema ortográfico ya que substituyo comillas por chr(34) y el * por chr(42) y compruebo la sentencia strSelect con un MsgBox antes de abrir el recordset y esta bien escrita.
¿Me puedes ayudar? Yo no le veo solución.
Las conexiones a la Base de Datos las hago de la siguiente manera:
Dim bd As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSelect as String
StrSelect = ?Select * from cliente?
bd.Provider = "Microsoft.Jet.OLEDB.4.0"
bd.Open RutaBD
rs.Open strSelect, bd, adOpenForwardOnly, adLockOptimistic
If rs.BOF and rs.EOF Then
<sentencias>
Else
<sentencias>
End If
rs.Close
Set rs = Nothing
bd.Close
Set bd = Nothing
Pero tengo un problema con las Select que contienen comparaciones con el operador Like. Me explico:
Cliente
Código Nombre
1 Marc
2 Mark
Si hago Select * from cliente where cliente.nombre like ?Marc? Funciona.
Pero si hago Select * from cliente where cliente.nombre like ?M*? No funciona.
Ni tampoco Select * from cliente where cliente.nombre like ?Mar??.
Por otro lado si hago la consulta con el Asistente de Access, el resultado es correcto. Pero si copio la línea SQL que crea éste al VB sigue sin funcionar. ¿Por eso mi problema creo que esta solo en el uso de los comodines *?.
No es problema ortográfico ya que substituyo comillas por chr(34) y el * por chr(42) y compruebo la sentencia strSelect con un MsgBox antes de abrir el recordset y esta bien escrita.
¿Me puedes ayudar? Yo no le veo solución.
Respuesta de aja72
1