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

Mostrar mensaje de error cuando no hay nada en la Base de datos!

Estas en el tema de Mostrar mensaje de error cuando no hay nada en la Base de datos! en el foro de .NET en Foros del Web. Hola Espero que alguien pueda ayudarme. Tengo un Sub en VB.NET donde cargo los datos en un DataAdapter y luego los paso a un dataSet. ...
  #1 (permalink)  
Antiguo 12/01/2008, 18:29
 
Fecha de Ingreso: enero-2008
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Mostrar mensaje de error cuando no hay nada en la Base de datos!

Hola

Espero que alguien pueda ayudarme. Tengo un Sub en VB.NET donde cargo los datos en un DataAdapter y luego los paso a un dataSet. Cuando pongo un nombre de usuario que no esta en la base de datos, el dataset esta vacío y me sale el error "There is no row at position 0".

No sé como puedo evitar esto. Traté con un catch ex as sqlException, pero mas bien lo que hace es saltarselo y seguir con las siguientes instrucciones. Espero que alguien pueda ayudarme

Alguien que me ayude será sumamente agradecido

Aca les pongo mi codigo:

************************************************** *********

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f As ProcedimientosGenerales = New ProcedimientosGenerales

' Se abre la base de datos
CadenaConexion = f.AbrirBaseDatos(CadenaConexion)
conexion = f.ConexionBaseDatos(CadenaConexion, conexion)
comando = New SqlCommand(CadenaConexion, conexion)

' Se crea un SqlDataAdapter para la tabla EMPLOYEE.
Dim DatosEmpleado As SqlDataAdapter = New SqlDataAdapter()

' Se hace una tabla “table” que mapee los datos de EMPLOYEE.
DatosEmpleado.TableMappings.Add("Table", "Employee")

Dim ComandoEMPLEADO As SqlCommand = New SqlCommand( _
"SELECT [USER].MUD_ID, [USER].STRFIRSTNAME, [USER].STRLASTNAME, DEPARTMENT.STRDEP_NAME, DEPARTMENT.STRSUPERVISOR, [USER].AVAILABLEDAYS, [USER].TAKENDAYS FROM EMPLOYEE INNER JOIN [USER] ON EMPLOYEE.US_CODE = [USER].MUD_ID INNER JOIN LINE_MANAGER ON EMPLOYEE.US_CODE = LINE_MANAGER.EMP_US_CODE AND [USER].MUD_ID = LINE_MANAGER.US_CODE INNER JOIN DEPARTMENT ON LINE_MANAGER.DEP_CODE = DEPARTMENT.CODE WHERE [user].mud_id = '" & txtusername.Text & "'", conexion)

' Se crea un SqlCommand para recuperar la info de EMPLOYEE.
ComandoEMPLEADO.CommandType = CommandType.Text

' Se incorpora el SelectCommand del SqlDataAdapter.
DatosEmpleado.SelectCommand = ComandoEMPLEADO

' Se llena el DataSet.

Dim DS As DataSet = New DataSet("Employee")
DatosEmpleado.Fill(DS)

' QUE HAGO ACA!???? Aca es donde me aparece el error
If DS.Tables("Employee").Rows(0)(0).ToString = "" Then
MensajeError.Text = "ERROR. Usuario no se encuentra en Base de Datos"
Else
' Visualiza los datos en los textboxes

txtNombreEmpleado.Text = ((DS.Tables("Employee").Rows(0)(1).ToString) + " " + (DS.Tables("Employee").Rows(0)(2).ToString))
txtDepartamento.Text = DS.Tables("Employee").Rows(0)(3).ToString
txtjefeinmediato.Text = DS.Tables("Employee").Rows(0)(4).ToString
txtdiastomados.Text = DS.Tables("Employee").Rows(0)(5).ToString
txtdiasdisponibles.Text = DS.Tables("Employee").Rows(0)(6).ToString

' Visualiza los ddatos en un DataGridView A MODO DE PRUEBA

DataGrid1.DataSource = DS.Tables("Employee")
End If
conexion = f.Cerrarbasedatos(conexion)

End Sub

************************************************** *********

Lo de el SqlCommand, eso me funciona, es que lo puse en linea continua, no dividí la cadena pero si me funciona.

Gracias por toda la ayuda que me puedan brindar.
  #2 (permalink)  
Antiguo 13/01/2008, 04:42
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 5 meses
Puntos: 156
Re: Mostrar mensaje de error cuando no hay nada en la Base de datos!

Comprueba si el dataset está vacío:

por ejemplo:

Cita:
if DS is nothing then
msgbox("No hay empleados")
End if
O bien, antes de coger el dato que contien n fila en y posición:
Cita:
if idDbNull(DS.Tables("Employee").Rows(0)(0))=False Then
'coge el dato
End if
saludos
  #3 (permalink)  
Antiguo 13/01/2008, 10:13
Avatar de magosc  
Fecha de Ingreso: diciembre-2006
Mensajes: 72
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Mostrar mensaje de error cuando no hay nada en la Base de datos!

Tambien puedes utilizar el TRY - CATCH
Código:
try
'Aqui pones el codigo q tienes


Catch ex As Exception
'Aqui pones el codigo o lo que quieres q haga si te da error, por ejemplo

Response.Redirect(ex.message)
         
 End Try

suerte....
  #4 (permalink)  
Antiguo 13/01/2008, 18:20
 
Fecha de Ingreso: enero-2008
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Mostrar mensaje de error cuando no hay nada en la Base de datos!

Gracias en verdad por la ayuda!!!.... el problema es que en realidad cuando se carga los datos en el dataset, si aparece un registro en el campo 0 pero está totalmente en blanco. SQL no tiene una instruccion que indique que si el registro está en blanco no lo muestre.... simplemente pone la tupla en blanco. Asi que a la hora de desplegar la información, Data.tables.count estaría valiendo 1.

Si pusiera Data.Tables.Count <> 0 , estoy obviando que hay registro ahi, entonces jamas me mostraría nada.

Tiene que haber una manera para determinar si el primer campo del registro (... rows(0)(0)..) esta en blanco. Si eso pase, pues que no muestre nada y despliegue un mensaje de error.

Que opinan?

Gracias.
  #5 (permalink)  
Antiguo 13/01/2008, 19:45
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 9 meses
Puntos: 7
Re: Mostrar mensaje de error cuando no hay nada en la Base de datos!

SqlConnection objCn = new SqlConnection("cadena conexion");
DataTable tbDatos = new DataTable();
DataAdapter objDa = new DataAdapter("comando", objCn);
objDa(tbDatos);

if (tbDatos.Rows.Count == 0)
{
MessageBox.Show("No hay registros");
}
else
{
if( (tbDatos.Rows[0][0] == String.Empty ) || (tbDatos.Rows[0][0] == null) )
MessageBox.Show("No hay registros");
}
__________________
Charlie.
  #6 (permalink)  
Antiguo 14/01/2008, 10:40
 
Fecha de Ingreso: enero-2008
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Mostrar mensaje de error cuando no hay nada en la Base de datos!

EXCELENTEEEE!!!!!! Tenías razon Chcma con este codigo. Me salvaste la vida!!!!! Y ya le vas a salvar la vida a mas de uno con este ejemplo!!!

Muchisimas gracias

xmxsicl
  #7 (permalink)  
Antiguo 14/01/2008, 10:51
 
Fecha de Ingreso: enero-2008
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Mostrar mensaje de error cuando no hay nada en la Base de datos!

Aprovecho para que tengan el código como me quedó para declarar esa condicion dentro de mi programa, talvez pueda ayudarles a más de uno:

If DS.Tables("Employee").Rows.Count = 0 Then
MsgBox("No hay registros")
Else
If (DS.Tables("Employee").Rows(0)(0) = String.Empty) Then
MsgBox("No hay empleados")

Else
' Visualiza los datos en los textboxes

txtNombreEmpleado.Text = ((DS.Tables("Employee").Rows(0)(1).ToString) + " " + (DS.Tables("Employee").Rows(0)(2).ToString))
txtDepartamento.Text = DS.Tables("Employee").Rows(0)(3).ToString
txtjefeinmediato.Text = DS.Tables("Employee").Rows(0)(4).ToString
txtdiastomados.Text = DS.Tables("Employee").Rows(0)(5).ToString
txtdiasdisponibles.Text = DS.Tables("Employee").Rows(0)(6).ToString
End If
End If
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:02.