Autor Tema: Consulta con detalles  (Leído 7639 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Consulta con detalles
« en: Diciembre 26, 2013, 03:22:31 pm »
Hola quiero hacer un tipo reporte pero guardarlo en un txt

Esta forma. (Screen)


Tengo una tabla ventas todos los datos esta guardado en la mima tabla.

Código: (SQL) [Seleccionar]
CEDULA | CLIENTE | NFACTURA |
Lo que quiero es recorrer por cada cedula de cliente poner como encabezado y abajo mostrar todas las facturas que compro ese cliente. al terminar eso crea otro encabezado y vuelv a listar toda la factura de ese cliente y asi sucesivamente hasta listar todo.

EJEMPLO EN EL TXT (SCREEN)

CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Consulta con detalles
« Respuesta #1 en: Diciembre 26, 2013, 05:51:12 pm »
Amigo, yo no entendi cual es exactamente tu inquietud. ¿Leer el archivo txt?¿mostrarlo en un reporteador a partir del txt?
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Consulta con detalles
« Respuesta #2 en: Diciembre 27, 2013, 01:20:34 pm »
Tengo este codigo pero solo me estira la cedula y el nombre, lo que no se es como estirar una cedula y despues las facturas que tiene el cliente. al estirar toda las facturas estirar la otra cedula del cliente y volver a estirar todas las facturas de ese cliente.

Private Sub Command1_Click()

    Open "C:\FACTURA.TXT" For Output As #1
   
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
    '// Conectar la Base Datos con ADO
        Call ConectarADO
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
       
        StrSQL = "SELECT * FROM VENTAS WHERE cedula='3230148'"
        rsADO.Open StrSQL, cnADO, adOpenStatic, adLockOptimistic, adCmdText
       
        Do Until rsADO.EOF
            With rsADO
                Print #1, Tab(1); .Fields("cedula"); Tab(20); .Fields("NOMBRE")
                rsADO.MoveNext
            End With
        Loop
   
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
    '// Cerrar la base de datos y liberar la memoria
        Call CerrarADO
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

End Sub
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Consulta con detalles
« Respuesta #3 en: Diciembre 27, 2013, 03:11:12 pm »
¿estirar? esa es nueva.

Te habia escrito una respuesta pero luego te volvi a leer y recien creo que te estoy entendiendo. Creo que lo que tu buscas es tener un archivo txt de presentacion para enviar por correo o lo que fuere, de tal manera que alguien abra y vea esa info sin mayor formateo.

En tu query tu buscas a un cliente y solo extraes la cédula (¿ya para que si la tienes?) y el nombre supongo del cliente. ¿como obtienes las facturas si no la pides?. Luego en el primer ejemplo pusiste una captura que supone es una lista de clientes con sus facturas.... Asumiré que es un ejemplo.

Dos formas:
1.- Tendrías que hacer una consulta jerárquica, donde en el detalle tengas las facturas quebradas por el campo relacion que imagino es la cédula. Solo tienes que recorrer la consulta jerarquica y a su detalle, si esto es lo que quieres me avisas para pasarte código, lo que pasa es que no me quiero a echar a buscar codigo porque aun estoy deduciendo lo que quieres.

2.- Haces dos consultas y las recorres individualmente armando tu txt.

¿Cual quieres?.... o ninguna de ellas.

Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Consulta con detalles
« Respuesta #4 en: Diciembre 27, 2013, 03:40:27 pm »
1.- Tendrías que hacer una consulta jerárquica, donde en el detalle tengas las facturas quebradas por el campo relacion que imagino es la cédula. Solo tienes que recorrer la consulta jerarquica y a su detalle, si esto es lo que quieres me avisas para pasarte código, lo que pasa es que no me quiero a echar a buscar codigo porque aun estoy deduciendo lo que quieres.

Esto es lo que quiero amigo. Puse solo una consulta solo de la cedula no se me ocurre otra manera donde meter la consulta de las facturas.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Consulta con detalles
« Respuesta #5 en: Diciembre 27, 2013, 05:10:36 pm »
Hola doc, me agarras de salida, vuelvo a la noche y te puedo armar todo el ejemplo, pero básicamente lo solucionaría con esto:

http://leandroascierto.com/foro/index.php?topic=1197.0

Y luego recorres el detalle con esto:

Dim rsDet As Variant
   rsDet = rsCD("Detalle")
   While Not rsDet.EOF
       Debug.Print rsDet(0), rsDet(1), rsDet(2) etc etc
       rsDet.MoveNext
   Wend

Si te queda time pa la noche te armo todo el rollo.

Saludos
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Consulta con detalles
« Respuesta #6 en: Diciembre 27, 2013, 05:43:30 pm »
Gracias amigo lo resolvi asi:

Código: (VB) [Seleccionar]
Private Sub Command1_Click()
   
    Dim lngGroupID  As Long
    Dim lngID       As String

    Open "C:\FACTURA.TXT" For Output As #1
   
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
    '// Conectar la Base Datos con ADO
        Call ConectarADO
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
       
        MySQL = "SELECT * FROM ventas GROUP BY cedula"
        rsADO.Open MySQL, cnADO, adOpenStatic, adLockOptimistic, adCmdText
       
        If ADORecordCount(rsADO) Then
                   
            Do
               
                lngID = rsADO.Fields("cedula")
                lngGroupID = lngGroupID + 1
               
                    Print #1, Tab(1); "CEDULA: " & rsADO.Fields("cedula"); Tab(20); "NOMBRE: " & rsADO.Fields("nombre")
               
                    MySQLaux = "SELECT * FROM ventas WHERE cedula='" & lngID & "' GROUP BY nfactura"
                    rsAux.Open MySQLaux, cnADO, adOpenStatic, adLockOptimistic, adCmdText
                                       
                    If ADORecordCount(rsAux) Then
                                                 
                       Do
                          Print #1, Tab(1); rsADO.Fields("nfactura"); Tab(20); rsADO.Fields("fecha")
                          rsAux.MoveNext
                       Loop Until rsAux.EOF
                       
                    End If
                   
                    rsAux.Close
   
                rsADO.MoveNext
                                   
            Loop Until rsADO.EOF
           
           
        End If
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
    '// Cerrar la Base Datos y liberar la memoria
        Call CerrarADO
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
   
End Sub

Funciono de maravillas.....
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Consulta con detalles
« Respuesta #7 en: Diciembre 27, 2013, 09:14:03 pm »
Si, esa es la segunda forma, lo unico malo de esto es que haces un select por cada loop, si tus datos son pocos no habra retrasos importantes.
Me encuentras en YAcosta.com

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Consulta con detalles
« Respuesta #8 en: Diciembre 28, 2013, 05:29:05 pm »
Estimado Yván: en el ejemplo que está en el enlace al que hacés referencia en el post anterior utilizás DataReport. ¿Cómo se haría para recorrer el recordset con el objeto de llenar un ListView en lugar de emplear el DR?
Muchas gracias.

Jerónimo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Consulta con detalles
« Respuesta #9 en: Diciembre 28, 2013, 06:25:18 pm »
Uuu estimado, en mi vida visualero hay algunas cosas que nunca o casi nunca hice, una de ellas es por ejemplo utilizar el control ListView, jamas en ninguno de mis proyectos lo he usado puesto que no lo he necesitado, entonces no sabría decirte como usarlo.

Supongo que si el Lisview permite ser poblado por una consulta jerarquizada podrías usar el recordset, por alli alguien pueda decirnos como usar un recordset jerárquico en un Listview. Con el que si se puede es con el control MSHFlexGird porque ese control si es jerárquico.
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Consulta con detalles
« Respuesta #10 en: Diciembre 28, 2013, 06:59:00 pm »
No no, amigo yo no quiero mostrarlo en el ListView. solo quiero guardar en un txt y nada. Queria bajar el ejemplo que subiste pero ya no funciona el link.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Consulta con detalles
« Respuesta #11 en: Diciembre 28, 2013, 07:03:51 pm »
No no, amigo yo no quiero mostrarlo en el ListView. solo quiero guardar en un txt y nada. Queria bajar el ejemplo que subiste pero ya no funciona el link.

No Enter, Jeronimo se refiere al otro post, claro hubiera quedado mejor hacer la pregunta del ListView en el otro post  :-)

Enter, el otro post ya esta actualizado el enlace, es un archivito pequeño, pero OJO ese ejemplo no tiene el tema de acceder al detalle, ya no lo hice porque tu publicaste que ya lo resolviste este problema y te funcionó de maravillas jeje. En todo caso me dices y lo hago.

Saludos
Me encuentras en YAcosta.com

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Consulta con detalles
« Respuesta #12 en: Diciembre 28, 2013, 07:14:09 pm »
Puede ser lo que decís, Yván, en cuanto a que habría estado mejor que hiciera la pregunta en el otro post. Pero como ese post es de hace mucho tiempo no quise revivirlo por una consulta breve que venía a cuento porque lo incluiste en un post en este hilo. Por eso escribí
...en el ejemplo que está en el enlace al que hacés referencia en el post anterior...
En cuanto al ListView, me pasa lo contrario a vos: siempre lo utilizo porque nunca le presté atención al DataReport. Supongo que es hora de que empiece a investigarlo.
Saludos.

Jerónimo


YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Consulta con detalles
« Respuesta #13 en: Diciembre 28, 2013, 07:27:02 pm »
El que se confundio es mi pata Enter...

En realidad y si checas bien, el tema no tiene que ver con el datareport de forma especifica, el tema tiene que ver con el recordsert realmente ya que hablamos de un recordset jerárquico (e incluso simple porque se pueden crear mas niveles) y no un recordset plano, una vez que el recordset esta cargado ya es otro tema donde lo poblamos, si es en un control o en un reporteador.
« última modificación: Diciembre 28, 2013, 07:28:56 pm por YAcosta »
Me encuentras en YAcosta.com

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Consulta con detalles
« Respuesta #14 en: Diciembre 28, 2013, 07:33:49 pm »
Sí, sí, había entendido eso a partir de tu explicación anterior. Solo comenté, como dato de color, que nunca había usado el DataReport.
Nunca vi que se pudiera poblar un ListView con un recordset, pero debo investigar bien, porque no lo conozco en cada detalle. Veré si hay manera de manipular el recordset jerárquico para emplearlo con el LV. Si no, será una indicación más de que debo comenzar a explorar el DataReport.
Muchas gracias.

Jerónimo