Cargar guion en DNI DataGridView VB.net [SOLUCIONADO]

En el mundo de la programación y el desarrollo de aplicaciones con Visual Basic .NET (VB.Net), una tarea común es la manipulación y presentación de datos en controles tales como el DataGridView. Este componente es ampliamente utilizado cuando se requiere mostrar información en forma de tabla dentro de una aplicación de escritorio.

Una necesidad específica que pueden encontrarse desarrolladores de aplicaciones que manejan información de identificación es la inclusión de un guión en un número de Documento Nacional de Identidad (DNI) dentro de un DataGridView en VB.Net. Este requerimiento, aunque parece simple, tiene sus particularidades que es importante manejar con precisión para evitar errores y datos mal representados.

**Implementación de un DataGridView para DNI**

Supongamos que tienes una base de datos que ya contiene DNIs sin guión y necesitas que, al cargar los datos en el DataGridView, estos se muestren de manera correcta, con el guión en la posición correspondiente.

Para comenzar, debemos tener un DataGridView en nuestro formulario. A continuación, el primer paso es llenar dicho control con los datos procedentes de nuestra fuente, que puede ser una base de datos, un archivo o cualquier otro origen:

vb.net

La función `ObtenerDatosDNI` sería la encargada de conectarse a la fuente de datos y retornar, ya sea un DataTable o cualquier colección de objetos que contengan los DNIs.

**Formateo de DNI con guiones**

Una vez que tenemos los datos en el DataGridView, viene la cuestión de añadir el guión al DNI. Esto lo podemos hacer a través del evento `CellFormatting`, que nos permite modificar la representación visual de cada dato sin alterar el valor subyacente del dato en sí.

Añadiremos una función en el evento mencionado que verifique si la columna que se está formateando es la del DNI, y de ser así, agregue el guión correspondiente:

vb.net
Private Sub DataGridView1_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
If DataGridView1.Columns(e.ColumnIndex).Name = “ColumnaDNI” AndAlso Not IsDBNull(e.Value) Then
Dim dni As String = e.Value.ToString()
‘ Suponiendo que el DNI tenga 8 dígitos seguidos de la letra
If dni.Length = 9 Then
e.Value = dni.Insert(8, “-“)
End If
End If
End Sub

Es importante destacar que este código asume que el DNI consta de 8 dígitos seguidos de una letra, lo cual es meramente ejemplificativo y se deberá adaptar al formato de DNI que se esté utilizando. Además, se verifica con `IsDBNull(e.Value)` que el valor del DNI no sea nulo para evitar posibles errores.

**Caso práctico: Formateo de DNI durante la carga de datos**

Imaginemos que en lugar de agregar el guión en el evento `CellFormatting`, deseamos hacerlo en el momento de cargar los datos al DataGridView. Para este escenario, es necesario realizar la manipulación de los datos antes de asignarlos al DataSource del control.

Veamos cómo podríamos realizar esta tarea:

vb.net
Dim datos As DataTable = ObtenerDatosDNI()
For Each row As DataRow In datos.Rows
‘ Asumiendo que “dni” es el nombre de la columna con el DNI
Dim dni As String = row(“dni”).ToString()
If dni.Length = 9 Then
row(“dni”) = dni.Insert(8, “-“)
End If
Next
DataGridView1.DataSource = datos

Con este bucle, se está recorriendo cada una de las filas del DataTable y modificando la columna del DNI para incluir el guión. Una vez hecho este cambio, se puede proceder a asignar el DataTable modificado al DataSource del DataGridView.

**Evitando errores comunes**

Uno de los errores más habituales al trabajar con formateo de datos es no considerar los casos en los que los DNIs no cumplen con el formato esperado. Es crucial añadir validaciones para asegurarse de que los datos sean consistentes y de que no se produzca un error en tiempo de ejecución por un DNI inválido o mal formateado.

Además, es recomendable manejar los DNIs como cadenas de texto y no como números, para no perder los ceros iniciales que podría tener un DNI y que son parte importante de la identificación.

**Refinamiento del código**

Una práctica valiosa en el desarrollo de software es la refactorización, que consiste en mejorar el código sin alterar su funcionalidad. Esto ayuda a mantener el código limpio y legible. En nuestro ejemplo, podríamos encapsular la lógica de inserción del guión en una función aparte y llamarla donde sea necesario:

vb.net
Private Function FormatearDNI(dniSinFormato As String) As String
If dniSinFormato.Length = 9 Then
Return dniSinFormato.Insert(8, “-“)
Else
Return dniSinFormato
End If
End Function

‘ Y luego, podemos llamar a esta función tanto en CellFormatting como antes de cargar los datos:
e.Value = FormatearDNI(dni)
‘ O
row(“dni”) = FormatearDNI(dni)

**Conclusión**

Manipular datos de usuario como los DNIs con guiones en un DataGridView es una tarea común pero delicada. Requiere atención en el manejo de cadenas y un buen uso de los eventos y propiedades del control DataGridView. Con las aproximaciones dadas, tanto durante el carga de datos como en el evento de formateo de celda, puedes implementar fácilmente este requerimiento y asegurarte de que la presentación de los DNIs sea la adecuada en tu aplicación VB.Net. La clave está en seguir buenas prácticas de programación y realizar pruebas exhaustivas para garantizar la robustez y confiabilidad de la funcionalidad desarrollada. Llevar a cabo una refactorización periódica de tu código también contribuirá a la calidad final del software y de la experiencia del usuario.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad