Page 1 of 2

SetCheck en Xbrowse con consulta Dolphin

Posted: Mon Nov 11, 2013 1:36 pm
by cmsoft
Estimados:
Quiero poner una columna con un checkbox en un xbrowse.
Si lo hago así con una dbf no hay problemas

Code: Select all | Expand

    use trans  
      REDEFINE XBROWSE oBrw ALIAS "trans";
         COLUMNS "campo1","campo2","campo3";
         HEADERS "Marca","Tasa", "Nro. Control";
         SIZES 40,50,90   ID 111 OF oDlg
      oBrw:OCol(1):SetCheck(nil,.t.,)

el browse muestra la primer fila (que es de tipo lógica) con el checkbox
Pero al querer hacerla con una consulta con la clase Dolphin, no me muestra la columna con el checkbox. El campo marca no existe en la tabla, lo creo como falso, PERO LO PONE EN 0 si lo muestro sin el CHECKBOX.

Code: Select all | Expand


   oQry  := OApp:oServer:Query("SELECT FALSE AS marca, se_deuda.* FROM SE_DEUDA ORDER BY contri")
   REDEFINE XBROWSE oBrw DATASOURCE oQry;
        COLUMNS "marca","tasa","contri","mes","ano","importe_ori","importe_act","estado","fecha_pago","Importe_Pago", "Forma_de_Pago";
        HEADERS "Marca","Tasa", "Nro. Control","Cta","Año","$ Origen","$ Actual","Estado","Pagado el","Pagado $","Forma Pago";
        FOOTERS;
        SIZES 40,50,90,50,50,90,90,90,90,90,90   ID 111 OF oDlg

     oBrw:OCol(1):SetCheck(nil,.t.,)
 

Como puedo hacer para que funcione similar a las DBF
Gracias

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Mon Nov 11, 2013 1:39 pm
by carlos vargas
mira tdolphin.ch
creo que es
SET LOGICALVALUE ON

para que los 0/1 funcionen como .t./.f.

salu2
carlos vargas

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Mon Nov 11, 2013 1:44 pm
by cmsoft
Gracias Carlos, por responder tan rapidamente!
Pruebo y comento!!

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Mon Nov 11, 2013 2:12 pm
by cmsoft
Lamentablemente no me muestra el SetCheck con el formato de casilla de verificación.

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Mon Nov 11, 2013 4:10 pm
by carlos vargas
aca me esta funcionando muy bien. La columna 3 oQryFeri:NACIONAL es logica y me esta mostradon la casilla de verificacion.

salu2

Code: Select all | Expand


PROCEDURE Feriados()
   PRIVATE oError
   PRIVATE oDlg, oBrw, oToolbar, oPopUp1, oBtnFilter
   PRIVATE oQryFeri, oQryCiud
   PRIVATE cFiltro, lFiltrado
   PRIVATE bColCiudad

   cFiltro   := ""
   lFiltrado := FALSE

   IF !oSesion:EsAdmin()
      cFiltro := ""
   ELSE
      cFiltro := "NUM_CIUD=%1 OR NUM_CIUD=0"
      cFiltro := StrFormat( cFiltro, Var2Str( oSesion:GetNumCiudad() ) )
   ENDIF

   TRY
      oQryCiud := oServer:Query2( "SELECT NUM_CIUD, NOMBRE FROM CIUDADES ORDER BY NOMBRE" )
      IF !Empty( cFiltro )
         oQryFeri := oServer:Query2( "SELECT * FROM vCATFERI WHERE " + cFiltro + " ORDER BY FECHA" )
      ELSE
         oQryFeri := oServer:Query2( "SELECT * FROM vCATFERI ORDER BY FECHA" )
      ENDIF
      oQryCiud:FillDbf( "TBLCIUD", "TEMP1" )
      oQryCiud:END()
   CATCH oError
      IIf( HB_IsObject( oQryCiud ), oQryCiud:END(), NIL )
      IIf( HB_IsObject( oQryFeri ), oQryFeri:END(), NIL )
      ShowError( oError )
      RETURN
   END

   bColCiudad := {|| IIf( oQryFeri:NACIONAL, "N/D", oQryFeri:NOMCOR ) }

   DEFINE DIALOG oDlg NAME "DLG_FERIADOSC" OF oMainWnd ICON GetIcon() FONT oFontD

   REDEFINE XBROWSE oBrw ID 101 OF oDlg ALIAS "FERI" ON DBLCLICK Feriados_Editar( FALSE ) FONT oFontD

   ADD TO oBrw DATA oQryFeri:FECHA      TITLE "Fecha"              SIZE 090 CENTER PICTURE "@D"
   ADD TO oBrw DATA oQryFeri:MOTIVO     TITLE "Motivo del feriado" SIZE 270
   ADD TO oBrw DATA oQryFeri:NACIONAL   TITLE "Nacional"           SIZE 054
   ADD TO oBrw DATA bColCiudad          TITLE "Ciudad"             SIZE 054

   WITH OBJECT oBrw
      :SetDolphin( oQryFeri, FALSE )
      :MyConfig()
      :aCols[ 03 ]:SetCheck( { "BMS_CHECKON","BMS_CHECKOFF" } )
      :bKeyDown      := {|nKey| Feriados_ProcesaTecla( nKey ) }
      :lHScroll      := FALSE
      :nHeaderHeight := 36
   END

   ACTIVATE DIALOG oDlg ON INIT Feriados_Toolbar()

   TEMP1->( DBCloseArea() )

   oQryFeri:END()

 

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Mon Nov 11, 2013 4:24 pm
by cmsoft
Carlos:
Vos estas pasando la consulta a una tabla DBF no?
Porque directamente desde tablas DBF me anda perfecto el setcheck, pero no desde una consulta directamente.
Sigo teniendo el mismo problema.
Gracias

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Mon Nov 11, 2013 4:33 pm
by carlos vargas
nop, esa es otra consulta la que paso a dbf, la consulta principal, la que uso en xbrowse se mantiene como un objeto query de dolphin.

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Tue Nov 12, 2013 3:36 am
by joseluisysturiz
Como mysql no maneja campos logicos, lo que hago es agregar una columna adicional despues del query o puedes pasar el query a un array y alli manejas la columna con valor logico, y trabaja sin problema, buscare el ejemplo para ponerlo, saludos... :shock:

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Tue Nov 12, 2013 12:03 pm
by cmsoft
Hola Carlos:
Mi duda es porque usas

Code: Select all | Expand

REDEFINE XBROWSE oBrw ID 101 OF oDlg ALIAS "FERI" ON DBLCLICK Feriados_Editar( FALSE ) FONT oFontD

en lugar de

Code: Select all | Expand

REDEFINE XBROWSE oBrw ID 101 OF oDlg DATASOURCE oQryFeri ON DBLCLICK Feriados_Editar( FALSE ) FONT oFontD

Usas un formato de DBF para abrir una consulta DOLPHIN, es nuevo para mi eso. Quien es FERI?

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Tue Nov 12, 2013 12:41 pm
by cmsoft
Hola Jose Luis!
Y directamente desde la consulta no lo has probado? Sin pasarlo a un array?
Gracias por responder.

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Tue Nov 12, 2013 2:30 pm
by carlos vargas

Code: Select all | Expand

REDEFINE XBROWSE oBrw ID 101 OF oDlg ALIAS "FERI" ON DBLCLICK Feriados_Editar( FALSE ) FONT oFontD

pues sip, tiene razon, se me ha quedado ese pedazo de codigo, lo he eliminado y cero roblemas. :-)
gracias por la observacion.

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Tue Nov 12, 2013 8:07 pm
by joseluisysturiz
cmsoft wrote:Hola Jose Luis!
Y directamente desde la consulta no lo has probado? Sin pasarlo a un array?
Gracias por responder.


Fijate lo que hago usando la consulta directa, sin array:

1. tengo un campo que es vez de ser logico, lo uso de tipo integer de 1 valor, en el cual uso 0 ó 1.
2. esa columna la muestro asi

oBrw:aCols[5]:cHeader := "ADJ."
oBrw:aCols[5]:bEditValue := {|| IIF( oQryADJ:LastRec() == 0, SPACE(10) ,;
( IIF( oQryADJ:adj_adjudicar==0, .f., .t. ) ) ) }
oBrw:aCols[5]:nHeadStrAlign := AL_LEFT
oBrw:aCols[5]:nDataStrAlign := AL_LEFT
oBrw:aCols[5]:nWidth := 30
oBrw:aCols[5]:bClrStd := {|| {CLR_BLACK, CLR_CYAN} }
oBrw:aCols[5]:SetCheck( { "OK16", } )
oBrw:aCols[5]:cToolTip := "Doble Click/ENTER/ESPACIO para marcar o descargar."

3. en la defincion del xbrowse hago eso:
// ACT./DES. STATUS SELECCIONADO PARA ADJUDICAR CON D-CLICK
:bLDblClick := {|nRow|IIF( oQryADJ:adj_adjudicar = 0 ,;
( oQryADJ:adj_adjudicar := 1 ) ,;
( oQryADJ:adj_adjudicar := 0 ) ) ,;
act_check( oQryAdj ) ,;
oQryADJ:REFRESH(), oBrw:REFRESH() }

// ACT./DES. STATUS SELECCIONADO PARA ADJUDICAR CON SPACE
:bKeyDown= {|nKey| IF ( nKey == VK_SPACE ,;
IIF( oQryADJ:adj_adjudicar = 0 ,;
( oQryADJ:adj_adjudicar := 1 ) ,;
( oQryADJ:adj_adjudicar := 0 ) ), ) }

4. esta es la funcion act_check()
PROCEDURE act_check( oQryAdj ) // ACTUALIZA CHECK PARA adjudicar

LOCAL cSql, oError
oQryAdj:REFRESH()

cSql := "UPDATE cronograma SET "
cSql += "adj_adjudicar=" + ClipValue2SQL( IF( oQryAdj:adj_adjudicar == 0, 1, 0 ) )
cSql += " WHERE adj_insc = '" + ClipValue2SQL( oQryAdj:adj_insc ) + "' "

TRY
oDatos:oConex:Execute( cSql )

CATCH oError
MSGALERT( oError:Description + CRLF + ;
"Error Grabando en Tabla (cronograma), Sentencia" + CRLF + CRLF + ;
cSql, oDatos:cTitMsg )
END

RETURN

espero te ayude o de alguna buena idea o mejorar como lo hago, gracias y saludos... :shock:

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Wed Nov 13, 2013 1:36 pm
by cmsoft
Hola Jose Luis:
Gracias por tu ayuda!
Ya sale el cuadradito del checkbox en mi browse.
Ahora el problema es que cuando le doy doble click me da un error de ONEDIT que no está definida en XBROWSE.
En mi caso el campo que muestro como checkeable no está en la tabla, solo lo muestro en la consulta.
Gracias por tu ayuda...

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Wed Nov 13, 2013 3:22 pm
by joseluisysturiz
Que bueno te haya servido, cualquier cosa como todo este foro, estoy a la orden, siempre y cuando pueda y sepa, jeje...saludos... :shock:

Re: SetCheck en Xbrowse con consulta Dolphin

Posted: Fri Nov 15, 2013 1:09 pm
by cmsoft
Hola!
Ahora no me deja cambiar el estado.
Será porque es un campo que no pertenece a la tabla, sino que es de la consulta?
Tal vez Daniel pueda responderlo...
En caso de que sea un campo de la tabla, de que tipo MySql tengo que definirlo para poder tratarlo como lógico directamente?