Sangría, registro de datos
-
- Mensajes: 35
- Registrado: Jue Ene 28, 2016 9:58 pm
Sangría, registro de datos
Muy buenos días, tardes para la comunidad Europea, como siempre muchas gracias por compartir sus conocimientos agradezco me pueden ilustrar con respecto a el almacenamiento de datos en una BD, resulta que al ejecutar una Query para la inserción de datos a una tabla, esta query al ejecutarse, le coloca una sangría o un espacio a los registros ingresados, en la base de datos (tablas )he buscado por internet pero No logro dar como eliminar esta sangría, ¿ como se elimina la sangría que aplica vba en access?
Re: Sangría, registro de datos
Hola!
Ante todo decirte que las consultas de Access no se inventan nada: si te colocan espacios (porque imagino que de lo que se trata son espacios iniciales y no sangrías) es porque los datos originales los tienen, los veas o no.
Busca información sobre la función LTrim(). Puedes echar un ojo aquí: https://is.gd/aQBE8l
Si, como supongo, es tema de espacios, aplica la función LTrim() a tu consulta y ya debería solucionarse.
Saludos.
Ante todo decirte que las consultas de Access no se inventan nada: si te colocan espacios (porque imagino que de lo que se trata son espacios iniciales y no sangrías) es porque los datos originales los tienen, los veas o no.
Busca información sobre la función LTrim(). Puedes echar un ojo aquí: https://is.gd/aQBE8l
Si, como supongo, es tema de espacios, aplica la función LTrim() a tu consulta y ya debería solucionarse.
Saludos.
-
- Mensajes: 35
- Registrado: Jue Ene 28, 2016 9:58 pm
Re: Sangría, registro de datos
Hola Neckkito muchas gracias por tu respuesta, primero.. te doy las gracias por que yo aprendí a programar con tu de VBA, fenomenal, ya lei la estructura de la función LTrim, pero no se como acomodar la en mi código, es algo muy simple lo que yo tengo, te referencio e código igual no quita el espacio en la base de datos al aplicar la función.
Private Sub btnCrear_Click()
DoCmd.SetWarnings False
Dim qry As String
qry = LTrim(" INSERT INTO tbl_cl(Cliente) VALUES (' " & Me.txtCli.Value & " ' ) ")
If IsNull(Me.txtCli.Value) Then
MsgBox "Debes Ingresar Un Cliente Valido", vbCritical, "IDISOFT"
Else
DoCmd.RunSQL qry
Me.txtCli.Value = Null
MsgBox " Registro Satisfactorio", vbInformation, "IDISOFT "
End If
End Sub
Private Sub btnCrear_Click()
DoCmd.SetWarnings False
Dim qry As String
qry = LTrim(" INSERT INTO tbl_cl(Cliente) VALUES (' " & Me.txtCli.Value & " ' ) ")
If IsNull(Me.txtCli.Value) Then
MsgBox "Debes Ingresar Un Cliente Valido", vbCritical, "IDISOFT"
Else
DoCmd.RunSQL qry
Me.txtCli.Value = Null
MsgBox " Registro Satisfactorio", vbInformation, "IDISOFT "
End If
End Sub
- Adjuntos
-
- fotico.png (9.07 KiB) Visto 547 veces
Re: Sangría, registro de datos
Hola!
Visto tu código, permíteme un par de comentarios:
1.- El espacio se introduce porque tú le dices que se introduzca. Eso lo haces porque, después de la comilla simple de apertura y antes de la comilla simple de cierre, dejas un espacio. Es decir, y situadas las ubicaciones en rojo: qry = " INSERT INTO tbl_cl(Cliente) VALUES (' " & Me.txtCli.Value & " ' ) "). También dejas un espacio antes del INSERT. Esto último no tiene mayor importancia, pero duele a los ojos.
2.- La solución sería tan simple como construir tu query así:
3.- Desactivas los warnings y después no los vuelves a activar. Eso hace que se desactiven los warnings PARA TODA LA APLICACIÓN, no solo para el código de ese evento. Es IMPORTANTÍSIMO volver a activar los Warnings si los desactivas.
4.- Siguiendo con lo anterior, si hubiera algún error en tu código antes de la ejecución de la SQL no te enterarías porque Access no te avisaría del error, y no te avisa porque tú has desactivado los warnings. Si el código fuera más complicado te volverías loco intentando averiguar por qué no funciona. Moraleja: desactiva los warnings justo antes de la instrucción que te provoca el aviso y no al principio del código. Es decir, elimina el docmd.set warnings de donde lo tienes (primera línea) y ponlo así:
Conclusión: los espacios SÍ SON IMPORTANTES en VBA.
Saludos.
Visto tu código, permíteme un par de comentarios:
1.- El espacio se introduce porque tú le dices que se introduzca. Eso lo haces porque, después de la comilla simple de apertura y antes de la comilla simple de cierre, dejas un espacio. Es decir, y situadas las ubicaciones en rojo: qry = " INSERT INTO tbl_cl(Cliente) VALUES (' " & Me.txtCli.Value & " ' ) "). También dejas un espacio antes del INSERT. Esto último no tiene mayor importancia, pero duele a los ojos.
2.- La solución sería tan simple como construir tu query así:
Código: Seleccionar todo
qry = "INSERT INTO tbl_cl(Cliente) VALUES ('" & Me.txtCli.Value & "')")
3.- Desactivas los warnings y después no los vuelves a activar. Eso hace que se desactiven los warnings PARA TODA LA APLICACIÓN, no solo para el código de ese evento. Es IMPORTANTÍSIMO volver a activar los Warnings si los desactivas.
4.- Siguiendo con lo anterior, si hubiera algún error en tu código antes de la ejecución de la SQL no te enterarías porque Access no te avisaría del error, y no te avisa porque tú has desactivado los warnings. Si el código fuera más complicado te volverías loco intentando averiguar por qué no funciona. Moraleja: desactiva los warnings justo antes de la instrucción que te provoca el aviso y no al principio del código. Es decir, elimina el docmd.set warnings de donde lo tienes (primera línea) y ponlo así:
Código: Seleccionar todo
docmd.setwarnings false
DoCmd.RunSQL qry
docmd.setwarnings true
Conclusión: los espacios SÍ SON IMPORTANTES en VBA.
Saludos.
-
- Mensajes: 35
- Registrado: Jue Ene 28, 2016 9:58 pm
Re: Sangría, registro de datos
Muchas gracias, comentarios aceptados y ya quedo solucionado, te agradezco enorme mente todos tus conocimientos, muchas gracias.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados