Domingo 22 de Diciembre de 2024, 13:15
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Re: Para quienes dominan SQL
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Re: Para quienes dominan SQL (Leído 2776 veces)
giomar
Miembro MUY activo
Mensajes: 270
Re: Para quienes dominan SQL
«
en:
Jueves 7 de Agosto de 2003, 19:15 »
0
He notado un problema al trabajar con SQL, por ejemplo he echo una aplicacion donde realizo una busqueda incremental de datos a una tabla algo sencillo si pero la dificultad que encuentro es al colocar en mi TextBox un apostrofe ( ' ).
Lo que veo que pasa es de que como VB concatena sus variables asi '" & objeto & "' de alguna manera lo confunde, bueno no se con exactitud.
Si alguien sabe como puedo solucionar esto por favor haganmelo conocer.
Ademas voy a dejar la aplicacion con el problema.
Saudos y de antemano GRACIAS.
Giomar...
Tweet
Giomar B.
Desarrollador Web Profesional
JackRandall
Nuevo Miembro
Mensajes: 15
Re: Para quienes dominan SQL
«
Respuesta #1 en:
Domingo 10 de Agosto de 2003, 00:25 »
0
lomejor seria ke el apostrofe lo metas directamente en la instruccion y contatenes tu mismo ejemplo:
sql = "INSERT INTO tabla (nombre, telefono) VALUES('" & text1.text & "', '" & text2.text & "')"
y listo
giomar
Miembro MUY activo
Mensajes: 270
Re: Para quienes dominan SQL
«
Respuesta #2 en:
Martes 19 de Agosto de 2003, 20:29 »
0
Disculpame pero no llego a entenderte lo que me quieres decir.
En el comentario que me das no veo una solucion para lo he indicado.
Si tienes otra idea o puede aclararme mejor la idea que ya me escribistes te lo agradeceria mucho.
Un saludo y nuevamente gracias por tu tiempo
Giomar B.
Desarrollador Web Profesional
Brroz
Miembro de PLATA
Mensajes: 1058
Re: Para quienes dominan SQL
«
Respuesta #3 en:
Miércoles 20 de Agosto de 2003, 09:09 »
0
Cuando concatenes o montes la sentencia SQL , puedes hacer lo siguiente:
Replace(Text1.Text, Chr(29), Chr(180))
Que es ni más ni menos que sustituir el carácter ' (Chr(29)) por ´ (Chr(180)). Luego, a la hora de presentar el campo si te importa el que el carácter esté cambiado, haz el proceso contrario:
Text1.Text = Replace(Recordset1.Fields(0).Valur, Chr(180), Chr(29))
Otra cosa que podrías hacer es en el evento 'KeyPress' del TextBox, cambiar la pulsación de ' por ´ o otro carácter que tu vieras:
If KeyAscii = 29 Then KeyAscii = 180
Espero que esto te sirva de ayuda.
Suerte.
giomar
Miembro MUY activo
Mensajes: 270
Re: Para quienes dominan SQL
«
Respuesta #4 en:
Miércoles 20 de Agosto de 2003, 21:29 »
0
Agrege a mi proyecto el codigo que me indicas pero no obtuvo frutos.
Aqui te dejo el codigo para que lo puedas revisar y poder detectar el error.
Dim rsbusca As New ADODB.Recordset
Dim sql As String
Private Sub Form_Load()
Set rsbusca = New ADODB.Recordset
rsbusca.CursorLocation = adUseClient
sql = "select * from productos order by nombreproducto "
rsbusca.Open sql, cn, adOpenDynamic, adLockReadOnly
lista.ListField = "nombreproducto"
Set lista.RowSource = rsbusca
lista.Refresh
Text1.Text = Empty
End Sub
Private Sub Text1_Change()
If Len(Trim(Text1.Text)) > 0 Then
rsbusca.Close
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"
rsbusca.Open
If rsbusca.RecordCount = 0 Then
MsgBox "El Producto no Existe", vbCritical, "AVISO"
Text1.SetFocus
Set lista.RowSource = Nothing
Else
Set lista.RowSource = rsbusca
lista.Refresh
End If
Else
rsbusca.Close
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 order by nombreproducto"
rsbusca.Open
Set lista.RowSource = rsbusca
lista.Refresh
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Text1.Text = Replace(Text1.Text, Chr(180), Chr(29))
'Ha tambien probe con el IF y salia el mismo mensaje de error.
End Sub
Un saludo..
Giomar B.
Desarrollador Web Profesional
roy
Miembro activo
Mensajes: 46
Re: Para quienes dominan SQL
«
Respuesta #5 en:
Miércoles 20 de Agosto de 2003, 22:19 »
0
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
Miembro de PLATA
Mensajes: 1058
Re: Para quienes dominan SQL
«
Respuesta #6 en:
Jueves 21 de Agosto de 2003, 08:24 »
0
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
Miembro MUY activo
Mensajes: 270
Re: Para quienes dominan SQL
«
Respuesta #7 en:
Jueves 21 de Agosto de 2003, 19:40 »
0
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_>>
Giomar B.
Desarrollador Web Profesional
J.M.Movilla
Miembro MUY activo
Mensajes: 427
Re: Para quienes dominan SQL
«
Respuesta #8 en:
Jueves 21 de Agosto de 2003, 20:36 »
0
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
Miembro MUY activo
Mensajes: 270
Para quienes dominan SQL
«
Respuesta #9 en:
Viernes 22 de Agosto de 2003, 17:32 »
0
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_>>
Giomar B.
Desarrollador Web Profesional
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Re: Para quienes dominan SQL