Programación General > Visual Basic 6.0 e inferiores
Re: Para quienes dominan SQL
giomar:
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...
JackRandall:
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:
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
Brroz:
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:
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..
Navegación
[#] Página Siguiente
Ir a la versión completa