Usuario
Cargar checkedListbox desde VB.NET SQL SERVER con Algunos Items Marcados

Pregunta
-
Estimados, Como siempre, un gusto en saludarlos y agradecerles el apoyo a la comunidad que profesionales que desarrolla.
Acudo a ustedes, si pueden ayudarme, con un problema que se me ha presentado y no logro sacarlo adelante.
Tengo Una Tabla "ACCESOS" en SQL Server, La cual contiene 2 Campos (Nombre_Persona y Nivel_Acceso)
Nombre_Persona , Nivel_Acceso
-Manuel - Usuario
-David - Usuario, Administrador
-Alejandro - Administrador
Tengo una consulta, cuyo filtro es el Nombre_Persona (Proc Almacenado) y necesito saber el Nivel_Acceso.
Para ello, necesito desplegar los Niveles de Acceso de la persona ya clickeados a través de un Checkedlistbox.
El CheckedListbox Mostrara como items:
- Usuario
-Administrador
Pero según el usuario, debería mostrar con click los que ya tiene asignados según la info de la BD.
Creen que puedan ayudarme?
Desde ya muchas gracias,
- Editado ClaudioMaiden martes, 26 de junio de 2018 16:38
- Cambiado Enrique M. Montejo jueves, 28 de junio de 2018 7:06 Pregunta relacionada con controles de Windows Forms.
Todas las respuestas
-
Es posible, pero debo recalcar que el diseño de base de datos es incorrecto. Uno no debe almacenar más de un dato en un campo pues viola las reglas de normalización de bases de datos. En su caso, usted almacena múltiples accesos en el campo Nivel_Acceso.
En su estado actual lo que puede hacer es retornal el valor de la columna Nivel_Acceso y en VB usted utiliza String.Split() para separar los valores (la coma sería el separador). Luego, para cada valor devuelto por Split(), busca en el CheckedListBox los items cuyo nombre es igual. Si es igual, lo marca (Checked = True).
Jose R. MCP
My GIT Repositories | Mis Repositorios GIT -
Hola Jose, antes que todo, agradecerte la respuesta.
sucede que mencione mal las características de la tabla accesos, enrealidad, los datos quedan ingresados de la sgte forma:
Rut_Persona , Nivel_Acceso
-15.764.343-8 - Usuario
-14.744.843-4 - Usuario,
-14.744.843-4 - Administrador
-13.003.232-5 - Administrador
Donde por ejemplo, el rut 14.744.843-4, posee 2 niveles de acceso.
Intento extraer esta info a través de un datatable de la sgte forma, pero no logro que funcione.
Try
Dim Con As New SqlConnection(My.Settings.Conexion)
Con.Open()
cmd1.Parameters.Clear()
cmd1.CommandType = CommandType.StoredProcedure
cmd1.CommandText = "CargaNivel"
cmd1.Parameters.Add("@Rut", SqlDbType.NVarChar).Value = (ADM_ModifUser.TXT_Rut.Text.Trim())
cmd1.Connection = Con
Dim adapter As New SqlDataAdapter()
adapter.SelectCommand = cmd1
Dim table As New DataTable()
adapter.Fill(table)
Respuesta1 = cmd1.ExecuteReader
If Respuesta1.Read <> 0 Then
Respuesta1.Close()
For Each i As DataRow In table.Rows
Dim R As Integer
For R = 0 To CheckedListBox1.Items.Count - 1
If CheckedListBox1.GetItemText(R).Trim = i.Item("Modulos_Acceso") Then
CheckedListBox1.SetItemChecked(R, True)
Else
End If(Claramente aqui no se como recorrer el checkedboxlist para que vaya comparando los items filtrados en el datatable, con los items que contiene el checkedboxlist y los marque.
Es decir, si el datatable filtra Nivel (Usuario y Administrador) posterior a la búsqueda del rut: 14.744.843-4, debiera marcar con check, dentro del checkedboxlist, el campo Usuario y administrador para ese rut en especifico).
Next
End If
Con.Close()
Con.Dispose()
cmd1.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message)
Throw ex
End TryAgradecería mucho la ayuda
Mis Cordiales Saludos a toda la comunidad.
- Editado ClaudioMaiden sábado, 30 de junio de 2018 16:04
-
Ok, es casi igual. Un SELECT Nivel_Accesor From tabla where Rut_Persona = @rut;, ya sea en un procedimiento almacenado o en una consulta parametrizada. Arrojará cero o más líneas. Hace un bucle que lea línea por línea, y por cada línea, pues selecciona el checkbox correspondiente.
Jose R. MCP
My GIT Repositories | Mis Repositorios GIT -
Muchas Gracias Jose, me ha servido mucho la solución.
Tengo otra duda en relación a los Códigos QR.
Tengo un código QR estático en una etiqueta de un envase, la cual contiene:
1) un id único.
2) Fecha Inicio Elaboración.
3) Fecha de Término Elaboración.
Necesito que, si un usuario quiere escanear el código QR del envase a través de un celular, esta me dirija a una pagina web en particular, envíe el (id, fecha inicio y termino) a la misma web y en el load de la misma, realice una consulta a mysql con el fin de que el usuario conozca la trazabilidad del producto.
Lo que no logro hacer, es decir, donde tengo mayor problema es en mandar los datos que contiene el código QR y recibirlos en la web.
Se que quizás tenga que re diseñar el código QR y de ser así, quisiera saber que información debiese grabar en reemplazo de la actual para que esto funcione; así como también, el lenguaje web que sugiere. Pensaba en PHP o ASP.NET.
Desde ya muchas gracias nuevamente y espero puedas ayudarme.
-
Hola. Si tiene otra duda, le agradeceré que marque la respuesta para la pregunta actual y proceda a crear un nuevo hilo de conversación para la nueva pregunta. Así el enfoque se mantiene en un único tema, que es deseable para quienes encuentran esta conversación vía buscadores de Internet.
Jose R. MCP
My GIT Repositories | Mis Repositorios GIT