Page 1 of 1

SETCHECK EN XBROWSE CON QUERY MYSQL-SOLUCIONADO

PostPosted: Mon May 23, 2016 3:20 am
by joseluisysturiz
Saludos, tengo un query mysql donde creo 2 columnas virtuales para usarlas con SetCheck, he buscado las mil y una formas y no se si estoy intentando algo que no se puede hacer....pero quiero que mi xbrowse que carga la data directamente desde el query, me ponga las 2 columnas virtuales con SetCheck, asi como se hace con array, he revisado el foro y siempre es con array, hay manera de hacerlo como quiero o estoy inventando.?, espero las sugerencias y algun ejemplo si es posible...y ademas a esto...como usar "bSumCondition" para que solo me sume las celdas de una columna cuando se cumpla la condicion de la celda de otra columna, dejo como cree la consulta y el xbrowse y lo que he probado con ayuda de colegas y viendo en el foro creando el xbrowse, me pone el setchek pero con un numero 9 adentro y no se porque ya que las columnas se definen con 0 en la consulta...saludos...gracias.

QUERY
Code: Select all  Expand view

   cSql := "SELECT cu.numero_cuota, cu.aporte_mensual, cu.vencimiento, "
   cSql += "DATE(NOW()) AS fch_pag_cuo, "
   cSql += "IF(ISNULL(cu.multa), 0, cu.multa) AS mto_multa, "
   cSql += "DATE(NOW()) AS fch_pag_mul, cp.cedula_cliente, "
   cSql += "cp.pax, cp.id_cliente_pax,  ct.id_contrato, "

   [b]cSql += "0 AS setche1, 0 AS setche2 " // ESTAS SON LAS COLUMNAS VIRTUALES LAS CUALES SON LAS COLUMNAS 5 Y 8 EN XBROWSE[/b]

   cSql += "FROM jlr_clientes_pax AS cp "
   cSql += "LEFT JOIN jlr_contratos AS ct ON cp.id_cliente_pax = ct.id_cliente_pax "
   cSql += "LEFT JOIN jlr_estados_cuenta AS cu ON ct.id_contrato = cu.id_contrato "
   cSql += "WHERE ISNULL(cp.cedula_cliente) "
   cSql += "ORDER BY cu.numero_cuota, cp.pax"
   TRY // TABLA CONTRATOS-CUOTAS
      oQryCuo := TDolphinQry():New( cSql, oDatos:oConex )
   CATCH oError
      ShowError( oError, "dat_factu", "ma_facturas.prg", "jlr_clientes_pax" )
      RETURN
   END
 


XBROWSE
Code: Select all  Expand view

   REDEFINE XBROWSE aBrw[1] ID 100 OF oDlg ;
      DATASOURCE oQryCuo ;
      LINES AUTOSORT FOOTERS ;
      HEADERS "Número" + CRLF + "Cuota" ,;
              "Monto" + CRLF + "Cuota" ,;
              "Fecha" + CRLF + "Vencimiento" ,;
              "Fecha" + CRLF + "Pagada Cuota" ,;
              "SC" ,;
              "Monto" + CRLF + "Multa" ,;
              "Fecha" + CRLF + "Pagada Multa" ,;
              "SM" ; //"E" ,; "D" ;
      COLUMNS "numero_cuota" ,;
              "aporte_mensual" ,;
              "vencimiento" ,;
              "fch_pag_cuo" ,;
              "setche1" ,;
              "mto_multa" ,;
              "fch_pag_mul" ,;
              "setche2" ;
      COLSIZES 50, 100, 90, 90,   70, 70, 90,   70 ;
      JUSTIFY 2, 1, 2, 2, 2, 1, 2, 2 ;
      PICTURES , "@E 999,999,999.99", , , , "@E 999,999,999.99"

   WITH OBJECT aBrw[1] // COLUMNAS VIRTUALES
      :aCols[5]:cToolTip := "Seleccione Cuota(s) a Pagar"
      :aCols[5]:bStrData := { || IF( oQryCuota:setche1 = 0, 'N', 'S' ) }
      :aCols[5]:nEditType := EDIT_GET
      :aCols[5]:addresource("ok16")
      :aCols[5]:bBmpData  := {|| IF( oQryCuota:setche1 > 0, 1, 0 ) }
      :aCols[5]:cDataType := 'L'
      :aCols[5]:SetCheck()
      *:aCols[5]:SetCheck(nil, .t.)
      *:aCols[5]:SetCheck( { "ok16", } )
      :aCols[5]:bEditValue := { || IF( oQryCuota:setche1 > 0, .t., .f. ) }
      :aCols[5]:bOnPostEdit := { |o,x,n| IF( n != VK_ESCAPE, ( o:value:= x, Alert(x) ), ) }

      ***

      :aCols[8]:cToolTip := "Seleccione Multa(s) a Pagar"
      :aCols[8]:bStrData := { || IF( oQryCuota:setche2 = 0, 'N', 'S' ) }
      :aCols[8]:nEditType := EDIT_GET
      :aCols[8]:addresource("ok16")
      :aCols[8]:bBmpData  := {|| IF( oQryCuota:setche2 > 0, 1, 0 ) }
      :aCols[8]:cDataType := 'L'
      :aCols[8]:SetCheck()
      *:aCols[8]:SetCheck(nil, .t.)
      *:aCols[8]:SetCheck( { "ok16", } )
      :aCols[8]:bEditValue := { || IF( oQryCuota:setche2 > 0, .t., .f. ) }
      :aCols[8]:bOnPostEdit := { |o,x,n| IF( n != VK_ESCAPE, ( o:value:= x, Alert(x) ), ) }
   END WITH
 


IMAGEN XBROWSE
Image

Re: SETCHECK EN XBROWSE CON QUERY MYSQL

PostPosted: Mon May 23, 2016 4:05 am
by cmsoft
Yo lo he solucionado creando una tabla temporal, y trabajando sobre esta, porque en realidad cuando cambia el estado con el SetCheck, tiene que grabar sobre la tabla.
O sea que primero creas una tabla temporal con el formato que vas a ver en el xbrowse, despues haces un insert into desde el select que estas haciendo ahora, y luego muestras el xbrowse sobre la tabla temporal.
Espero te sirva la idea

Re: SETCHECK EN XBROWSE CON QUERY MYSQL

PostPosted: Mon May 23, 2016 4:11 am
by joseluisysturiz
cmsoft wrote:Yo lo he solucionado creando una tabla temporal, y trabajando sobre esta, porque en realidad cuando cambia el estado con el SetCheck, tiene que grabar sobre la tabla.
O sea que primero creas una tabla temporal con el formato que vas a ver en el xbrowse, despues haces un insert into desde el select que estas haciendo ahora, y luego muestras el xbrowse sobre la tabla temporal.
Espero te sirva la idea


Saludos CMSOFT, esa idea es buena, pero lo que quiero es evitar trabajar mas, para hacer eso, entonces sigo usando el ARRAY, encontre algo en el foro con ADO, pero pruebo todo y nada..sigue con el mismo detalle...gracias... :shock:

viewtopic.php?f=3&t=29701&start=0&hilit=setcheck

Re: SETCHECK EN XBROWSE CON QUERY MYSQL

PostPosted: Mon May 23, 2016 11:06 pm
by Armando
José Luis:

Una pequeño ejemplo para el Check Box

Code: Select all  Expand view

        aCol[ 8]                            := oBrw:AddCol()
        aCol[ 8]:cHeader                := "Can"
        aCol[ 8]:bEditValue             := { || oRsDet:RecordCount() > 0 .AND. oRsDet:Fields("DET_CAN"):Value }
        aCol[ 8]:SetCheck( { "SI","NO" } )
 


Ojo, SI y NO son dos BMPs metidos a los recursos y son las imágenes que quieres que se muestren

Saludos

Re: SETCHECK EN XBROWSE CON QUERY MYSQL

PostPosted: Mon May 23, 2016 11:37 pm
by joseluisysturiz
Armando wrote:José Luis:

Una pequeño ejemplo para el Check Box

Code: Select all  Expand view

        aCol[ 8]                            := oBrw:AddCol()
        aCol[ 8]:cHeader                := "Can"
        aCol[ 8]:bEditValue             := { || oRsDet:RecordCount() > 0 .AND. oRsDet:Fields("DET_CAN"):Value }
        aCol[ 8]:SetCheck( { "SI","NO" } )
 


Ojo, SI y NO son dos BMPs metidos a los recursos y son las imágenes que quieres que se muestren

Saludos

Disculpa Armando, el setcheck lo hace, pero estoy usando un QUERY Mysql, con Array trabaja, mira la imagen que coloque y lo que escribi para que veas el problema que tengo haber si tienes alguna otra idea por alli, gracisa, saludos... :shock:

Re: SETCHECK EN XBROWSE CON QUERY MYSQL

PostPosted: Tue May 24, 2016 10:07 pm
by Francisco Horta
Jose Luis,

yo lo uso asi:
aoCols[6] := oBrw:AddCol()
aoCols[6]:nWidth := 26
aoCols[6]:cHeader := "CxC"
aoCols[6]:AddBmpHandle( "Chk_T" )
aoCols[6]:AddBmpHandle( "Chk_F" )
aoCols[6]:bBmpData := {|| IF(oQry:FieldGet("escxc"), 1, 2) }
aoCols[6]:nDataStrAlign := AL_CENTER
aoCols[6]:nHeadStrAlign := AL_CENTER

Saludos

Re: SETCHECK EN XBROWSE CON QUERY MYSQL

PostPosted: Wed May 25, 2016 2:25 pm
by nageswaragunupudi
Code: Select all  Expand view
  WITH OBJECT aBrw[1] // COLUMNAS VIRTUALES
      :aCols[5]:cToolTip := "Seleccione Cuota(s) a Pagar"
      :aCols[5]:bEditValue := { || oQryCuota:setche1 > 0 }
      :aCols[5]:SetCheck( { "ok16", }, .t. )

      ***

      :aCols[8]:cToolTip := "Seleccione Multa(s) a Pagar"
      :aCols[8]:bEditValue := { || oQryCuota:setche2 > 0 }
      :aCols[8]:SetCheck( { "ok16", }, .t. )

   END WITH