Error :IndexOutofRangeException was unhandled : There is no row at position 0.
Recientemente estoy programando en .net pero, lo que hago es jalar datos a un datatable y de ahi jalar fila a fila:
Private Function f_Retrieve(ByVal v_NroGuia As String) As Integer
Dim index As Integer
Dim ObjClassBuscarPreguias_LN As New Cls_BuscarPreGuias_LN
Windows.Forms.Cursor.Show()
Windows.Forms.Cursor.Current = Cursors.WaitCursor
Dim dtResultado As New DataTable
dtResultado = ObjClassBuscarPreguias_LN.BuscarNroGuia_LN(v_NroGuia)
LblCiudad.Text = dtResultado.Rows(0).Item("ORIGEN")
TxtCiudadDestino.Text = dtResultado.Rows(0).Item("DESTINO")
End Function
Pero sale un error, me dice
IndexOutofRangeException was unhandled :
There is no row at position 0.
No se por que ese error.
1 respuesta
![surtidora](http://blob.todoexpertos.com/letters/S_188_48.png?v=1)
Quise correr tu programa para ver el error pero no tengo la clase BuscarPreguias_LN. Lo que yo me imagino que te esta pasando es que esta función no encuentra ninguna fila con el numero de guía buscado y por lo tanto la tabla dtResultado no contiene ningún registro. Checalo o mandame ObjClassBuscarPreguias_LN. Para probar. Bye
![diego1393](http://blob.todoexpertos.com/letters/D_61_48.png?v=1)
Hola,
Lo que pasa es que yo estoy programando en 4 capas, la clase BuscarPreguias_LN se conecta a la capa lógica, aquí va el código:
Imports INTEGRACION_AD
Imports System.Data.OracleClient
Public Class Cls_BuscarPreGuias_LN
Dim Ob_ClsPreguias_AD As New Cls_BuscarPreGuias_AD
Public Function BuscarNroGuia_LN(ByVal v_Preguias As String) As DataTable
Return Ob_ClsPreguias_AD.BuscarPreguias_AD(v_Preguias)
End Function
End Class
y como te darás cuenta hay clase que se conecta a la capa Datos :
BuscarPreguias_AD
Public Function BuscarPreguias_AD(ByVal vi_PreGuias As String) As DataTable
Try
Dim dt As DataTable = New DataTable()
Dim da As OracleDataAdapter = New OracleDataAdapter()
iOracle_Cmd.Connection = Conexión()
iOracle_Cmd.CommandType = CommandType.StoredProcedure 'indicamos que es un procedure
iOracle_Cmd.Parameters.Clear()
iOracle_Cmd.CommandText = "SP_BUSCAR_PRE_GUIAS"
iOracle_Cmd.Parameters.Add("p_NumeroGuia", OracleType.VarChar).Value = vi_PreGuias
Dim prm1 As New OracleParameter("CUR_BUSCAR_GUIAS", OracleType.Cursor)
prm1.Direction = ParameterDirection.Output
iOracle_Cmd.Parameters.Add(prm1)
da.SelectCommand = iOracle_Cmd
da.Fill(dt)
iOracle_Cmd.Connection.Close()
Return dt
Catch ex As Exception
Throw New Exception(ex.Message)
Finally
iOracle_Cmd.Connection.Close()
End Try
End Function
query oracke
create or replace procedure SP_BUSCAR_PRE_GUIAS_II(v_nro_guia in varchar2,
CUR_PRE_GUIAS OUT TYPES.CURSOR_TYPE
)AS
begin
OPEN CUR_PRE_GUIAS FOR
SELECT
tpg.nro_guia_ini, tpg.nro_guia_final,
R1.nombre_unidad AS Origen,
r2.nombre_unidad as Destino,
DECODE(tpg.idtipo_entrega_carga, 1, 'AGENCIA', 2, 'DOMICILIO') AS TIPO_ENTREGA,
tcc.centro_costo as Centro_Costo,
f_t_persona_razon_social(tpg.idpersona) AS CLIENTE,
tpg.fecha_registro
FROM t_pre_guias tpg,
T_UNIDAD_AGENCIA R1,
T_UNIDAD_AGENCIA R2,
t_centro_costo tcc
WHERE
TPG.idagencias_ori = R1.idunidad_agencia
and TPG.idagencias_desti = R2.idunidad_agencia
and tpg.idcentro_costo = tcc.idcentro_costo
and tpg.nro_guia_ini <> 10 and tpg.nro_guia_final <> 15
and tpg.nro_guia_ini = (case when v_nro_guia
between tpg.nro_guia_ini and tpg.nro_guia_final then tpg.nro_guia_ini end)
and tpg.nro_guia_final = case when v_nro_guia
between tpg.nro_guia_ini and tpg.nro_guia_final
then tpg.nro_guia_final end
and r2.nombre_unidad is not null
and tcc.centro_costo is not null
and tpg.nro_guia_final > tpg.nro_guia_ini;
end SP_BUSCAR_PRE_GUIAS_II;
Y lo pasa es que, mediante un query en oracle estoy consultando, y jalando datas, pero me sale ese error y lo que hago es poner todo en datatable y y de ahí jalo columna por columna en cajas de textos o label, pero sale ese error que toy que le doy y doy vueltas.
Te agradecería si me apoyas, graciass.
![surtidora](http://blob.todoexpertos.com/letters/S_188_48.png?v=1)
Creo que no lo puedo probar pues no tengo oracle y ademas no se usarlo, la sugerencia que te hago es que cheques de alguna manera si la búsqueda produce alguna fila, si no la produce entonces ese es el error.
![diego1393](http://blob.todoexpertos.com/letters/D_61_48.png?v=1)
Hola Surtidora,
Bueno ya logre solucionar mi problema haciendo esto :
If (dtResultado.Rows.Count > 0) Then
TxtCiudadDestino.Text = IIf(IsDBNull(dtResultado.Rows(0)("DESTINO")), "", dtResultado.Rows(0)("DESTINO"))
CboTipoEntrega.Text = IIf(IsDBNull(dtResultado.Rows(0)("TIPO_ENTREGA")), "", dtResultado.Rows(0)("TIPO_ENTREGA"))
LblCiudad.Text = IIf(IsDBNull(dtResultado.Rows(0)("ORIGEN")), "", dtResultado.Rows(0)("ORIGEN"))
Else
f_limpiar()
End If
Gracias.
![surtidora](http://blob.todoexpertos.com/letters/S_188_48.png?v=1)
Que bueno que ya solucionaste el problema, según veo lo que checas es si el numero de registros es mayor que cero, gracias por hacérmelo saber. Bye
![diego1393](http://blob.todoexpertos.com/letters/D_61_48.png?v=1)
Hola Surtidora, tengo el siguiente código
If frm.bDireccionModificada Or dtDireccion Is Nothing Then
Me.CboDireccion.DataSource = Nothing
Me.CboDireccion.Items.Clear()
dtDireccion = New DataTable
dtDireccion.Columns.Add(New DataColumn("iddireccion_consignado", GetType(Integer)))
dtDireccion.Columns.Add(New DataColumn("dirección", GetType(String)))
dtDireccion.Columns.Add(New DataColumn("id_via", GetType(Integer)))
dtDireccion.Columns.Add(New DataColumn("vía", GetType(String)))
dtDireccion.Columns.Add(New DataColumn("numero", GetType(String)))
dtDireccion.Columns.Add(New DataColumn("manzana", GetType(String)))
dtDireccion.Columns.Add(New DataColumn("lote", GetType(String)))
dtDireccion.Columns.Add(New DataColumn("id_nivel", GetType(Integer)))
dtDireccion.Columns.Add(New DataColumn("nivel", GetType(String)))
dtDireccion.Columns.Add(New DataColumn("id_zona", GetType(Integer)))
dtDireccion.Columns.Add(New DataColumn("zona", GetType(String)))
dtDireccion.Columns.Add(New DataColumn("id_clasificacion", GetType(Integer)))
dtDireccion.Columns.Add(New DataColumn("clasificación", GetType(String)))
dtDireccion.Columns.Add(New DataColumn("iddepartamento", GetType(Integer)))
dtDireccion.Columns.Add(New DataColumn("idprovincia", GetType(Integer)))
dtDireccion.Columns.Add(New DataColumn("iddistrito", GetType(Integer)))
dr = dtDireccion.NewRow
dr("iddireccion_consignado") = 0
dr("dirección") = " (SELECCIONE)"
dr("id_via") = 0
dr("vía") = ""
dr("numero") = ""
dr("manzana") = ""
dr("lote") = ""
dr("id_nivel") = 0
dr("nivel") = ""
dr("id_zona") = 0
dr("zona") = ""
dr("id_clasificacion") = 0
dr("clasificación") = ""
dr("iddepartamento") = 0
dr("idprovincia") = 0
dr("iddistrito") = 0
dtDireccion.Rows.Add(dr)
If frm.bDireccionModificada Then
'------datos dirección estructurada---------
iDepartamentoCli = frm.CboDepartamento.SelectedValue
iProvinciaCli = frm.CboProvincia.SelectedValue
iDistritoCli = frm.CboDistrito.SelectedValue
IDviaCli = frm.CboVia.SelectedValue
ViaCli = frm.TxtVia.Text
NroCli = frm.TxtNumero2.Text
ManzanaCli = frm.TxtManzana.Text
loteCli = frm.TxtLote.Text
id_NivelCli = frm.CboNivel.SelectedValue
NivelCli = frm.TxtNivel.Text
id_ZonaCli = frm.CboZona.SelectedValue
ZonaCli = frm.TxtZona.Text
id_ClasificacionCli = frm.CboClasificacion.SelectedValue
ClasificacionCli = frm.TxtClasificacion.Text
FormatoCli = 1
'Dirección
'Dim sDireccion As String = frm.CboVia.Text & " " & frm.TxtVia.Text.Trim & " "
Dim sDireccion As String = IIf(frm.CboVia.SelectedValue = 0, "", frm.CboVia.Text) & " " & IIf(frm.CboVia.SelectedValue = 0, "", frm.TxtVia.Text.Trim) & " " 'Cambio 03102011
'sDireccion = Trim(sDireccion)
If frm.CboVia.SelectedValue > 0 And frm.TxtNumero2.Text.Trim.Length > 0 Then
sDireccion &= frm.TxtNumero2.Text.Trim & " "
End If
If frm.TxtManzana.Text.Trim.Length > 0 Then
sDireccion &= "MZ " & frm.TxtManzana.Text.Trim & " LT " & frm.TxtLote.Text.Trim & " "
End If
If frm.CboNivel.SelectedValue > 0 Then
sDireccion &= frm.CboNivel.Text & " " & frm.TxtNivel.Text.Trim & " "
End If
If frm.CboZona.SelectedValue > 0 Then
sDireccion &= frm.CboZona.Text & " " & frm.TxtZona.Text.Trim & " "
End If
If frm.CboClasificacion.SelectedValue > 0 Then
sDireccion &= frm.CboClasificacion.Text & " " & frm.TxtClasificacion.Text.Trim & " "
End If
If frm.CboDistrito.SelectedValue > 0 Then
sDireccion &= frm.CboDistrito.Text
End If
dr = dtDireccion.NewRow
dr("iddireccion_consignado") = -1
dr("dirección") = sDireccion.Trim
dr("id_via") = frm.CboVia.SelectedValue
dr("vía") = frm.TxtVia.Text.Trim
dr("numero") = frm.TxtNumero2.Text.Trim
dr("manzana") = frm.TxtManzana.Text.Trim
dr("lote") = frm.TxtLote.Text.Trim
dr("id_nivel") = frm.CboNivel.SelectedValue
dr("nivel") = frm.TxtNivel.Text.Trim
dr("id_zona") = frm.CboZona.SelectedValue
dr("zona") = frm.TxtZona.Text.Trim
dr("id_clasificacion") = frm.CboClasificacion.SelectedValue
dr("clasificación") = frm.TxtClasificacion.Text.Trim
dr("iddepartamento") = frm.CboDepartamento.SelectedValue
dr("idprovincia") = frm.CboProvincia.SelectedValue
dr("iddistrito") = frm.CboDistrito.SelectedValue
dtDireccion.Rows.Add(dr)
End If
Me.CboDireccion.DataSource = dtDireccion
CboDireccion.DisplayMember = "dirección"
CboDireccion.ValueMember = "iddireccion_consignado"
If frm.bDireccionModificada Then
Me.CboDireccion.SelectedIndex = 1
Else
Me.CboDireccion.SelectedIndex = 0
End If
End If
Como te darás cuenta lo que hace ese código es que que cuando encuentra el combobox vacío ejecuta ese if, todos esos datos singresados a través de otra pantalla, todo lo hace bien, pero nono inserta en la tabla, ahora yo ya cree esa función y ya lo inserta perfectamente, y la función le puse este nombre : F_InsertarDireccion()
pero lo que pasa es que lo inserta en la tabla pero actualiza el combobox, tengo que cerrar la venta y volver a abrilo para poder ver recién el dato que ingrese a travz de otra ventana, la pregunta es, como hago para actualizar mi combobox, apenas ingrese datos a través de otra ventana, gracias.
- Compartir respuesta
![](/content/images/user_nophoto_small.png)