Por que me marca error mi conexion de ADODB?

08/05/2006 - 18:28 por Ernesto Lara | Informe spam
Asi hago mi conexion:

strConexion = "Provider = SQLOLEDB.1;" & _
"Persist Security Info = False;" & _
"Initial Catalog = CONTROL;" & _
"Data Source = SERVIDOR1"

donde CONTROLes mi Base de Datos y SERVIDOR1 mi servidor de BD, supongo que
es la conexion la del problema por que al ejecutar un query de la sig. forma:

strConsulta = "Select CONEXION" & vbCr & _
"From CONEXIONSERVIDOR " & vbCr & _
"Where SISTEMA = 'USUARIOS'"

donde CONEXIONSERVIDOR es una tabla dentro de la BD CONTROL me marca el
siguiente error al intentar leer el recordset de la sig. forma
rsConsulta("TRA_NOMBRE")

el error dice: "Unable to cast object of type 'ADODB.InternalField' to type
'System.String'."

Preguntas similare

Leer las respuestas

#1 Ernesto Lara
08/05/2006 - 18:35 | Informe spam
Perdon no es rsConsulta("TRA_NOMBRE") es rsConsulta("CONEXION") :D
Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MS MVP VB]
08/05/2006 - 23:34 | Informe spam
A diferencia de VB6 en .NET las propiedades por defecto solo pueden existir
si tienen parametros, como por ejemplo Fields del Recordset que es lo que
estas usando (rs("campo") equivale a rs.Fields("campo")). Entonces lo que te
devuelve es un objeto Field. Field tiene como propiedad por defecto Value y
por eso es que esa sintaxis funciona correctamente en VB6, pero como .NET no
soporta propiedades por defecto sin parametros no se evalua esa propiedad.
Debes llamar explicitamente a Value (y probablemente usar CType o
DirectCast):

Dim valor As String

value = CType(rsConsulta("CONEXION").Value, String)

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#3 Ernesto Lara
09/05/2006 - 16:43 | Informe spam
Muchas gracias Eduardo, no tenia idea de esa caracteristica del .Net te
agradesco la ayuda :)

"Eduardo A. Morcillo [MS MVP VB]" escribió:

A diferencia de VB6 en .NET las propiedades por defecto solo pueden existir
si tienen parametros, como por ejemplo Fields del Recordset que es lo que
estas usando (rs("campo") equivale a rs.Fields("campo")). Entonces lo que te
devuelve es un objeto Field. Field tiene como propiedad por defecto Value y
por eso es que esa sintaxis funciona correctamente en VB6, pero como .NET no
soporta propiedades por defecto sin parametros no se evalua esa propiedad.
Debes llamar explicitamente a Value (y probablemente usar CType o
DirectCast):

Dim valor As String

value = CType(rsConsulta("CONEXION").Value, String)

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida