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

Añadir un DataTable utilizando el Método Add

Estas en el tema de Añadir un DataTable utilizando el Método Add en el foro de .NET en Foros del Web. Estoy tratando de añadir un datatable a un dataset utilizando el método Add de su propiedad Tables. Tengo la siguiente línea de Código: Código: dsDataSet.Tables.Add(cDB.EjecutaSQL("SELECT ...
  #1 (permalink)  
Antiguo 15/09/2006, 12:25
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 23 años
Puntos: 7
Añadir un DataTable utilizando el Método Add

Estoy tratando de añadir un datatable a un dataset utilizando el método Add de su propiedad Tables.

Tengo la siguiente línea de Código:
Código:
dsDataSet.Tables.Add(cDB.EjecutaSQL("SELECT CodMat, DesLar FROM InPresen"))
y el método de la Clase cDB es:
Código:
Public Function EjecutaSQL(ByVal strSQL As String) as DataTable
    daDataAdapter = New Data.SqlClient.SqlDataAdapter(strSQL, cnn)
    EjecutaSQL = New Data.DataSet
    daDataAdapter.Fill(EjecutaSQL)
    Return EjecutaSQL.Tables(0)
End Function
Pero me da el siguiente error:
DataTable already belongs to another DataSet

¿Qué estoy haciendo mal?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 27/09/2006, 17:00
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 20 años, 2 meses
Puntos: 9
Hola RsOft,
Entiendo que "EjecutaSQL" es el nombre de la funcion, que es tipo DataTable.
En el Return devuelves "EjecutaSQL.Tables(0)". Pero no debería tener una colección Tables, si ya es un DataTable. Deberías devolver solamente una variable de tipo DataTable. Y también pienso que crearte un Dim tabla As DataTable y trabajar con este. Y finalmente Hacer un Return tabla.
A parte también asignas EjecutaSQL a un new DataSet..
Yo cambiaría por algo así:
Código:
Public Function EjecutaSQL(ByVal strSQL As String) as DataTable
    daDataAdapter = New Data.SqlClient.SqlDataAdapter(strSQL, cnn)
    Dim dS as New Data.DataSet
    daDataAdapter.Fill(dS, "NombreTabla")
    Return dS.Tables(0).Copy
End Function
A ver qué tal.
Un saludo RsOft.
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 27/09/2006 a las 17:23
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 05:10.