Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Referencia a objeto no establecida como instancia de un objeto

264 views
Skip to first unread message

Ira

unread,
Jan 18, 2010, 4:43:49 AM1/18/10
to
Buenas,

Este es mi c�digo en el evento valuechanged de un datapickertime. Si intento
declarar el datarow as�: "Dim GastoEncontrado as New DataRow", me da el
error de que no se puede declarar con new porque es "Protected Friend". Si
no lo declaro como new me da el error de "Referencia a objeto no establecida
como instancia de un objeto". �Qu� puede ser?.
Dim GastoEncontrado As DataRow

GastoEncontrado = Nothing

GastoEncontrado = Ds.Tables("gastos").Select("agente=1000")(0)

If IsDBNull(GastoEncontrado) or (gastoencontrado is nothing) Then

LimpiarCamposGastos()

Else

MostrarGasto(Ds.Tables("gastos").Rows.IndexOf(GastoEncontrado))

End If

GastoEncontrado = Nothing

End If

Much�simas gracias


Alberto Poblacion

unread,
Jan 18, 2010, 8:26:41 AM1/18/10
to
"Ira" <alban...@gmail.com> wrote in message
news:eg9GeLCm...@TK2MSFTNGP05.phx.gbl...

> Este es mi c�digo en el evento valuechanged de un datapickertime. Si
> intento declarar el datarow as�: "Dim GastoEncontrado as New DataRow", me
> da el error de que no se puede declarar con new porque es "Protected
> Friend".

Efectivamente, el constructor de la clase DataRow est� marcado aposta
como "internal" dentro ed su DLL precisamente para que no puedas hacer un
New de la clase DataRow. Cuando quieras un nuevo DataRow, en lugar de hacer
un "New" lo que hay que hacer es pedirle a su DataTable que te devuelva un
nuevo DataRow correctamente configurado para que sus columnas correspondan
con las de la tabla:

Dim GastoEncontrado As DataRow = Ds.Tables("gastos").NewRow()

> Si no lo declaro como new me da el error de
> "Referencia a objeto no establecida como instancia de un objeto". �Qu�
> puede ser?

Sin duda es porque accedes a alg�n objeto que vale Nothing en el momento
de leerlo. No has indicado exactamente d�nde te ocurre ese error. Si
examinas la l�nea correspondiente con el debugger, ver�s que contiene alguna
variable que es Nothing e intentas leerla.

Veo un par de problemas en tu c�digo, pero en principio deber�an darte
otro tipo de error, no el de "referencia no establecida...":

> GastoEncontrado = Ds.Tables("gastos").Select("agente=1000")(0)

Si no existe un registro que tenga "agente=1000" la expresi�n
...Select("agente=1000") te devolver� un array con cero elementos. Si
intentas acceder al primero de los elementos del array poniendo
...Select("agente=1000")(0) te dar� un error de �ndice fuera de rango.

> If IsDBNull(GastoEncontrado) or (gastoencontrado is nothing) Then [...]

Aunque no deber�a de dar error, este "If" no es muy ortodoxo:
IsDBNull(GastoEncontrado) nunca valdr� true, porque la variable
GastoEncontrado nunca puede valer DBNull.Value.

0 new messages