Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Mostrar Datos De Diferentes Tablas En Un Tableview
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Mostrar Datos De Diferentes Tablas En Un Tableview 
 
Hola.

Tengo que mostrar diferentes tablas en un tableview para luego imprimirlos.

Lo estoy haciendo con el evento data con algo como esto:

Public Sub TableView1_Data(Row As Integer, Column As Integer)
  
Result.MoveTo(row)
TableView1.Data.Text = result[Column]
If Row Mod 2 = 0 Then TableView1.Data.Background = Color.LightBackground
 
End


esto me muestra los datos de la tabla que hay en la consulta result, pero tengo que cambiar de tabla con
un for next y seguir imprimiendo en el mismo table los datos de la siguiente tabla.

La consulta a la tabla se realiza mediante un combobox que contiene las tablas de la base.

Recorro el combo con un for nex regogiendo los datos con su index y pasandoselos a la consulta.

Result.hcon.Exec("Select " & ql2 & " from " & combobox.text & "")  ' sql contiene los campos a imprimir que los selecionas de una lista


el problema es que al cambiar la consulta y rellenar el tableview me machaca los datos de la anterior tabla.

Voi incrementando el numero de rows a medida que realizo las consultas.

TableView1.Rows.Count = TableView1.Rows.Count +result.Count + 1 ' pongo +1 por que quiero una separación entre los datos de las tablas


que debo poner en el evento data para que me siga escribiendo despues del ultimo row?

poniendo result.movenext en el evento data me dibuja los rows pero sin datos

El código entero:

Public Sub MostrarDatos_Click()
  
  Dim i As Integer
  Dim ql2 As String
  Dim campo As Integer
  Dim c As Integer

  TableView1.clear
 
  TableView1.Header = 1
  TableView1.Columns.Count = Lista2.count
  TableView1.Rows.Count = 0
  
    For i = 0 To lista2.Count - 1
 Lista2.index = i
     If i > 0 Then
      ql2 = ql2 & ", " & Lista2.Text
    Else
      ql2 = ql2 & Lista2.Text
    End If
    TableView1.columns[i].Title = lista2.text
    TableView1.Columns[i].width = Campos(campo) ' esto coje de una funcion los valores de la anchura de los campos
  Next ' i
  
  For c = 1 To combotabla.count
    
   combotabla.Index = c
   ini.v = ini.hcon.Exec("Select " & ql2 & " from " & combotabla.text & "")  
  TableView1.Rows.Count = TableView1.Rows.Count + ini.v.Count + 1

  
  Next ' c
  
  
  frame1.enabled = True
  TableView1.show
  
End


gracias.
 



 
pittusa - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mostrar Datos De Diferentes Tablas En Un Tableview 
 
no entiendo bien ¿quieres mostrar datos de dos tablas en un tableview? ¿Cual es el problema? Tu ya sabes hacer una consulta y rellenar con ella el tableview ¿Por qué no haces una consulta que saque datos de dos tablas y rellenas con ella un tableview?

SELECT A.nombre, A.cif, B.factura, B.fecha, B.Importe, B.Iva, B.Total
FROM clientes A INNER JOIN facturas B
ON A.cif=B.codigocliente
ORDER BY A.nombre

Esto coge la tabla clientes y la tabla facturas. Aquellos clientes que no tengan factura se deshechan. Los que tengan factura se muestra un registro donde aparecen datos del cliente y datos de su factura. Para saber que factura corresponde a cada cliente se le dice que el cif en la tabla clientes corresponde al código de cliente en la tabla de facturas.

Solo hay que llenar el tableview con ese código.

Hay muchas mas opciones para hacer consultas que cogen datos de varias tablas. Por ejemplo quizá quisieras que salieran todos los clientes aunque no tengan facturas o que salieran todas las facturas aunque no tengan clientes, ..., etc ese es un pequeño mundo. Hubo un tiempo en que yo trabajaba en datawarehouse y había querys que tenían miles de lineas mezclando tablas de nombres imposibles con centenares de campos y había que encontrar un puto error en alguna parte. Una pesadilla vamos. Generalmente se acababa antes sacando la estructura y buscando un error lógico o haciéndola de nuevo que recorriendo campo a campo. Un coñazo donde los haya.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mostrar Datos De Diferentes Tablas En Un Tableview 
 
Hola Soplo.

Que bien! que fácil.

Haber.. tengo una base de datos con 120 tablas de Articulos. Cada Articulo es una tabla y todas
tienen exactamente los mismos campos, (Detalle, Ref, Precio_venta, Precio_Compra, Stock y Proveedor)

Lo que quiero es un listado de todos los productos y sus campos completo.(Mostrar todo)

Lo vamos a poner mas fácil.. Como harías tu, la consulta en gambas con sqlite de solo tres Artículos?

Por ejemplo: Slect Detalle, Ref, Preci_venta, Precio_Compra, Stock, Proveedor from Disolventes, Lacas, Resinas

Como lo hago? por que ya estoy harto de probar con inner join y no hay manera.

La base de datos ya estaba echa en sqlite, el problema es que cuando quieren imprimir los artículos,
tienen que ir imprimiendo tabla por tabla.

Gracias por todo.  
 



 
última edición por pittusa el Domingo, 15 May 2011, 00:06; editado 1 vez 
pittusa - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mostrar Datos De Diferentes Tablas En Un Tableview 
 
pittusa escribió: [Ver mensaje]
Hola Soplo.
 tengo una base de datos con 120 tablas de Articulos. Cada Articulo es una tabla y todas
tienen exactamente los mismos campos, (Detalle, Ref, Precio_venta, Precio_Compra, Stock y Proveedor)


Eso es lo que se llama un mal diseño de la base de datos. Para mí eso está mal.

Lo normal sería tener una tabla de artículos (con los campos ID, Artículo) y otra de Propiedades (ID, Detalle, Ref, Precio_venta, Precio_Compra, Stock y Proveedor) y relacionarlas entre sí por el ID del artículo. Entonces lo que dice soplo te funcionará perfectamente.
Incluso se podría hacer en una sola tabla... no sé, depende de tus necesidades, pero nunca una tabla por cada artículo  ¡es de locos!

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mostrar Datos De Diferentes Tablas En Un Tableview 
 
Escucha lo que te dice Jguardon que como de constumbre tiene mucha razón.

Cuando diseñas una base de datos tienes que pensar bien como organizarla para que el acceso a la información sea eficiente. El diseño de bases de datos es una cuestión de analistas pero en tu caso podemos prescindir de todos esos conceptos  genericos e ir al grano.

Por cada cosa (entidad) tienes que tener una tabla y solo una. Cada registro de esa tabla con una clave única que permita identificar ese registro de forma inequívoca.

Eso significa que si tu quieres hacer una gestión de compras y ventas para empezar necesitas clientes, proveedores, facturas de compra y facturas de venta. Ahora deberías analizar si puedes meter a los clientes y proveedores en la misma tabla y poner un campo que identifique si es cliente o proveedor. Puedes hacer lo mismo con las facturas, quizá necesites una tabla de facturas de ventas y otra de factura de compras o quizá te puedas apañar con la misma poniendo un campo que identifique compras y ventas. Mi consejo en ese caso sería tener clientes y proveedores en tablas diferentes y facturas de compra y venta en tablas diferentes también.

Ahora piensas que campos necesitas guardar de un cliente. Esos campos te definen al cliente, pero necesitas un campo que será un código de cliente y no será repetido. Lo mismo para los proveedores.

Ahora piensas las facturas de ventas. En una factura hay unos datos generales (datos de cliente, fecha, numero de factura, importes totales, impuestos) Eso es lo que va en la tabla de facturas y su código único que identifica cada factura. Los datos de clientes no los repites, solo metes el código del cliente. Con ese código ya puedes identificar cualquier dato de cliente que necesites haciendo una consulta como te mostré antes.

Pero en las facturas hay otra cosa mas. Hay unas líneas de detalle. Esas líneas son otra entidad. No son la factura, son una característica de la factura (igual que lo es el cliente). como es una entidad diferente necesitas una tabla de lineas de factura. Cada ergistro con concepto, precio unitario, cantidad, importe y el código de la factura a la que corresponde. Como siempre en cada entidad creas un campo de código único para cada línea de detalle.

De esa manera cuando quieres sacar por ejemplo un listado de facturas haces
SELECT C.*, F.* FROM clientes C INNER JOIN facturas F
ON C.codigo=F.codigocliente
WHERE ...
ORDER BY ...

Y con eso tienes toda la información general de la factura excepto las lineas de detalle. Si quieres también las lineas de detalle haces
SELECT C.*, F.*, L.* FROM clientes C INNER JOIN facturas F
ON C.codigo=F.codigocliente
LEFT JOIN LineasFactura L
ON F.codigo=L.CodigoFactura
WHERE ...
ORDER BY ...

Es decir ahora conectas tres tablas y tienes una única consulta que tiene toda la información que necesitas.

Nota, el * significa que "todos los campos"

 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mostrar Datos De Diferentes Tablas En Un Tableview 
 
creo que entendí
el problema no parece ser de sql o de diseño de la base

Result.hcon.Exec("Select " & ql2 & " from " & combobox.text & "")  ' sql contiene los campos a imprimir que los selecionas de una lista


tiene 3 tablas iguales y quiere hacer varias consultas y que estas se añadan al mismo  tableview
por el diseño de su database el inner join no sirve

y no a probado quitar el
TableView1.clear
 

o moverla a otro boton  de modo que cada vez que presione el boton no  limpie la tableview cada vez que presiona MostrarDatos

de todos modos el boton MostrarDatos tiene mucho codigo de inicializacion del table que resetea el tableview  cada vez que presiona MostrarDatos

creo que debera reescibirlo para que funcione correctamente



Public Sub MostrarDatos_Click()
 
 Dim i As Integer
 Dim ql2 As String
 Dim campo As Integer
 Dim c As Integer

 TableView1.clear

 TableView1.Header = 1
 TableView1.Columns.Count = Lista2.count
 TableView1.Rows.Count = 0

 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mostrar Datos De Diferentes Tablas En Un Tableview 
 
Me lo imaginaba.

Cualquiera hace otra base de datos con todos los artículos.

Intentare arreglarlo como pueda.

Gracias por todo.
 



 
pittusa - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mostrar Datos De Diferentes Tablas En Un Tableview 
 
pittusa escribió: [Ver mensaje]
Me lo imaginaba.

Cualquiera hace otra base de datos con todos los artículos.

Intentare arreglarlo como pueda.

Gracias por todo.


Te conviene mucho rediseñar la base de datos. Sólo son 120 artículos, según explicaste, así que en un rato lo tienes.

Por cierto, si no lo conocéis, yo estoy usando para sqlite un plugin de Firefox que se llama SQLite Manager y va muy bien, se integra perfectamente y sólo son 230Kb:

https://addons.mozilla.org/es-ES/firefox/addon/sqlite-manager/


Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mostrar Datos De Diferentes Tablas En Un Tableview 
 
Yo lo que haría es crear una tabla nueva copia de las otras.
Luego haces un pequeño programita que abra las 120 tablas una a una lea todo y lo copie a la tabla nueva. No le llevará ni un segundo. Para tí son un for next dentro de otro.

Cuando veas la tabla nueva con todos los datos metidos modificas el programita anterior para que en vez de leer las tablas viejas las borre.

Luego tendrás que modificar tu programa pero bueno ... será para que las cosas sean mas fáciles no menos. Si tienes dudas pregunta pero mi consejo es que no intentes atajos. Copiar todos los datos a una tabla, borrar las tablas viejas y poner tu programa a punto.

Si hubieras preguntado antes te habrías ahorrado ese trabajo. Cuando no sepas como plantear algo pregunta hombre que contarlo no cuesta nada pero corregir errores si que cuesta.

 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mostrar Datos De Diferentes Tablas En Un Tableview 
 
Jesús, gracias por el link a la extensión del FireFox. No la conocía y es cojonuda... perdón, maravillosa.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Mostrar Varias Tablas En Grid pittusa Bases de Datos 2 Lunes, 02 Agosto 2010, 11:17 Ver último mensaje
ahtonio
No hay nuevos mensajes MySQL - Mostrar Registros Coincidentes Ent... estrella_de_galicia Bases de Datos 1 Martes, 10 Agosto 2010, 08:31 Ver último mensaje
shordi
No hay nuevos mensajes Se Puede En Una Grilla Mostrar Los Datos D... metalgearxd General 5 Jueves, 28 Febrero 2013, 20:54 Ver último mensaje
shordi
No hay nuevos mensajes Herramienta Para Mostrar Graficamente Las ... jsbsan Bases de Datos 9 Jueves, 05 Marzo 2015, 21:58 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron