Infomre condicionado.

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • Infomre condicionado.

    Buenas compañeros:

    Estoy realizando un informe sobre la cantidad de pacientes por estatus(1-abierto, 2- cerrado, 3- anulado, 4- perdido) en la sala de urgencia por rango de fecha( desde-hasta), al principio habia realizado una vista de la tabla de atencion, me muestra por estatus 1,2,3,4 cuantos pacientes hay por cada estatus, pero muy global sin evaluar el rango de fecha; AHORA NESECITAN QUE LA INFORMACION SALGA POR RANGO DE FECHA EJEMPLO (01/01/2015 HASTA EL 31/01/205), por sql me da la informacion a la hora de pasar a data report no me funciona, y adicional el estatis debe decir la palabra no el numero, hice una funcion para convertir el numero a texto.

    Código:
     sql
    SELECT    Diag_status AS ESTATUS, COUNT(Pk_id_diagnostico) AS ATENCION
    FROM         Tbl_Registro_Atencion
    where Diag_fecha_datos BETWEEN '06/01/2015' AND '06/03/2015'
    GROUP BY Diag_status
    ORDER BY Diag_status
    asi funciona pero data report me da error.

  • #2
    Re: Infomre condicionado.

    Estimado, ya tienes bastante tiempito con nosotros y ya sabes que no somos adivinos (broma con mensaje serio)
    ¿Cual es el error que te arroja el DataReport?.

    Saludos y a la espera del mensaje de error (sin interpretacion, escribelo tal cual o haz una captura de pantalla).
    --------------------------------
    Si eres agradecido, obtendrás más...

    YAcosta

    Comentario


    • #3
      Re: Infomre condicionado.

      Disculpa compañero estaba enredado sobre donde realizar la consulta para mostrar la informacion el error no es en datareport es desde el sql ya estoy resolviendo la consulta para montarla al datareport, gracias compañero.

      Comentario


      • #4
        Re: Infomre condicionado.

        Buenas compañeros ya tengo el informe completo, pero estoy tratando de hacer algo y me manda un error en el objeto yo tengo un campo que se llama ESTATUS es de tipo nvarchar contiene el codigo de cada estatus (1-Abierto, 2-Cerrado, 3-Anulado, 4-Perdido), pero deseo mostrar la palabra no el numero, hice una funcion para hacer la conversion pero cuando la asigno me dice que no puede asignar eso al objeto yo le habia echo antes con canpos lbl en el data report pero con canpos txt no, he estado buscando pq pasa eso pero no encuentro respuesta, puede ser pq el campo esta la seccion 1 del reporte RptTextBox.

        Comentario


        • #5
          Re: Infomre condicionado.

          Puedes crear un array "TxtEstatus(3)" con los valores "Abierto, Cerrado, Anulado, Perdido" y poner en la Seccion 1 en lugar del campo Estatus, el elemento TxtEstatus( Estatus - 1);
          o bien IIf (Estatus = 2, "Abierto", IIf( Estatus = 2, "Cerrado", IIf (Estatus = 3, "Anulado", IIf (Estatus = 4, "Perdido"))))
          José María Movilla Cuadrado
          ______________________
          Normas del foro
          www.foro.vb-mundo.com
          www.vb-mundo.com

          Comentario


          • #6
            Re: Infomre condicionado.

            Buenas compañeros: ya no se donde esta mi error si en el datareport o en sql, esa condicion de fechas es lo que me revienta todo como debo condicionar por las fechas en el rango de busqueda (fecha1, fecha2), la consulta general del sql me funciona pero al momento de pasarla a vb6 con los datapicker y asociarla al reporte no me agrupa ya no se que hacer o como hacer una vista completa que me permita poder condicionar al momento de llamarla.

            Esta consulta funciona en SQL
            Código:
            SELECT   Diag_status AS ESTATUS ,COUNT(Pk_id_diagnostico) AS ATENCION
            FROM     Tbl_Registro_Atencion
            WHERE    Diag_fecha_datos BETWEEN '11/01/2015' AND '20/01/2015'
            GROUP BY Diag_status
            ORDER BY Diag_status
            esa condicion del where me tiene todo enredado.

            Esta en mi consulta Vb6
            Código:
            .Open "SELECT Diag_status as ESTATUS , COUNT(Pk_id_diagnostico) AS CANTIDAD 
            From Tbl_Registro_Atencion 
            where Diag_fecha_datos BETWEEN '" & Me.dtpdesde.Value & "' AND '" & Me.dtphasta.Value & "' 
            GROUP BY Diag_status 
            ORDER BY Diag_status", CONEXION_ADO, adOpenStatic, adLockOptimistic
            Pero el datareport es el problema, porque si pudiera establecer fecha en la vista, mi ultimo intento fue hacer una vista con los tres canpos (Estatus, Cantidad y fecha de registro) y hacer una consulta desde vb6 que me contara cantidad y agrupara estatus los datos del rango de fecha de busqueda pero no funciono AYUDA PORFA ??????? ESTOY DESESPERADO

            Comentario


            • #7
              Re: Infomre condicionado.

              Vamos por partes. Probaste la consulta sql??? OJO ¿La probaste???... Probar no es escribir el código SQL en tu manejador de bd y ver resultados, sino hacer esto:

              Código:
              miSQL = "SELECT Diag_status as ESTATUS , COUNT(Pk_id_diagnostico) AS CANTIDAD 
              From Tbl_Registro_Atencion 
              where Diag_fecha_datos BETWEEN '" & Me.dtpdesde.Value & "' AND '" & Me.dtphasta.Value & "' 
              GROUP BY Diag_status 
              ORDER BY Diag_status"
              
              .Open miSQL, CONEXION_ADO, adOpenStatic, adLockOptimistic
              Pones un punto de interrupcion en .Open miSQL... abres la ventana inmediato y pones: ?miSQL
              y le das enter, alli te saldra el contenido de como se armo el sql. Ese string lo copias y lo pegas en tu manejador de BD.
              Si obtienes resultado hay unos pasos a seguir
              Si no obtienes resultados hay otros pasos a seguir.

              Dino hasta alli ¿que obtuviste?

              Si te salteas esta pregunta es que estas siguiendo tus métodos y no puedo ayudarte y en ese caso dejare que colegas mas experimentados te ayuden.
              --------------------------------
              Si eres agradecido, obtendrás más...

              YAcosta

              Comentario


              • #8
                Re: Infomre condicionado.

                Disculpa compañero pero es en sql 2000.

                Comentario


                • #9
                  Re: Infomre condicionado.

                  A ver, creo que no me explique bien.

                  En tu IDE de VISUAL BASIC 6 modifica tu código para que la cadena SQL la tengas en una variable, cuando ejecutes el programa en modo depuración detienes la ejecución en el punto que te indique y mediante la ventana inmediato obtienes el contenido de esa variable (para asegurarnos de que se este formando correctamente), ese cadena obtenida la copias y la pegas en tu Manager del SQL 2000 y ejecutas la consulta y coméntanos que obtienes.
                  --------------------------------
                  Si eres agradecido, obtendrás más...

                  YAcosta

                  Comentario


                  • #10
                    Re: Infomre condicionado.

                    Disculpa compañero no habia conprendido, pero estube leyendo un poco ya hice lo que me pediste la variable me trae la consulta siguiente:
                    Código:
                    SELECT Diag_status AS ESTATUS, COUNT(Pk_id_diagnostico) AS CANTIDAD From Tbl_Registro_Atencion where Diag_fecha_datos BETWEEN '14/01/2015' AND '29/01/2015' GROUP BY Diag_status ORDER BY Diag_status
                    * Ya la probe en sql si me trae los datos.
                    Última edición por puchungon; 12-03-2015, 02:04 PM.

                    Comentario


                    • #11
                      Re: Infomre condicionado.

                      Ok perfecto, entonces si te trae datos el problema no esta en la consulta SQL ni en ninguno de los campos de esa consulta ni en la condición del where, eso ya esta superado.

                      Ahora, el resultado de esa consulta (sus registros) que lo tenemos en el recordset que no se su nombre porque tu nos muestras .Open puesto que estas usando un With, pero supongamos que se llama rs.

                      Ese rs lo asignas al datareport con esto.

                      Set MiReport.Datasource = rs

                      ¿Correcto?

                      Pregunta, ¿hasta allí tienes inconveniente?? o sea, la asignación te da problemas?

                      Hoy estoy de desarrollo todo el día, asi que entrare continuamente a ver tu respuesta.
                      --------------------------------
                      Si eres agradecido, obtendrás más...

                      YAcosta

                      Comentario


                      • #12
                        Re: Infomre condicionado.

                        Bueno esa asignacion del Rs como dices tu en que lugar s ehace dentro de codigo vb6 o en el mismo reporte, pq si es en el mismo reporte nos e mucho de programacion de un data report lo poco q se es porque e reporteador me ayuda.

                        en la seccion del reporte en programación solo tengo la direcion del informe:
                        Código:
                        Private Sub DataReport_Activate()
                        dtrImpresion_Ciclo.Orientation = rptOrientPortrait
                        End Sub
                        Última edición por puchungon; 12-03-2015, 07:42 PM.

                        Comentario


                        • #13
                          Re: Infomre condicionado.

                          Ah ok, ya voy viendo por donde va el problema, pero sigamos analizando.

                          Este es un ejemplo basico (Incluso en mi blog toda esta parte esta detallada):

                          Código:
                          Dim rs As New ADODB.Recordset
                          Dim sql as String
                          sql = "Select Campo1, Campo2... etc etc"
                          rs.Open sql, CONEXION_ADO, adOpenStatic, adLockOptimistic
                          Set DataReport1.DataSource = rs
                          DataReport1.Show
                          Dim rs As New ADODB.Recordset
                          Declaras la variable recordset

                          Dim sql as String
                          Declaras la variable para la consulta sql

                          sql = "Select Campo1, Campo2... etc etc"
                          Armas la consulta, aqui es donde lo parametrizas, hasta aqui vamos bien con lo que tienes

                          rs.Open sql, CONEXION_ADO, adOpenStatic, adLockOptimistic
                          Ejecutas la consulta y los registros obtenidos se almacen en el recordset llamado rs.

                          Set DataReport1.DataSource = rs
                          El contenido del rs es cargado en el reporte. Antes de cargarlo debes ya tener asignado los campos del recordset (NO DE LA TABLA, SINO DEL RECORDSET que muchas veces van a coincidir pero es bueno tenerlo claro) en el DataField, esto lo puedes hacer por código pero la verdad esta parte lo hago por las propiedades del reporte.



                          DataReport1.Show
                          Muestras el reporte.
                          --------------------------------
                          Si eres agradecido, obtendrás más...

                          YAcosta

                          Comentario


                          • #14
                            Re: Infomre condicionado.

                            Una consulta entonces me dices que no debe tener Datamenber ya que utilizara el recorset.

                            Comentario


                            • #15
                              Re: Infomre condicionado.

                              Hice lo que me mandaste en el codigo:
                              Código:
                              Dim EstatusRs As ADODB.Recordset
                              Dim sql As String
                              
                              Set EstatusRs = New ADODB.Recordset
                              With EstatusRs
                              sql = "SELECT Diag_status AS ESTATUS, COUNT(Pk_id_diagnostico) AS CANTIDAD From Tbl_Registro_Atencion where Diag_fecha_datos BETWEEN '" & Me.dtpdesde.Value & "' AND '" & Me.dtphasta.Value & "' GROUP BY Diag_status ORDER BY Diag_status"
                              
                              EstatusRs.Open sql, CONEXION_ADO, adOpenStatic, adLockOptimistic
                              Set dtrImpresion_Ciclo.DataSource = EstatusRs
                              
                              dtrImpresion_Ciclo.Sections("Sección2").Controls("lbldesde").Caption = Me.dtpdesde.Value
                              
                              dtrImpresion_Ciclo.Sections("Sección2").Controls("lblhasta").Caption = Me.dtphasta.Value
                              
                              dtrImpresion_Ciclo.Show
                              .Close
                              End With
                              Set EstatusRs = Nothing
                              En el datamenber se deja en blanco pq no usa dataemvirotmen


                              Pero me envia un error:

                              Última edición por puchungon; 13-03-2015, 04:30 PM.

                              Comentario

                              Trabajando...
                              X