FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xbrowse y setcheck (Solucionado)
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
xbrowse y setcheck (Solucionado)
Posted: Wed Dec 14, 2016 08:55 PM
Estimados:
Este codigo que antes me funcionaba, ahora con FW16 no lo hace no me muestra los cuadros chequedos, me muestra como si siempre fuese .f.
Code (fw): Select all Collapse
REDEFINE XBROWSE oBrw1 DATASOURCE oQry1;
              COLUMNS "modulo","detalle","codigo","permiso","permisos";
              HEADERS "Modulo","Descripcion Modulo","Orden","Permiso","Permisos";
              SIZES 100,250,50,80,113;
              ID 200 OF oDlg1 
   oBrw1:aCols[4]:nEditType := EDIT_GET
   oBrw1:aCols[4]:bEditValue := {|| IF( oQry1:permiso=0, .f., .t. )  }
   oBrw1:aCols[4]:SetCheck(,.t.)

Gracias de antemano
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: xbrowse y setcheck
Posted: Thu Dec 15, 2016 04:46 AM

It should appear.
May we know your fwh16.?? version please?
Do you see ".F." instead of CheckBox ?

Regards



G. N. Rao.

Hyderabad, India
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: xbrowse y setcheck
Posted: Fri Dec 16, 2016 11:35 AM

Mi version es FWH 16.06
Solo aparece el casillero sin checar

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: xbrowse y setcheck
Posted: Mon Dec 19, 2016 04:34 AM

+1

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: xbrowse y setcheck
Posted: Mon Dec 19, 2016 04:49 AM
For purposes of testing, can you please try this modification and post the screenshot?
Code (fw): Select all Collapse
REDEFINE XBROWSE oBrw1 DATASOURCE oQry1;
   COLUMNS "modulo","detalle","codigo","permiso!=0","permiso","permisos";
   HEADERS "Modulo","Descripcion Modulo","Orden","Permiso","val","Permisos";
   SIZES 100,250,50,80,80,113;
   ID 200 OF oDlg1 

oBrw1:aCols[ 4 ]:SetCheck( nil, .t. )
oBrw1:CreateFromCode()
Regards



G. N. Rao.

Hyderabad, India
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: xbrowse y setcheck
Posted: Mon Dec 19, 2016 12:08 PM
Me devuelve un error
Code (fw): Select all Collapse
   Error description: Error FiveWin/2  Duplicated Id: No:    174

El browse lo defino en el recurso.
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: xbrowse y setcheck
Posted: Mon Dec 19, 2016 12:12 PM

We are just adding one more column in your code that is working.
How can there be duplicate ID?

Regards



G. N. Rao.

Hyderabad, India
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: xbrowse y setcheck
Posted: Thu Dec 29, 2016 08:44 PM
La solucion fue cambiar el tipo de datos, ya que la query la obtenia de una tabla temporal con un capo tinyint, que no me lo llenaba.
XBrowse tiene algun tipo de configuracion para ver un campo tinyint como booleano??
Code (fw): Select all Collapse
REDEFINE XBROWSE oBrw1 DATASOURCE oQry1;
              COLUMNS "modulo","detalle","codigo","permiso","permisos";
              HEADERS "Modulo","Descripcion Modulo","Orden","Permiso","Permisos";
              SIZES 100,250,50,80,113;
              ID 200 OF oDlg1 
   oBrw1:aCols[4]:nEditType := EDIT_GET
   oBrw1:aCols[4]:bEditValue := {|| IF( oQry1:permiso="S", .t., .f. )  }
   oBrw1:aCols[4]:SetCheck(,.t.)

Lo llenaba con la siguiente instruccion SQL
Code (fw): Select all Collapse
TEXT into  cSql
CREATE TEMPORARY TABLE IF NOT EXISTS `menues_temp` (
  `ITEM` int(6) NOT NULL AUTO_INCREMENT,
  `CODIGO` varchar(4) NOT NULL DEFAULT ' ' ,
  `USUARIO` varchar(15) NOT NULL DEFAULT ' ' ,
  `MODULO` varchar(15) NOT NULL DEFAULT ' ' ,
  `ETIQUETA` varchar(20) NOT NULL DEFAULT ' ' ,
  `DETALLE` varchar(40) NOT NULL DEFAULT ' ' ,
  `RECURSO` varchar(10) NOT NULL DEFAULT ' ' ,
  `PADRE` varchar(4) NOT NULL DEFAULT ' ' ,
  `PERMISOS` varchar(5) NOT NULL  DEFAULT ' ',
  `REPORTE` varchar(1) NOT NULL DEFAULT ' ',
  `PERMISO` tinyint(1) NOT NULL default 0 ,
  PRIMARY KEY (`ITEM`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
ENDTEXT

oApp:oServer:Execute(cSql)
oApp:oServer:Execute("TRUNCATE menues_temp")
oApp:oServer:NextResult()
oApp:oServer:Execute("INSERT INTO menues_temp "+;
                     "(codigo,usuario,modulo,etiqueta,detalle,recurso,padre,permiso,permisos) "+;
                     "(SELECT m.codigo,"+ClipValue2Sql(usua)+;
                     ",m.modulo, m.etiqueta, m.detalle,m.recurso,m.padre,"+;
                     "IF(b.codigo IS NOT NULL,1,0) , b.permisos FROM menu_nuevo m   "+;
                     "LEFT JOIN (SELECT codigo,permisos FROM menu_nuevo WHERE usuario = "+ClipValue2Sql(usua)+" "+;
                     "ORDER BY codigo) b ON m.codigo = b.codigo "+;
                     "WHERE m.usuario = '%%%%%%' ORDER BY m.codigo)")
oApp:oServer:NextResult()
oQry1 := oApp:oServer:Query( "SELECT * FROM menues_temp")
oQry1:Refresh()

Y lo reemplace con esta otra y funciono:
Code (fw): Select all Collapse
TEXT into  cSql
CREATE TEMPORARY TABLE IF NOT EXISTS `menues_temp` (
  `ITEM` int(6) NOT NULL AUTO_INCREMENT,
  `CODIGO` varchar(4) NOT NULL DEFAULT ' ' ,
  `USUARIO` varchar(15) NOT NULL DEFAULT ' ' ,
  `MODULO` varchar(15) NOT NULL DEFAULT ' ' ,
  `ETIQUETA` varchar(20) NOT NULL DEFAULT ' ' ,
  `DETALLE` varchar(40) NOT NULL DEFAULT ' ' ,
  `RECURSO` varchar(10) NOT NULL DEFAULT ' ' ,
  `PADRE` varchar(4) NOT NULL DEFAULT ' ' ,
  `PERMISOS` varchar(5) NOT NULL  DEFAULT ' ',
  `REPORTE` varchar(1) NOT NULL DEFAULT ' ',
  `PERMISO` varchar(1) NOT NULL default ' ' ,
  PRIMARY KEY (`ITEM`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
ENDTEXT

oApp:oServer:Execute(cSql)
oApp:oServer:Execute("TRUNCATE menues_temp")
oApp:oServer:NextResult()
oApp:oServer:Execute("INSERT INTO menues_temp "+;
                     "(codigo,usuario,modulo,etiqueta,detalle,recurso,padre,permiso,permisos) "+;
                     "(SELECT m.codigo,"+ClipValue2Sql(usua)+;
                     ",m.modulo, m.etiqueta, m.detalle,m.recurso,m.padre,"+;
                     "IF(b.codigo IS NOT NULL,'S','N') , b.permisos FROM menu_nuevo m   "+;
                     "LEFT JOIN (SELECT codigo,permisos FROM menu_nuevo WHERE usuario = "+ClipValue2Sql(usua)+" "+;
                     "ORDER BY codigo) b ON m.codigo = b.codigo "+;
                     "WHERE m.usuario = '%%%%%%' ORDER BY m.codigo)")
oApp:oServer:NextResult()
oQry1 := oApp:oServer:Query( "SELECT * FROM menues_temp")
oQry1:Refresh()

Lo del ID duplicado no pude detectar que era.
Gracias Mr Rao por su tiempo.
Saludos

Continue the discussion