Visual Basic - Cadenas con el caracter '

Life is soft - evento anual de software empresarial
 
Vista:

Cadenas con el caracter '

Publicado por David Hernández Jiménez (11 intervenciones) el 20/10/2006 11:09:24
HOLA PROGRAMADORES:

Tengo el siguiente problema:
Esteoy desarrollando una aplicación en Visual.Net 2005, y en la siguiente sentencia :

Dim oComand As New OleDbCommand("SELECT proveedores.nombre_empresa, monturas.marca, monturas.sexo_montura, monturas.material, Sum(ventas.unidades) AS SumaDeunidades " & _
"FROM proveedores INNER JOIN (monturas INNER JOIN ventas ON monturas.codigo = ventas.codigo) ON proveedores.cif = monturas.proveedor " & _
"WHERE proveedores.p_monturas = 'S' AND proveedores.nombre_empresa = '" & Me.cboxProveedor.Text & "' AND monturas.sexo_montura = '" & Me.cboxSexo.Text & "' AND monturas.marca = '" & Me.cboxMarca.Text & "' AND monturas.material = '" & Me.cboxMaterial.Text & "' AND ((ventas.fecha) Between #" & Me.dtpInicial.Value.Month & "/" & Me.dtpInicial.Value.Day & "/" & Me.dtpInicial.Value.Year & "# And #" & Me.dtpFinal.Value.Month & "/" & Me.dtpFinal.Value.Day & "/" & Me.dtpFinal.Value.Year & "#)" & _
"GROUP BY proveedores.nombre_empresa, monturas.marca, monturas.sexo_montura, monturas.material " & _
"ORDER BY proveedores.nombre_empresa, monturas.marca, monturas.sexo_montura, monturas.material, Sum(ventas.unidades) DESC", oConexion.Conexion)
Agrupar(oComand)

Tengo el siguiente problema:
Cuando le filtro que el nombre de la empresa: proveedores.nombre_empresa = me.cboxProveedor,
si la cadena del nombre no tiene el carácter ' no hay prolema, pero si la empresa se llama por ejemplo Alba's Optic, me falla, porque como está concatenado ' " & me.cboxproveedor.text & " ', cuando encuentra el carácter ' se corta la cadena y no me la coge entera y solo coge Alba' el resto del nombre se pierde.
Espero que me haya explicado bien y alguien pueda ayudarme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cadenas con el caracter '

Publicado por Krator (71 intervenciones) el 20/10/2006 14:00:55
Debes revisar esa casilla, y si tiene un apostrofe ' , debes añadirle otro, quedando Alba''s Optic (es decir, dos apostrofes juntos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadenas con el caracter '

Publicado por Germany (53 intervenciones) el 20/10/2006 20:16:09
A mi me suecede lo mismo que al amigo con diferencia que estoy desarrollando mi aplicacion con VB6 y sale error 80040e14 error de sintaxis (falta operador) en la expresion de consulta ! no hay una solucion a esto o hay que limitar al usuario a que ponga ' ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadenas con el caracter '

Publicado por David Hernández Jiménez (11 intervenciones) el 20/10/2006 20:30:24
Hola germany, yo ya he encontrado una solución, pero un poco fea, yo hago el filtro por el nombre de proveedor, la alternativa ha sido usar lu Cif (su numero de identificación), en tonces he implementado una función a la que le entra el nombre del proveedor y me devuelve su cif, pero buscando en vez de en la base de datos busco en el data set donde tengo los datos, entonces no da error en la comilla simple, y ahora en la sentencia pongo where proveedores.cif = ' " & sCif & " ' y ahora si me tira u no me lanza la excepción.

Private Function ObtenerCIF(ByVal sNombre As String) As String
' Declaramos e instanciamos un DATA SET.
Dim oDSProv As New DataSet
' Declaramos e instanciamos un DATA ADAPTER con la sentencia y la conexion.
Dim oDAProv As New OleDbDataAdapter("SELECT nombre_empresa, cif FROM proveedores", oConexion.Conexion)
' Con el metodo FILL como puente de enlace entre el DATA ADAPTER y el DATA SET, para llenar este ultimo.
oDAProv.Fill(oDSProv, "proveedores")
' Recorremos el DATA SET y cuando coincida el nombre del proveedor devuelve el CIF correspondiente.
' Declaramos una variable indice.
Dim i As Integer
' Aqui recorremos todas los elementos de la tabla de 0 a -1.
For i = 0 To oDSProv.Tables(0).Rows.Count - 1
If oDSProv.Tables(0).Rows(i).Item(0) = sNombre Then
' Devolvemos el CIF correspondiente que esta en la columna 1. (Hay dos Nombre_Empresa y Cif (0 y 1) ). Por eso item(1).
Return oDSProv.Tables(0).Rows(i).Item(1)
' Nos salimos de la funcion.
Exit Function
End If
Next
MessageBox.Show("MENSAJE", "No se ha encontrado CIF para esa EMPRESA", MessageBoxButtons.OK, MessageBoxIcon.Hand)
Return Nothing
End Function

Y la sentencia ahora es asi:
"WHERE proveedores.p_monturas = 'S' AND proveedores.cif = '" & sCIF & "'...........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadenas con el caracter '

Publicado por Germany (53 intervenciones) el 20/10/2006 20:42:37
Huy! si que fea ;) :P

Averiguando encontre esto! pero no me dio resultado a ver si a ti si!
______________________________________________________________________
Antes de hacer un UPDATE o INSERT, tenés que reemplazar el apóstrofe (') por dos de ellos seguidos ('' que no es ")

Código:

SQL = "UPDATE tabla SET Campo = '" & Replace(Request.Form("algo"), "'", "''") & "' WHERE ID = " & Request.Form("ID")
______________________________________________________________________

Me dices que tal ! tal vez no lo estoy haciendo bien :'(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadenas con el caracter '

Publicado por Germany (53 intervenciones) el 20/10/2006 20:46:46
No se distigue muy bien aqui las comillas simples de las dobles! a ver es ' ' No "

'" & Replace(Request.Form("algo"), " ' ", " ' ' ") & "' --> sin los espacios es para q visualizes mejor!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadenas con el caracter '

Publicado por Krator (71 intervenciones) el 20/10/2006 22:32:16
No sé para que escribo yo aquí entonces...si dí esa misma respuesta antes que tu...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadenas con el caracter '

Publicado por necro-air (77 intervenciones) el 21/10/2006 16:45:45
jajaj, asi todos sabemos de todo, jjajaja
Para algunos la mejor idea en informatica fue el "COPY AND PASTE"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadenas con el caracter '

Publicado por David_As (11 intervenciones) el 25/10/2006 13:14:46
Hola Krator que sepas que te agradezco mucho tu ayuda que era la mas coherente y mas optima, que erea poner '' las dos comillas simples, pero es que no puedo modificar las bases de datos de los clientes, y la que he tenido que liar a sido como quieras, pero bueno ya me funciona un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar