Foros del Web » Programación para mayores de 30 ;) » .NET »

El manejo de datos de una Base de datos

Estas en el tema de El manejo de datos de una Base de datos en el foro de .NET en Foros del Web. Buenas tardes amigos, hoy quería plantearos un problema que me surge a la hora de manejar datos de una Base de datos. Actualmente tengo el ...
  #1 (permalink)  
Antiguo 07/06/2009, 09:36
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Exclamación El manejo de datos de una Base de datos

Buenas tardes amigos,

hoy quería plantearos un problema que me surge a la hora de manejar datos de una Base de datos.

Actualmente tengo el siguiente código:
Código:
    Private Sub ComboBox_GrupoUs_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox_Grupos.SelectedIndexChanged
        Dim usuarGrup As New GESTIDOUK.DataSet_UsuarGrup.USUARIOS_GRUPOSDataTable
        Dim datosContacto As New GESTIDOUK.DataSet_DatosContacto.DATOS_CONTACTODataTable


        codigo_gr = Microsoft.VisualBasic.Left(Trim(ComboBox_Grupos.SelectedItem.ToString), 5)

        TextBox_CorrPart.Clear()
        TextBox_CorrTrab.Clear()

        Try
            usuarGrup = USUARIOS_GRUPOSTableAdapter.SelectWhereCodgr(codigo_gr)

            For i = 0 To usuarGrup.Count - 1
                datosContacto = DATOS_CONTACTOTableAdapter.SelectCorreoe_WhereCodus(Trim(usuarGrup(i).COD_US.ToString))

                If Not DBNull.Value.Equals(datosContacto(i)(4)) Then
                    TextBox_CorrPart.Text = TextBox_CorrPart.Text + Trim(datosContacto(i).CORREOEPART_DC.ToString) + ", "
                End If

                If Not DBNull.Value.Equals(datosContacto(i)(5)) Then
                    TextBox_CorrTrab.Text = TextBox_CorrTrab.Text + Trim(datosContacto(i).CORREOETRAB_DC.ToString) + ", "
                End If

            Next

            TextBox_CorrPart.Text = Microsoft.VisualBasic.Left(TextBox_CorrPart.Text, Len(TextBox_CorrPart) - 2)
            TextBox_CorrTrab.Text = Microsoft.VisualBasic.Left(TextBox_CorrTrab.Text, Len(TextBox_CorrTrab) - 2)

        Catch ex As Exception
            Modulo_General.mostrarMsgbox(ex.Message)

        End Try

    End Sub


Aquí, yo obtengo un "codigo_gr" desde un combobox.

A partir de él obtengo aquellos "cod_us" perteneciente a los usuarios que en la Bd están asociados a dicho grupo. Sería la línea:
Cita:
usuarGrup = USUARIOS_GRUPOSTableAdapter.SelectWhereCodgr(codig o_gr)
En "usuarGrup" se almacenan filas que contienen los "cod_us" de estos usuarios. Por cada "cod_us", obtenemos sus direcciones de correo-e (de la tabla "DatosContacto") usando la siguiente línea:
Cita:
datosContacto = DATOS_CONTACTOTableAdapter.SelectCorreoe_WhereCodu s(Trim(usuarGrup(i).COD_US.ToString))
Por cada usuario, sólo hay un registro en la tabla "DatosContacto", y leo los dos campos que pertenecen a los correos-e (personal y trabajo); es decir, en el TableAdapter.Select... sólo hago el SELECT de dos datos, correoepart_dc y correoetrab_dc:
Cita:
If Not DBNull.Value.Equals(datosContacto(i)(4)) Then
TextBox_CorrPart.Text = TextBox_CorrPart.Text + Trim(datosContacto(i).CORREOEPART_DC.ToString) + ", "
End If

If Not DBNull.Value.Equals(datosContacto(i)(5)) Then
TextBox_CorrTrab.Text = TextBox_CorrTrab.Text + Trim(datosContacto(i).CORREOETRAB_DC.ToString) + ", "
End If
Antes de leer la fila almacenada en "datosContacto", compruebo que no es DBNull.

Pues bien, cuando hago una prueba, selecciono un grupo que contiene 2 usuarios:
- El primero tiene todos los datos rellenos en la tabla "DatosContacto"
- El segundo sólo tiene rellenos dos campos, los dos primeros que aparecen en la tabla

Por ello, cuando acceso a los datos del primero, todo va correcto, pero cuando accedo a los del segundo, cuando llega a la línea:
Cita:
If Not DBNull.Value.Equals(datosContacto(i)(4)) Then
me dice:
Cita:
No hay ninguna fila en la posición 1

Es como si al traerse una fila vacía, me dijese que no existe... cómo puedo solucionarlo para que al ocurrir eso, no salte una excepción, sino que siga el recorrido del código, como hice con la sentencia
Cita:
If Not DBNull.Value.Equals(datosContacto(i)(4)) Then


Muchas gracias por la ayuda, y perdonas que haya hablado tanto, pero quería explicarme bien...

Un saludo y mil gracias! ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:16.