Autor Tema: Como obtener el saldo en un campo calculado - Datareport  (Leído 6939 veces)

0 Usuarios y 1 Visitante están viendo este tema.

zxs23

  • Megabyte
  • ***
  • Mensajes: 146
  • Reputación: +5/-2
    • Ver Perfil
Como obtener el saldo en un campo calculado - Datareport
« en: Octubre 20, 2012, 10:45:34 pm »
Bueno ahi les dejo el ejemplo para que lo descarguen nose como hacer para mostrar el saldo dentro del datareport creo que habria que hacer una resta. Puedo mostrarlo en la cabecera o el detalle no importa, haber si ayudan con esto. ah olvidense del campo donde aparece zero cuatro veces(se me olvido borrarlo ya que estaba haciendo varias pruebas)

« última modificación: Octubre 21, 2012, 12:20:19 am por zxs23 »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #1 en: Octubre 20, 2012, 10:55:53 pm »
Tienes que hacer la operación por fuera y luego pintarlo en un rptLabel o rptTextBox dependiendo de la sección, no hay de otra.
Si no me explique bien me dices y detallo mas.
Me encuentras en YAcosta.com

zxs23

  • Megabyte
  • ***
  • Mensajes: 146
  • Reputación: +5/-2
    • Ver Perfil
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #2 en: Octubre 21, 2012, 12:49:29 am »
Entiendo yvan pero los datos a restas los puedo sacar directamente del recordset o tengo que hacerlo a la antigua por decirlo asi jeje, lo mandas por MP
Código: [Seleccionar]
Dim rss As New ADODB.Recordset
Dim Query As String

Query = "SHAPE {SELECT CxC.idcuenta,CxC.numfactura, CxC.fechafactura, CxC.montoCredito, CxC.codclie,CxC.MontoCuota FROM cuentasxcobrar CxC } AS LEVEL1"

Query = Query & " APPEND ({SELECT Pagos.idpago, Pagos.fechapago, Pagos.montopago, DetalleCobros.iddeta, DetalleCobros.idcuenta,pagos.cuotas,detallecobros.montoP FROM DetalleCobros INNER JOIN Pagos ON DetalleCobros.iddeta = Pagos.iddeta"

Query = Query & "} AS LEVEL2 RELATE idcuenta TO idcuenta) AS LEVEL2"

Set rss = New ADODB.Recordset
rss.Open Query, cn

Set DataReport1.DataSource = rss
« última modificación: Octubre 21, 2012, 01:02:18 am por zxs23 »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #3 en: Octubre 21, 2012, 01:20:17 pm »
Los datos para restar los tienes que sacar del RecordSet, antes de pintar tu reporte (Show) tiene que jugar con tu recodset para obtener esos valores (sumas, restas, multiplicaciones, etc), ojo que si se trata de una consulta con Append y lo que quieres restar se encuentra en la consulta detalle también puedes acceder a dicha consulta... pero ahorita mismo de memoria no recuerdo como es la nuez y mi esposa me tiene prohibido tocar la PC de desarrollo los domingos (je). Me confirmas si es eso y no te sale para en un rato piratear la maquina y a ver si te mando un proyectito de ese tema, pero me tienes que confirmar.
Me encuentras en YAcosta.com

zxs23

  • Megabyte
  • ***
  • Mensajes: 146
  • Reputación: +5/-2
    • Ver Perfil
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #4 en: Octubre 28, 2012, 02:21:24 pm »
hola, ya pude recuperar la informacion del query que utiliza shape append gracias a "la ayuda de YAcosta" pero no he podido recuperar los campos del todo, espero me entiendan y puedan ayudarme.
Código: [Seleccionar]
Dim rss As New ADODB.Recordset
Dim Query As String

Query = "SHAPE {SELECT CxC.idcuenta,CxC.numfactura, CxC.fechafactura, CxC.montoCredito, CxC.codclie,CxC.MontoCuota FROM cuentasxcobrar CxC } AS LEVEL1"

Query = Query & " APPEND ({SELECT Pagos.idpago, Pagos.fechapago, Pagos.montopago, DetalleCobros.iddeta, DetalleCobros.idcuenta,pagos.cuotas,detallecobros.montoP FROM DetalleCobros INNER JOIN Pagos ON DetalleCobros.iddeta = Pagos.iddeta"

Query = Query & "} AS LEVEL2 RELATE idcuenta TO idcuenta) AS LEVEL2"

Set rss = New ADODB.Recordset
rss.Open Query, cn

Set DataReport1.DataSource = rss
Set MSHFlexGrid1.DataSource = rss

Dim x As Variant
Dim SUMpagos

    Do While Not rss.EOF
        MsgBox "Monto a restar : " & rss.Fields("montoCredito").Value 'Recupera el 1er campo que necesito
        x = rss("LEVEL2")
        For Fila = 1 To x.RecordCount
            'Aqui supuestamente tendria que sumar todos los "montoPago" pertencientes al idCuenta equiz y asi obtener el 2do campo que necesito para sacar el SALDO
            SUMpagos = SUMpagos + x.Fields("montopago")
            MsgBox SUMpagos
            x.MoveNext
        Next Fila
        rss.MoveNext
    Loop
'Aqui creo que solo cuestion de enviar la info o hacer la resta para obtener el SALDO
DataReport1.Sections("Sección7").Controls("Etiqueta11").Caption = SUMpagos - ?
DataReport1.Show
« última modificación: Octubre 28, 2012, 06:32:49 pm por zxs23 »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #5 en: Octubre 28, 2012, 10:20:29 pm »
Doc, si creo entender, en esta imagen:


Tu tienes un sumPagos que vendria a ser en el ejemplo 1,250, osea la suma del detalle.
Luego tienes un campo monto que es igual a 1,500.

DataReport1.Sections("Sección7").Controls("Etiqueta11").Caption = SUMpagos - ?

Asi que presumo que 1,500 es ¿lo que debe el cliente? y por tanto querrías obtener 250 al final (Claro cuidando el signo porque sino debiera ser ? - SUMpagos).

Si es así, pues tendrías que hacer otra consulta para obtener los 1,500 y hacer la operación de resta siendo que ya pagó  1,250. La consulta pudiera ser un Sum (dependiendo del tipo de documento) hasta un día antes de esa fecha (o el mismo día excluyendo por tipo de documento), pero no estoy seguro porque en tu imagen hay otro casillero vacío (saldo).

Indicas como es.
« última modificación: Octubre 28, 2012, 10:23:03 pm por YAcosta »
Me encuentras en YAcosta.com

zxs23

  • Megabyte
  • ***
  • Mensajes: 146
  • Reputación: +5/-2
    • Ver Perfil
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #6 en: Octubre 28, 2012, 11:11:20 pm »
Hola YAcosta la imagen que puse fue cuando estaba haciendo pruebas, pues ahora he conseguido obtener el saldo pero no puedo plasmarlo en el datareport puesto que solo admite controles enlazados y si lo hago en una etiqueta me tira lo mismo en todos los registros(siempre el ultimo saldo).
He probado creando un campo calculado en la cabecera de la consulta select del shape y luego updatearlo con el saldo obtenido pero me dice que no admite actulizaciones, a lo mejor he estado con una idea equivocada de como hacer lo que necesito?. No entendi lo ultimo de tu comentario, creo que te refieres a hacer un SUM en la misma consulta shape, creo que si se puede, si es asi me evitaria este ultimo problema que tengo?
Ahi paso el ejemplo.

« última modificación: Noviembre 02, 2012, 07:35:33 pm por zxs23 »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #7 en: Octubre 29, 2012, 02:16:19 am »
Cierto doc, el tema del Shape parece que no lo admite, así que solo se me ocurre una salvajada, de esas que usamos hasta encontrar una solución mejor, puse la consulta del sum en un select dentro del select.

Sin embargo te dire que seria bueno que manejes en alguna tabla pertinente el saldo por factura para que hagas la consulta directamente alli, o una tabla de esos saldos, pero ya eso lo ves.

Mientras aqui el código y te adjunto el proyecto ya que el datareport necesita un campo mas.

Proyecto
       
Código: (VB) [Seleccionar]
Private Sub btnReporte_Click()
Dim rss As New ADODB.Recordset
Dim Query As String
Dim QueryTo As String

QueryTo = _
"CxC.montoCredito - (SELECT Sum(Pagos.montopago) AS Pagados " & _
"FROM DetalleCobros DC INNER JOIN Pagos ON DC.iddeta = Pagos.iddeta " & _
"WHERE DC.idcuenta = CxC.IdCuenta) as SALDO "

Query = _
"SHAPE {SELECT CxC.idcuenta, CxC.numfactura, CxC.fechafactura, CxC.montoCredito, " & _
"        CxC.codclie, CxC.MontoCuota, " & QueryTo & _
"       FROM cuentasxcobrar CxC } AS LEVEL1 " & _
"APPEND ({SELECT Pagos.idpago, Pagos.fechapago, Pagos.montopago, DC.iddeta, " & _
"          DC.idcuenta,pagos.cuotas, DC.montoP " & _
"         FROM DetalleCobros DC INNER JOIN Pagos ON DC.iddeta = Pagos.iddeta " & _
"} AS LEVEL2 RELATE idcuenta TO idcuenta) AS LEVEL2"

Set rss = New ADODB.Recordset
rss.Open Query, cn
   
Set DataReport1.DataSource = rss
Set MSHFlexGrid1.DataSource = rss
DataReport1.Show
End Sub

« última modificación: Octubre 29, 2012, 02:45:02 am por YAcosta »
Me encuentras en YAcosta.com

zxs23

  • Megabyte
  • ***
  • Mensajes: 146
  • Reputación: +5/-2
    • Ver Perfil
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #8 en: Octubre 29, 2012, 07:48:04 pm »
Hola YAcosta pues estas en lo cierto, quizas sea mejor colocar un campo saldo en alguna parte y asi evitar esta situacion la cual pense que seria super sencilla pero me equivoque, de todas manera tal como lo has resuelto funciona bien asi que es 100% valida dicha solucion, asi que doy por cerrado el tema, gracias por el tiempo, SALUDOS

katsuko

  • Bit
  • Mensajes: 3
  • Reputación: +0/-0
    • Ver Perfil
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #9 en: Mayo 23, 2013, 02:07:32 pm »
hola yo tengo un problema mas o menos como el tuyo pero yo requiero hacer un estado de resultados ya se como jalar los datos y todo lo que lleva pero no se como hacer las operaciones en el datareport osea las sumas y restas del estado de resultados me podrian ayudar??

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #10 en: Mayo 23, 2013, 02:26:29 pm »
Si es suma hay un control (no me acuerdo como se llama pq estoy en otra) del datareport que te suma por grupos.

Si es resta tienes que hacerlo por fuera y pintarlo en el reporte.

Saludos
Me encuentras en YAcosta.com

katsuko

  • Bit
  • Mensajes: 3
  • Reputación: +0/-0
    • Ver Perfil
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #11 en: Mayo 23, 2013, 02:29:05 pm »
mas o menos me puedes explicar como hacerlo por fuera es que no entendi muy bien a lo que le escribiste al anterior

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #12 en: Mayo 23, 2013, 02:40:34 pm »
Ok, Tu tienes tu consulta y luego esa consulta la conectas al reporte. Antes de conectar manipula consulta recorriéndola para que obtengas valores que necesites y que la consulta directamente no te proporciona, luego de que obtengas el valor lo pones en algún control rptLabel del reporte.

Saludos
Me encuentras en YAcosta.com

katsuko

  • Bit
  • Mensajes: 3
  • Reputación: +0/-0
    • Ver Perfil
Re:Como obtener el saldo en un campo calculado - Datareport
« Respuesta #13 en: Mayo 23, 2013, 02:44:10 pm »
ok muchas gracias