Programación General > Visual Basic 6.0 e inferiores

 Re: Para quienes dominan SQL

<< < (2/2)

roy:
hola pues yo no le veo error a tu consulta, pero mis consultas las hago de esta manera, y realmente no cambian mucho de lo que tu muestras

if rstdatos.state then rstdatos.close
rstdatos.open source:="select * from claves where clave>10 and descripcion like '" & txtdescrip.text & "%' order by clave",activeconnection:=cnnpredial

solo mi pregunta y tu conexion?

Brroz:
Donde dice:

rsbusca.Source = "select p.idproducto, p.nombreproducto, p.idcategoría, p.cantidadporunidad, p.preciounidad, c.NombreCategoría from productos p, categorías c where p.idcategoría=c.idcategoría and nombreproducto like '" & Text1.Text & "%' order by nombreproducto"

Debería decir:

rsbusca.Source = "select p.idproducto, p.nombreproducto, p.idcategoría, p.cantidadporunidad, p.preciounidad, c.NombreCategoría from productos p, categorías c where p.idcategoría=c.idcategoría and nombreproducto like '" & Replace(Text1.Text, Chr(29), Chr(180)) & "%' order by nombreproducto"

Por otro lado si metes este código en el evento Change del TextBox, cada vez que el usuario pulse una tecla y se modifique el contenido del textbox, se desencadenará el evento y la consiguiente consulta, cosa que no creo que te interese.
Puedes programar el evento Validate (ojo con la propiedad CauseValidation del resto de los controles) o puedes utilizar el evento LostFocus o puedes añadir un CommandButton o algo así para ejecutar la consulta.

A ver si esto te sirve. Suerte.

giomar:
La idea del programa es que segun se vayan ingresando datos al text en la lista se vean todos los elementos que comienzan con esos dichos, lo que comunmente se le llama Busqueda Incremental de Datos, por eso es que lo programo asi.
Ahora probe el codigo y en realidad ya no se produce el error pero existen dos detalles:
1. Que embes de Chr(29) es Chr(39) cuando lo hago con Chr(29) no pasa nada en cambio con Chr(39) resulta.
2. Que pasa si en mi base de datos necesite hacer una busqueda incremental por proveedores y un proveedor tenga el nombre de "Empresa Ronal's" haciendo el programa como me han ayudado solo podria escribir hasta "Empresa Ronal" pues al colocar ese vendito caracter (') saldria el mensaje de error "el proveedor no existe" mi pregunta es esta
Estaria bien eso?
y que tal si en la tabla eisten los siguientes registros:
Ab'aaaaaa
Ab'bbbbbb
Ab'cccccccc
Ab'dddddd
Osea a lo que voy es de que el programa puede hacer una correcta busqueda incremental de datos pero no puede ser capaz de listarme un solo producto o lo que sea al colocar ese vendito caracter(').
Un saludo...
Y Gracias por su tiempo..
<<_GIOMAR_>>

J.M.Movilla:
A ver, Giomar:  Hace meses surgió este mismo tema y quedó resuelto...

Cuestiona si existe el carácter ' en el campo que va a formar parte de la consulta, por ejemplo:

n = InStr( Campo, "'")  '  Comilla simple entre dos comillas dobles

if n > "0" Then
   Campo = Left( Campo, n) & "'"  & Mid( Campo, n+1)
end if

Con ello hemos sustituído una comilla simple por dos comillas simples seguidas...  que surte el mismo efecto que cuando se usan dos comillas dobles seguidas para insertar comillas en una variable entrecomillada...  Jo... qué difícil es de explicar una cosa tan "simple"...

Verás cómo te funciona...  Lo cual me producirá una gran satisfacción...  Un saludo.

giomar:
Con el codigo del amigo J.M.Movilla obtuve el resultado que desea.
Lo adicione en mi aplicacion y resulta a la perfeccion.
Con esto doy por concluido el caso de este vendito caracter(') que ya me tenia loco..
Claro sin antes agradecer a todos los que pusieron de su parte para ayudarme a resolverlo.
Un saludo compañeros...
Hasta la proxima...
<<_GIOMAR_>>:beer::jumpie:

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa