Qué es lo que no ves? la dll, la clase, el método, no funciona, la agrega
pero no compila?

2009/7/6 Julio Szabo <[email protected]>

>  *Leonardo*,
>
> Hice lo que me dijiste y creo que es la solución adecuada al problema.
>
> Cree un proyecto en C# en VS2008 que hace el join entre los DataTables que
> recibe por parámetro y devuelve el resultado en otro Datatable.
>
> Hasta aca todo de lujo, el problema es tengo el proyecto en VS2005 como te
> había comentado anteriormente, agrego la referencia a la dll compilada en
> VS2008 y no logro verla, tenes idea que puede ser? Digo, quizá haya que
> agregar algo mas al proyecto en VS2005 para que pueda ver una dll en VS2008.
>
>
>
>
>
> Creo que sorteando este problemita, tengo solucionado el problema completo.
>
>
>
>
>
> Muchas gracias.
>
> Saludos,
>
>
>
> * *
>
> *Julio E. Szabo*
>
> Consultoría
>
> [email protected] <[email protected]>
>
> tel.: +54 (351) 423 7176
>
> cel.: (+54 9) (351) (15) 5 556048
>
> [image: Compañía de Tecnologías Latinoamericana]<http://www.ctlcorp.com.ar/>
>
> *AVISO: El presente mensaje y los archivos adjuntos que incluya pueden
> contener información confidencial de uso exclusivo del destinatario
> indicado. Cualquier uso en desacuerdo con su propósito, difusión o
> publicación, total o parcial, se encuentra prohibida. Si recibió este
> mensaje por error, rogamos reenviarlo al emisor y destruir las copias
> impresas o grabadas en su sistema.** *
>
>
>
>
>
> *De:* [email protected] [mailto:[email protected]] *En nombre de *Leonardo
> Micheloni
> *Enviado el:* Lunes, 06 de Julio de 2009 02:48 p.m.
>
> *Para:* [email protected]
> *Asunto:* [puntonet] Realizar Join por codigo
>
>
>
> mmmno, necesitás 2008. El objeto result del ejemplo es un tipo anónimo que
> se declara en el select, por eso tiene un var, si necesitás un datatable
> deberías hacer select new datatabla(){inicilización}.
>
> Esto corre sobre .net 2.0 una vez compilado, al referencia necesaria es
> System.Core y System.Data.DataExtensions, si creás un proyecto en vs2008 ya
> tiene el assembly referenciado.
>
>  Si no tenés VS2008 (el express sirve igual) no vas a poder hacerlo (en
> realidad sí pero es más complicado) las opción que tenés es meter la lógica
> del join en una dll creada con una versión express de vs2008 y llamarla de
> 2005, eso funciona, sino directamente con vs2008 pro. O sea:
>
> -Te bajás VB.NET o C# 2008 express
>
> -Te armás una clase que reciba dos datatables y arme el join y devuelva una
> colección tipada o un datatable depende de lo que necesites
>
> -La referencías desde VS2005
>
> El truco es que VS2008 va a generar código de esa expresión que corre sobre
> .net 2.0 y por eso te va a funcionar, sino fijate el ejemplo que te pasé
> recién como queda descompilado
>
> Private Shared Sub Main(ByVal args As String())
>   Dim dt1 As New DataTable
>   Dim dt2 As New DataTable
>   Dim result = dt1.AsEnumerable().Join(Of DataRow, DataRow, Object,
> <>f__AnonymousType0(Of String, Integer))(dt2.AsEnumerable(), Function (ByVal
> d As DataRow)
>   Return d.Item("columna")
>   End Function, Function (ByVal d2 As DataRow)
>   Return d2.Item("columna")
>   End Function, Function (ByVal d As DataRow, ByVal d2 As DataRow)
>   Return New { _
>   .Valor1 = d.Item("valor").ToString, _
>   .Criterio = Integer.Parse(d.Item("columna").ToString) _
>   }
>   End Function)
> End Sub
>
>
> como verás es código de 2.0 (el compilador crea delagados y tipos anónimos)
> los métodos Join y demás están definidos en System.Core y en
> System.Data.DataExtensions. Si te complica mucho te recomiendo otra opción.
> Si no cualquier cosa chiflá
>
> saludos, Leonardo.
>
>
>
> 2009/7/6 Julio Szabo <[email protected]>
>
> *Leonardo*, te paso algunas dudas que tengo al respecto:
>
> 1.       El proyecto donde tengo el Acceso a los Datos esta en VS2005 y en
> VB, esto funciona allí ? Ya sé que tengo que convertir el código que me
> pasaste de C# a VB.
>
> 2.       El objeto “result”, es un DataTable con el resultado del Join?
>
> 3.       Tengo que instalar algo? Cuales son las referencias que tengo que
> agregar al proyecto y cuales son los using o Imports que tengo que agragar
> en la clase para que funcione el código que me pasate.
>
>
>
> Muchas gracias.
>
> Saludos,
>
>
>
>
>
> * *
>
> *Julio E. Szabo*
>
> Consultoría
>
> [email protected] <[email protected]>
>
> tel.: +54 (351) 423 7176
>
> cel.: (+54 9) (351) (15) 5 556048
>
> [image: Compañía de Tecnologías Latinoamericana]<http://www.ctlcorp.com.ar/>
>
> *AVISO: El presente mensaje y los archivos adjuntos que incluya pueden
> contener información confidencial de uso exclusivo del destinatario
> indicado. Cualquier uso en desacuerdo con su propósito, difusión o
> publicación, total o parcial, se encuentra prohibida. Si recibió este
> mensaje por error, rogamos reenviarlo al emisor y destruir las copias
> impresas o grabadas en su sistema.** *
>
>
>
>
>
> *De:* [email protected] [mailto:[email protected]] *En nombre de *Leonardo
> Micheloni
> *Enviado el:* Lunes, 06 de Julio de 2009 12:09 p.m.
>
>
> *Para:* [email protected]
> *Asunto:* [puntonet] Realizar Join por codigo
>
>
>
> primero los datatables tiene un método que se llama AsEnumerable, es la
> clave, después armás el join
>
>   var dt1 = new DataTable();
>
>   var dt2 = new DataTable();
>
>
>   var result = from d in dt1.AsEnumerable()
>   join d2 in dt2.AsEnumerable()
>   on d["columna"] equals d2["columna"]
>   select new {Valor1 = d["valor"].ToString(), Criterio =
> int.Parse(d["columna"].ToString())};
>
> algo así, cualquier cosa avisame.
>
> saludos, Leonardo.
>
>
>
> 2009/7/6 Julio Szabo <[email protected]>
>
> Podría ser una opción, pero no tengo idea como hacerlo, estuve investigando
> un poco de linq, pero tengo, como para variar en cualquier proyecto, tengo
> una restricción de tiempos en mi cronograma y no tengo mucho tiempo para
> ponerme a investigar y hacer pruebas.
>
>
>
> Si me podes pasar algún ejemplo de cómo sería esto con linq, te agradecería
> mucho.
>
>
>
> Saludos,
>
>
>
> * *
>
> *Julio E. Szabo*
>
> Consultoría
>
> [email protected] <[email protected]>
>
> tel.: +54 (351) 423 7176
>
> cel.: (+54 9) (351) (15) 5 556048
>
> [image: Compañía de Tecnologías Latinoamericana]<http://www.ctlcorp.com.ar/>
>
> *AVISO: El presente mensaje y los archivos adjuntos que incluya pueden
> contener información confidencial de uso exclusivo del destinatario
> indicado. Cualquier uso en desacuerdo con su propósito, difusión o
> publicación, total o parcial, se encuentra prohibida. Si recibió este
> mensaje por error, rogamos reenviarlo al emisor y destruir las copias
> impresas o grabadas en su sistema.** *
>
>
>
>
>
> *De:* [email protected] [mailto:[email protected]] *En nombre de *Leonardo
> Micheloni
> *Enviado el:* Lunes, 06 de Julio de 2009 11:23 a.m.
> *Para:* [email protected]
> *Asunto:* [puntonet] Realizar Join por codigo
>
>
>
> linq?
>
> 2009/7/6 Julio Szabo <[email protected]>
>
> Buenos días a todos,
>
> Les escribo porque tengo un problema que no sé cómo y quizá alguien me
> pueda dar una mano.
>
> Tengo 2 Datatables, oDt1 que viene con datos de una Base de datos y oDt2
> que viene con Datos de un Web Service, ahora bien, como puedo hacer para
> hacer un join entre estos dos DataTables???
>
> He intentado hacerlo con Relations en un DataSet, pero el problema es que
> necesito que el join filtre información, es decir, tengo el siguiente
> problema, oDt1 y oDt2, lo que necesito es obtener, oDtResultado:
>
>
>
> oDt1
> oDt2                                                     oDtResultado
>
> ------
> --------------------------                   -------------------------
>
> 101                                        106
> Descripcion1                      106         Descripcion1
>
> 102                                        108         Descripcion2
>
> 103                                        109         Descripcion3
>
> 104
>
> 106
>
> 110
>
> 121
>
>
>
> Y con DataSets, todos los ítems tienen que tener correspondencia en la
> relación, que no es mi caso.
>
> Ya sé que una solución sería recorrer oDt2 y fijarme que no esté en oDt1,
> pero quiero saber si lo puedo hacer por algo que sea más rápido o de mejor
> performance, ya que este factor es crítico.
>
>
>
> Desde ya muchas gracias.
>
> Saludos,
>
> * *
>
> *Julio E. Szabo*
>
> Consultoría
>
> [email protected] <[email protected]>
>
> tel.: +54 (351) 423 7176
>
> cel.: (+54 9) (351) (15) 5 556048
>
> [image: Compañía de Tecnologías Latinoamericana]<http://www.ctlcorp.com.ar/>
>
> *AVISO: El presente mensaje y los archivos adjuntos que incluya pueden
> contener información confidencial de uso exclusivo del destinatario
> indicado. Cualquier uso en desacuerdo con su propósito, difusión o
> publicación, total o parcial, se encuentra prohibida. Si recibió este
> mensaje por error, rogamos reenviarlo al emisor y destruir las copias
> impresas o grabadas en su sistema.** *
>
>
>
>
>
>
>
>
>
>
>

<<image001.gif>>

Responder a