SET CHECK EN BROWSE CON DATA DE UN QUERY

SET CHECK EN BROWSE CON DATA DE UN QUERY

Postby joseluisysturiz » Sun Aug 07, 2022 3:58 pm

Buen dia, asi como dice, tengo un xbrowse con data de un array con set check y todo bien, pero con data de un query en el xbrowse, como uso el setcheck sin tener que crear un campo logico en la tabla mysql.? creo ese tema ya se pregunto, pero no resuelvo con lo que lei, alguna idea o sugerencia que no sea crear un campo logico en la tabla..gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: SET CHECK EN BROWSE CON DATA DE UN QUERY

Postby cmsoft » Mon Aug 08, 2022 12:22 pm

José Luis:
Creo que puedes mostrarlo, pero no hacerlo de edición, ya que no podrás grabar la variable si no es un campo lógico de la tabla.
Code: Select all  Expand view

#include "FiveWin.ch"
#include "xbrowse.ch"
FUNCTION Main()

   local oChild, oBrw, oCol, oTimer, oServer, oQry, cSql
   local cServer := 'localhost', cUser := 'miusuario', cPassword := 'mipassword', cDBName := 'test', nPort := "3306"
   FWCONNECT oServer HOST cServer USER cUser PASSWORD cPassword DB cDBName PORT VAL(nPort)
   DEFINE WINDOW oChild TITLE "Auto edit browse"

   oQry := oServer:Query("SELECT codigo as codigo,nombre as nombre, if(codigo > 3,true,false) as logico FROM articulos")
   @ 0,0 XBROWSE oBrw DATASOURCE oQry  ;
         COLUMNS "codigo","nombre","logico";
         HEADERS "Cod.","Descripcion Articulo","?";
         SIZES 100,250,50 OF oChild

   WITH OBJECT oBrw
      :CreateFromCode()
      :aCols[3]:SetCheck()
      :aCols[3]:bEditValue := {|| IF( oQry:logico == 1, .t., .f. )  }
   END
   oChild:oClient := oBrw  
   ACTIVATE WINDOW oChild
   
RETURN NIL
 
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: SET CHECK EN BROWSE CON DATA DE UN QUERY

Postby joseluisysturiz » Thu Aug 11, 2022 6:33 pm

cmsoft wrote:José Luis:
Creo que puedes mostrarlo, pero no hacerlo de edición, ya que no podrás grabar la variable si no es un campo lógico de la tabla.
Code: Select all  Expand view

#include "FiveWin.ch"
#include "xbrowse.ch"
FUNCTION Main()

   local oChild, oBrw, oCol, oTimer, oServer, oQry, cSql
   local cServer := 'localhost', cUser := 'miusuario', cPassword := 'mipassword', cDBName := 'test', nPort := "3306"
   FWCONNECT oServer HOST cServer USER cUser PASSWORD cPassword DB cDBName PORT VAL(nPort)
   DEFINE WINDOW oChild TITLE "Auto edit browse"

   oQry := oServer:Query("SELECT codigo as codigo,nombre as nombre, if(codigo > 3,true,false) as logico FROM articulos")
   @ 0,0 XBROWSE oBrw DATASOURCE oQry  ;
         COLUMNS "codigo","nombre","logico";
         HEADERS "Cod.","Descripcion Articulo","?";
         SIZES 100,250,50 OF oChild

   WITH OBJECT oBrw
      :CreateFromCode()
      :aCols[3]:SetCheck()
      :aCols[3]:bEditValue := {|| IF( oQry:logico == 1, .t., .f. )  }
   END
   oChild:oClient := oBrw  
   ACTIVATE WINDOW oChild
   
RETURN NIL
 


CMSOFT, lo que necesito es algo como eso, crear el campo logico virtual pero que no sea de la tabla, pero que se pueda cambiar al hacer click para seleccionar los registros y luego realizar X operacion en los registros que contengan el check en positivo, espero explicarme bien, lo que no quiero es tenet que agregar campos logicos a la tabla, ni tampoco quiero usar array que seria una solucion, probare lo que me sugieres, gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: SET CHECK EN BROWSE CON DATA DE UN QUERY

Postby cmsoft » Thu Aug 11, 2022 10:02 pm

A menos que me equivoque, no te va a dejar cambiar ese valor, a menos que sea un campo real de la tabla.
Tal vez Mr. Rao que es el experto en la clase nativa de MySql y Xbrowse pueda darte una mejor opinión y un mejor ejemplo.
En todo caso, una opción alternativa es crear una tabla temporal de MySql que contenga los campos que quieres mostrar y el valor logico que quieres cambiar, y la llenas con la información de la tabla con el filtro que necesitas.
Si los datos no son extremadamente grande, tiene un funcionamiento bastante aceptable.
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: SET CHECK EN BROWSE CON DATA DE UN QUERY

Postby joseluisysturiz » Thu Aug 11, 2022 10:46 pm

cmsoft wrote:A menos que me equivoque, no te va a dejar cambiar ese valor, a menos que sea un campo real de la tabla.
Tal vez Mr. Rao que es el experto en la clase nativa de MySql y Xbrowse pueda darte una mejor opinión y un mejor ejemplo.
En todo caso, una opción alternativa es crear una tabla temporal de MySql que contenga los campos que quieres mostrar y el valor logico que quieres cambiar, y la llenas con la información de la tabla con el filtro que necesitas.
Si los datos no son extremadamente grande, tiene un funcionamiento bastante aceptable.


Mi punto es que si se pudiese ADICIONAR una columna al xbrowse que se maneje el SETCHECHK creo seria una buena manera de lo que quiero, sin tener que usar array, ni tablas temporales, ni campos logicos en la tabla original,

Nececito toda la tabla en el xbrowse y tildar algunos campos, y luego recorrer el xbrowse y dependiendo del valor del SETCHECK realizar cierta operacion con ese registro de la tabla en otras tablas... en este caso... cambiar unos precios... gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: SET CHECK EN BROWSE CON DATA DE UN QUERY

Postby cmsoft » Fri Aug 12, 2022 4:42 pm

Prueba esta opcion a ver si te sirve:
Es creando una tabla en memoria con la query con los condicionales que desees
Code: Select all  Expand view
#include "FiveWin.ch"
#include "xbrowse.ch"
FUNCTION Main()

   local oChild, oBrw, oCol, oTimer, oServer, oQry, cSql
   local cServer := 'localhost', cUser := 'root', cPassword := 'miclave', cDBName := 'test', nPort := "3306"
   FWCONNECT oServer HOST cServer USER cUser PASSWORD cPassword DB cDBName PORT VAL(nPort)
   DEFINE WINDOW oChild TITLE "Auto edit browse"
   cSql:="CREATE TABLE tempor ENGINE=MEMORY "+;
         " SELECT codigo as codigo,nombre as nombre, if(codigo > 3,true,false) as logico " +;
         " FROM articu"
   oServer:Execute( cSql )
   oQry := oServer:Query("SELECT * FROM tempor")
   @ 0,0 XBROWSE oBrw DATASOURCE oQry  ;
         COLUMNS "codigo","nombre","logico";
         HEADERS "Cod.","Descripcion Articulo","?";
         SIZES 100,250,50 OF oChild FASTEDIT

   WITH OBJECT oBrw  
      :aCols[3]:SetCheck()
      :aCols[3]:bEditValue := {|| IF( oQry:logico == 1, .t., .f. )  }
      :aCols[3]:bLDClickData := {|| CambiaChek(oBrw, oQry)}
      :CreateFromCode()
   END
   oChild:oClient := oBrw  
   ACTIVATE WINDOW oChild  
RETURN NIL

STATIC FUNCTION CambiaChek(oBrw,oQry)
oQry:logico := IF(oQry:logico==1,0,1)
oQry:Save()
oQry:Refresh()
oBrw:Refresh()
RETURN nil
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: SET CHECK EN BROWSE CON DATA DE UN QUERY

Postby joseluisysturiz » Sat Aug 13, 2022 6:33 pm

CMSOFT, eso es lo que hacia pero con la tabla original, y es lo que no quiero seguir haciendo, tranquilo, vere que se me ocurre, el de la solucion deberia ser Mr RAO que como dices, es el mejor conocedor del xBrowse, la idea es que se pueda hacer con una query , asi como se hace con un array, gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: SET CHECK EN BROWSE CON DATA DE UN QUERY

Postby nageswaragunupudi » Tue Aug 30, 2022 5:36 pm

Use
Code: Select all  Expand view
oBrw:SetMultiSelCol()


This does all the work for you

Please see fwh\samples\xbmulsel.prg
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10248
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: SET CHECK EN BROWSE CON DATA DE UN QUERY

Postby cmsoft » Tue Aug 30, 2022 8:51 pm

Estimado Mr. Rao:
Excelente, muchas gracias!
Esto lo tengo que capturar con oBrw:aSelected o hay alguna manera de obtener el conjunto de datos de la query original que han sido seleccionados?
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: SET CHECK EN BROWSE CON DATA DE UN QUERY

Postby nageswaragunupudi » Tue Aug 30, 2022 11:52 pm

Code: Select all  Expand view
oBrw:aSelected

List of Record Numbers / BookMarks selected.
But we need to save this information before the browse is closed.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10248
Joined: Sun Nov 19, 2006 5:22 am
Location: India


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 88 guests