Foros del Web » Programando para Internet » ASPX (.net) »

combinacion de tablaadapters

Estas en el tema de combinacion de tablaadapters en el foro de ASPX (.net) en Foros del Web. hola amigos del foro mi duda es la siguiente, cree un dataset el cual contiene tres tablaadapters diferentes, estos estan ligados, mi pregunta es la ...
  #1 (permalink)  
Antiguo 26/04/2006, 11:31
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
combinacion de tablaadapters

hola amigos del foro mi duda es la siguiente, cree un dataset el cual contiene tres tablaadapters diferentes, estos estan ligados, mi pregunta es la siguiente es posible crear un query general que involucre los tres tablaadapters para obtener una informacion especifica, cualquier sugerencia es recividad.
  #2 (permalink)  
Antiguo 26/04/2006, 11:48
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola lilico, no se bien bien cual es tu intención, pero sobre este tema:

Si haces la SELECT con INNER JOINs acabarás recibiendo una unica tabla con muchos campos que representará un único DataTable (1 DataAdapter)

Si haces la SELECT de cada una de las tablas por separado, tendrás 3 DataTables, luego creas DataRelations entre los DataTables, y puedes trabajar con el DataSet directamente, obtener filas Hijas, etc... (3 DataAdapters)

Si esto no ha ayudado. Explicate un poco más.
Saludos lilico.
__________________
..:: moNTeZIon ::..
  #3 (permalink)  
Antiguo 26/04/2006, 12:20
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
ok amigo, lo qe estoy haciendo es que estoy creando dataadapters de diferentes origenes de datos y los combino en un data set,ya los tengo ligados, ejemplo:

dataadapter1.-tengo los nombre
dataadapter2.-tengo los apellidopaterno
dataadapter3.-tengo los apellidomaterno

todo esto esta dentro d eun dataset, lo que quiero hacer es poner un gridview en donde me muestre los nombres completos, pero no se como hacer esto.
  #4 (permalink)  
Antiguo 27/04/2006, 01:21
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Lo primero que se me ocurre es que recorras las Tablas de ese Dataset y vayas formando un origen de Datos nuevo con la estructura que quieres que tenga el Datagrid.

Otra opcion, mejor, sería que cuando haces la SELECT utilices INNER JOIN para enlazar varias tablas y así poder sacar la combinacion de campos que necesitas, en el orden que necesites. El resultado sería el origen de datos que enlaces con tu datagrid. Esto siempre y cuando no necesites tener las tablas por separado en tu dataset... Como ves, hay varias opciones..

Saludos.
__________________
..:: moNTeZIon ::..
  #5 (permalink)  
Antiguo 27/04/2006, 10:16
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
ok amigo entiedo tu punto de vista, pero el motivo que hago esto es que donde laboro tiene bases de datos en mysql y en sqlserver, y lo que quiero hacer es tomar tablas de una base de sqlserver y mysql y combianarlas dentro de un dataset y poder manipular, realizar una sentencia sql en donde combien las dos tablas dentro del datase y obtener una informacion especifica, si tienes un ejemplo de esto pasamlo porfavor, gracias por leer esto.
  #6 (permalink)  
Antiguo 27/04/2006, 10:24
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
mmm... No tengo un ejemplo de esto.
Si ya tienes todos los datos de las distintas BDs en un mismo Dataset, y ya están relacionados los DataTables... Puedes recorrer el Dataset, extrayendo la información necesaria, metiéndola en un nuevo origen de datos que sea el que enlazarás con el Grid.

Quizá tengas la posiblilidad de enlazar directamente el Dataset que ya tienes, sin tener que perder este tiempo de recorrer el Dataset entero. Para hacerlo de esta forma no puedo ayudarte mucho, pero se que podrías crear un campo calculado en el datatable de los nombres, que sea el nombre + apellidospaterno + apellidomaterno (Accediendo a los dos últimos mediante una relacion del dataset). Y finalmente, éste es el campo que enlazas con la columna del Grid.

Suerte lilico!
__________________
..:: moNTeZIon ::..
  #7 (permalink)  
Antiguo 27/04/2006, 10:40
 
Fecha de Ingreso: abril-2006
Mensajes: 40
Antigüedad: 18 años
Puntos: 0
Lo que puedes hacer es usar un solo adapter, y especificar un commando de seleccion para cada tabla o consulta que quieres obtener.

Utiliza un OleDbDataAdapter y crea un commando para cada base de datos le asignas una coneccion diferente, solo tendras que constrir la cadena de coneccion respectiva a cada base de datos, sea oracle, mysql, sqlserver o cual sea, SqlDataAdapter es solo para bases de datos sql lo cual no es el caso.

algo similar a esto.
Código:
vb.net
Dim oleAdapter As New OleDbDataAdapter
Dim oleConnectionSQLServer As New OleDbConnection("Provider=MySqlProv.3.0;...;.etc..;...;")
Dim oleConnectionMySQL As New OleDbConnection("Provider=SQLOLEDB.1;...;.etc..;...;")
Dim ds As New DataSet
'Construye la estructura del dataset con relaciones y demas o crea un dataset tipeado
'Imagino que debe de haber un campo para relacionar las dos tablas en este caso id, crea un relacion entre las tablas con el ID

With oleAdapter
	.SelectCommand = New OleDbCommand("select id,nombre from clientes", oleConnectionMySQL)
	.Fill(ds, "TableNombre")
	.SelectCommand = New OleDbCommand("select id,nombre from clientes", oleConnectionSQLServer)
	.Fill(ds, "TableApellidos")
End With
Despues utiliza el metodo
Código:
Dim rows() As DataRow = ds.Tables("TableNombre").Rows(0).GetChildRows("Relacion")
'En rows esta el apeelido relacionado al nombre
espero te sirva.

Un saludo!.
  #8 (permalink)  
Antiguo 27/04/2006, 10:56
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
ok amigo deja lo checo
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 15:30.