TODOPIC
Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: Marioguillote en 23 de Julio de 2006, 12:09:16
-
Hola a todos.
Estoy aprendiendo en simultáneo, VB6 y Protón+ y a veces, a los que ya pasamos cierta edad se nos enredan mucho las neuronas ..... y se traban ...... y no salen las cosas.
Tal vez sea tonta la consulta, pero a mí no me sale.
Estoy haciendo una aplicación en VB6, donde logro armar un formulario que posee un LISTVIEW y quiero que tenga dos botones; IMPRIMIR y SALIR, ya que a veces sólo necesito controlar y ver que hay en el LISTVIEW, pero hay veces que necesitaría imprimirlo.
Por ahora estoy armando una planilla a mano, pero quisiera poder imprimir lo que veo en pantalla.
Logro seleccionar los datos que necesito para el LISTVIEW, sacándolos de una base de datos de access, me salen en la pantalla de forma impecable ..... todo bárbaro, pero cuando mando a imprimir el form ..... nada ... el hueco vacío.
La pregunta concreta es esa, cómo se hace para que se imprima junto con el resto del form, el contenido del LISTVIEW.
Espero me puedan ayudar y disculpen si la consulta es muy tonta, pero no me doy cuenta como hacerlo.
Si es necesario subo un ejemplo sencillo de cómo genero el form con el LISTVIEW, sacado de la tabla de access.
Gracias.
Mario
-
Amos a ver si consigo explicarme...
Lo que ocurre es que la opcion de imprimir formulario de VB solo es accesible desde el modo de diseño. Esto te provoca que al no disponer de los datos en ese modo no te aparezcan.
Tu solucion es programar una rutina para imprimir el formulario en tiempo de ejecucion que es cuando el list esta llenito de datos.
Esto se puede hacer de varias maneras pero lo mas simple es ir recorriendo el indice de la lista en unu bucle e ir imprimiendo donde necesitres uno tras otro.
Otra cosa sera que necesites tambien imprimir el resto de elementos mostrados en el form con lo cual tendras que hacerlo a pelo elemento por elemento.
Te podria servir la opcion imprimir pantalla y guardar el resultado en una imagen para despues mandarla a imprimir, pero solo te valdria si la listview no tiene scroll y auq el print screen solo te tomaria los datos visibles...
No se si me explico con claridad, pero si tienes dudas ya sabes, por aqui andamos...
Saludos desde Cadiz
-
Hola kokorski:
Gracias por responderme.
Vamos por parte.
Lo que ocurre es que la opcion de imprimir formulario de VB solo es accesible desde el modo de diseño. Esto te provoca que al no disponer de los datos en ese modo no te aparezcan.
Eso lo entiendo, creo.
Puedo imprimir formularios con Labels que toman valores de algunas variables y eso es retenido todo el tiempo mientras imprime ..... En el caso del listview, cuando va por la segunda fila, los datos de la primer fila ya no existen, están sólo ahí en pantalla para verlos y nada más.
Eso se relaciona con esto otro que me escribís:
Te podria servir la opcion imprimir pantalla y guardar el resultado en una imagen para despues mandarla a imprimir, pero solo te valdria si la listview no tiene scroll y auq el print screen solo te tomaria los datos visibles...
Creo que entiendo.
Sobre esto otro:
Esto se puede hacer de varias maneras pero lo mas simple es ir recorriendo el indice de la lista en unu bucle e ir imprimiendo donde necesitres uno tras otro.
Traté de hacerlo dentro del bucle que recorre la base de datosal momento de armar la listview, pero no me salió, no funcionó.
Lo que estoy tratando de hacer ahora es, en la aplicación VB, colocar un botón que active lo siguiente.
En la base de datos de Access (de donde saco los datos para el listview) hago una "CONSULTA" donde selecciono las filas de la base de datos y luego con eso creo un "INFORME" muy elegante muy prolijito.
El problema que tiene esto es que cada vez que quiero obtener el listado debo borrar lo impreso anteriormente, porque si no lo borro, me vuelve a salir (por el hecho de estar en la base de datos) en la consulta de por ejemplo, hoy.
En la consulta de hoy, me sale lo de ayer y lo de más atrás también, entonces, debo borrar todo lo anterior para que sólo salga en el informe impreso lo de hoy.
Y yo no quiero que se me borre nada de la base de datos.
Lo que tal vez deba hacer (estoy pensando a medida que escribo), que debiera copiar la DB en otro lado y a esa otra DB achurarla y borrarle todo lo que necesite para general el listado de hoy ........total ...... a la original la sigo conservando....
Que lío .....
Gracias por ayudarme kokorski, veré como puedo solucionar esto.
Saludos desde Argentina
Mario
-
El hecho de que no te actualize los datos es simple. Por lo que dices no estas regemerando el contenedor de datos cada vez que ejecutas el boton de imprimir.
Deberias inicializar el contenedor definiendolo completamente cada vez que lo vas a usar y descargandolo de memoria en cuanto termines con el.
Para ello genera una consulta SQL del tipo "Select * from [DAto] where fecha = hoy" y cada vez que le hagas un refresh al contenedor de datos que uses te tomara los datos que cumplan la condicion.
No olvides tambien refrescar los datos mostrados en el listview
Saludos