Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/04/2008, 09:38
Avatar de daPhyre
daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 2 meses
Puntos: 142
Exclamación Re: Arreglo de Radios en VB.NET

Parece ser que, o nadie vio mi tema, o nadie pudo contestarlo. Finalmente pude lograrlo, y lo más curioso era que al buscarlo en español en Google, esta pregunta era la primera en mostrarse, y la única en relación. Decido poner a continuación mi solución, en caso que a alguien más pueda servirle en el futuro...

Primero que nada, declaro dos arreglos de tipo botón, uno doble que contendrá las opciones, y uno sencillo que contendrá los nombres donde serán guardados.

Código:
Dim radios(2)() As RadioButton
Dim radNombres() As String
Después, crearemos una función que deberá ser llamada al iniciar el programa, para que se asignen los datos correspondientes a los arreglos:

Código:
Public Function LoadRadios()
	radios(0) = New RadioButton() {radNo1,radNo2,radNo3,radNo4,radNo5}
	radios(1) = New RadioButton() {radSi1,radSi2,radSi3,radSi4,radSi5}
	radNombres = New String() {"preg1", "preg2", "preg3", "preg4", "preg5"}
End Function
De esta forma, tenemos en radios(0) los radios que indican no, en radios(1) los radios que indican si, y en radNombres los nombres de las columnas donde serán guardados. Si en un momento queremos inicializar los datos para que todas comiencen como negativo, lo hacemos de la siguiente manera:

Código:
For i = 0 To radios(0).Length - 1
	radios(0)(i).Checked = True
Next
A la hora de guardar nuestros datos, primero insertamos los datos fijos, tales como id del cuestionario, nombre del encuestado, edad, etc. Una vez guardados, pasamos a actualizar la fila con el arreglo de radios de la siguiente forma:

Código:
For i = 0 To radNombres.Length - 1
	Dim val = 0
	If (radios(1)(i).Checked) Then
		val = 1
	End If
	sqlCmd = New SqlCommand("UPDATE tblCuestionario SET " & radNombres(i) & "=" & val & " WHERE id like '" & id & "'", sqlCnx)
	sqlCmd.ExecuteNonQuery()
Next
Donde tblCuestionario es donde se va a guardar, las columnas de radNombres están guardadas como datos de bit, y id son la variable que tiene nuesto identificador, y su correspondiente columna en la tabla. De esta forma ya habremos guardado nuestros datos.

Por último, para cargar estos datos de vuelta a la ventana, lo hacemos con este código:

Código:
Dim i As Integer
For i = 0 To radNombres.Length - 1
	sqlCmd = New SqlCommand("SELECT " & radNombres(i) & " FROM tblCuestionario WHERE id like '" & id & "'", sqlCnx)
	Dim radyn = sqlCmd.ExecuteScalar
	If radyn Then
		radios(1)(i).Checked = True
	Else
		radios(0)(i).Checked = True
	End If
Next
Se que muchos de ustedes preguntarán ¿Para que hacerlo de esta forma por cinco opciones de radio? Les recuerdo que este ha sido solo un ejemplo, en mi caso fueron más de 50, y se que a muchos más les sucederá algo similar.

Espero mi pequeño logro sea de ayuda a alguien más. Suerte a todos con sus códigos.

-daPhyre-