Problemas con el método Find

clauq
03 de Diciembre del 2003
Si alguien puede ayudarme.
No puedo utilizar el método Find de ADO con el operador AND, es como si no me lo reconociera.
Entonces opté por usar una sentencia de SQL como la siguiente:
Set BD = New ADODB.Connection
BD.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
"Persist Security Info=False;" & _
"Data Source= Camino"
BD.Open
sql = "SELECT CodTarea, CodPers FROM TabrPersTrabTareaProy WHERE CodTarea=" & TareaAux & _
" AND CodPers=" & DCPers.BoundText '&
" ORDER BY FechaTarea
Set reg = BD.Execute(sql)
Y me aparece el Error 2147217900(80040e14) en tiempo de ejecución.
Error de sintaxis (falta operador) en la expresión de consulta ‘CodTarea= Valor AND CodPers =ValorPers’.
Parece que el problema es con el operador. Probé con OR y ocurre lo mismo, puse “Y” , ocurrió lo mismo.
Por favor si me pueden ayudar, con el método Filter no tengo problemas. Puedo usar tranquilamente el AND.

Baltasar
03 de Diciembre del 2003
Pues si los campos CodTarea y CodPers son numéricos no veo ningún fallo en la consulta. Si alguno de ellos es string has de ponerlos entre comillas simples.
Haz una cosa, cuando te dé el error, comprueba el contenido de la variable SQL, y tal vez te ayude a descubrir el error.

Saludos

clauq
03 de Diciembre del 2003
Algo que me faltó aclarar es que no puedo poner entre comillas simples los campos para el código de tarea y de persona porque éstos los tomo por variable. Es decir no es que yo sepa que directamente es 'José Luis', sino que el campo a buscar es ingresado por el usuario y al ser de tipo String no se cómo ponerlo para que me lo tome de este tipo tanto en la sentencia SQL como en el método Filter. Lo extraño es que cuando quiero buscar un sólo campo, sin usar AND, no ocurre ningún error.
¿A qué se refiere con comprobar el contenido de la variable de SQL?
Muchas gracias

clauq
03 de Diciembre del 2003
Los campos CodTarea y CodPers son de tipo String. No entiendo dónde tengo que poner las comillas simples.
Por favor me lo puedes explicar con el ejemplo.
Tuve problemas cuando usé campos claves con String. Pero tenía que hacerlo así porque el DataGrid me mostraba los campos de varias tablas y para que estos nombres fueran descriptivos tuve que hacer que los códigos sean de tipo String.
El problema es que aparentemente Visual no permite claves de tipo String que comiencen con una letra ý que tengan espacios en blanco. Así que opté por agregar un número 1 delante y sustituir cada especio en blanco por un subrayado, para cada campo clave que se refiere a un String. No quedó muy lindo pero es lo que se me ocurrió para mostrarle al usuario por lo menos algo amigable.
Muchas gracias
Claudia

puni
03 de Diciembre del 2003
lo unico que veo de raro es que cuando dice
dcpers.boundtext luego tiene una simple comilla
proba con esos, yo tengo millones de consultas hechas asi y me funcionan correctamente

Baltasar
03 de Diciembre del 2003
sql = "SELECT CodTarea, CodPers FROM TabrPersTrabTareaProy WHERE CodTarea='" & TareaAux & _
"' AND CodPers='" & DCPers.BoundText &
"' ORDER BY FechaTarea

Prueba con este código (he puesto las comillas simples, aunque aquí se vean muy poco)