Retroceder   Foros del Web > Programación para sitios web > .NET > win forms

Respuesta
 
Herramientas Desplegado
Antiguo 15-sep-2006, 12:25   #1 (permalink)
RsOfT está en el buen camino
 
Avatar de RsOfT
 
Fecha de Ingreso: noviembre-2002
Ubicación: InterNET
Mensajes: 1.005
Enviar un mensaje por ICQ a RsOfT Enviar un mensaje por Yahoo  a RsOfT
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--
RsOfT está desconectado   Responder Citando
Antiguo 27-sep-2006, 17:00   #2 (permalink)
moNTeZIon ha deshabilitado el karma
 
Avatar de moNTeZIon
 
Fecha de Ingreso: enero-2005
Ubicación: CanFenosa Martorelles BCN
Mensajes: 1.298
Enviar un mensaje por Skype™ a moNTeZIon
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-sep-2006 a las 17:23.
moNTeZIon está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 06:28.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93