Xbrowse, FastEdit y xBrw:Edit() RESUELTO

Xbrowse, FastEdit y xBrw:Edit() RESUELTO

Postby jose_murugosa » Mon Jul 17, 2023 7:00 pm

Quisiera consultar a mis compañeros del foro sobre la edición in line y oBrw:Edit(lappend) en xBrowse.
Trato hace dos semanas de crear una función que me permita hacer un browse de una tabla con una barra de botones "NUEVO EDITAR" que permita la edición en línea del xbrowse y también hacerlo en formulario a través de oBrw:Edit()

No logro que sea un browse editable pese a que me aseguré de que la cláusula oBrw:nEditTypes := EDIT_GET estuviera.
No puedo editar en línea ni tampoco hacerlo con el oBrw:Edit.

Por lo demás todo funciona

Supongo que para variar soy yo el torpe :oops: pero no puedo darme cuenta que está mal.

//Script de la tabla
aAdd( aSql, 'SELECT l.id, l.lugar, l.numerodellaves FROM llaves AS l ORDER BY l.id' )
//campos y cabezales para el xbrowse
aAdd( aCampos, { 'id', 'lugar', 'numerollaves' } )
aAdd( aHeaders, { 'Id.', 'Lugar', 'Cant. Llaves' } )
//Título del browse
aAdd( aTitleBrw, 'Llaves' )

Ejecución de la función: BrwSql( aSql[1], aCampos[1], aHeaders[1], aTitleBrw[1] )

Aquí les dejo la función lo más simplificada que pude y reproduce los errores mencionados.

Code: Select all  Expand view

#include "Fivewin.ch"
#include "xbrowse.ch"

STATIC oRs, oBrw, oWndChild

FUNCTION Brwsql( aSql, aCampos, aHeaders, aTitleBrw )

     oRs:= oCn:Rowset( aSql, .t. )

     IF oWndChild == NIL
          IF oRs != nil
         
               DEFINE WINDOW oWndChild MDICHILD OF oWnd TITLE ( "Tabla: " + atitlebrw )
               
                    @0,0 XBROWSE oBrw OF oWndChild DATASOURCE oRs HEADERS aHeaders ;
                         AUTOCOLs AUTOSORT FASTEDIT LINES CELL
                         
                    aEval( oBrw:aCols, { |oCol| oCol:cHeader := Upper( Left( oCol:cHeader, 1 ) ) + ;
                           Lower( Substr( oCol:cHeader, 2 ) ) } )
                    oBrw:nEditTypes := EDIT_GET
                   
                    //oBrw:bPopUp := { |o| ColMenu( o ) }
                    Barrabot2()
                    oBrw:CreateFromCode()
                    oWndChild:oClient := oBrw
                   
                    SET MESSAGE OF oWndChild TO ;
                         "Doble click le permite modificar una fila o agregar una nueva.." CENTERED 2010
                         
               ACTIVATE WINDOW oWndChild MAXIMIZED  Valid( oWndChild := NIL, .T. )
               oRs:Close()
          ELSE
               oCn:ShowError()
          ENDIF
     ELSE
          oWndChild:Setfocus()
     ENDIF
     
RETURN nil

//----------------------------------------------------------------------------
FUNCTION Barrabot2()
     LOCAL oBar
     DEFINE BUTTONBAR oBar SIZE 100,24 OF oWndChild 2007
          DEFINE BUTTON OF oBar PROMPT 'Nuevo'  ACTION oBrw:Edit(.t.)
          DEFINE BUTTON OF oBar PROMPT 'Editar' ACTION oBrw:Edit()
RETURN oBar
//----------------------------------------------------------------------------
Last edited by jose_murugosa on Thu Jul 20, 2023 12:14 pm, edited 1 time in total.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1177
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Xbrowse, FastEdit y xBrw:Edit() tratando de entender...

Postby artu01 » Tue Jul 18, 2023 5:20 am

Hola no lo he probado a ver si te ayuda
Code: Select all  Expand view

   for each cCol in aheaders
      WITH OBJECT oBrw:oCol( cCol )
         :nEditType     := EDIT_GET
      END
   next
 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Xbrowse, FastEdit y xBrw:Edit() tratando de entender...

Postby jose_murugosa » Tue Jul 18, 2023 9:14 pm

Gracias por Contestar Artu01.
Ya lo he probado, pero sin éxito.

El Maestro Rao dice en otro post;
If oCol:nEditType is > 0 and oCol:lReadOnly is .F. ( default ) and oCol:bEditWhen is NIL (default ) or Evaluates to .T.
inline edit of the cell is automatically available (whether oBrw:lFastEdit is .T. or .F. ) ...
Methods oBrw:Edit( lAppend ) and oBrw:EditSource( lAppend ) are provided if the programmer wants to
provide edit of the Row in a dialog form....


Pero sigo sin resultados :(

Gracias por tu ayuda.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1177
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Xbrowse, FastEdit y xBrw:Edit() tratando de entender...

Postby cmsoft » Wed Jul 19, 2023 1:52 am

Jose, yo no manejo demasiado la clase nativa, pero hice esta prueba y funciona bien
Los cambios que hice son menores, casi puse toda tu funcion
Code: Select all  Expand view
#include "fivewin.ch"
#include "xbrowse.ch"
STATIC oCn, oRs , oBrw, oWndChild
function Test()

FWCONNECT oCn HOST "localhost" USER "root" PASSWORD "secret" DB "test"

Brwsql("SELECT * FROM customer",{"FIRST","LAST","STREET","CITY","STATE"},{"Nombres","Apellido","Calle","Ciudad","Estado"},"Personas")  

RETURN nil


STATIC FUNCTION Brwsql( aSql, aCampos, aHeaders, aTitleBrw )
      oRs := oCn:Rowset( aSql, .f. ) //Aca el 2do parametro lo puse falso - Tambien podrias usar oCn:Query(aSql) y funciona de la misma manera
       
               DEFINE WINDOW oWndChild TITLE ( "Tabla: " + atitlebrw )
               
                    @0,0 XBROWSE oBrw OF oWndChild DATASOURCE oRs HEADERS aHeaders COLUMNS aCampos ;
                         AUTOSORT FASTEDIT LINES CELL
                         
                    oBrw:nEditTypes := EDIT_GET
                    Barrabot2()
                    oBrw:CreateFromCode()
                    oWndChild:oClient := oBrw
                   
                    SET MESSAGE OF oWndChild TO ;
                         "Doble click le permite modificar una fila o agregar una nueva.." CENTERED 2010
                         
               ACTIVATE WINDOW oWndChild MAXIMIZED  Valid( oWndChild := NIL, .T. )
               oRs:Close()
     
RETURN nil

//----------------------------------------------------------------------------
FUNCTION Barrabot2()
     LOCAL oBar
     DEFINE BUTTONBAR oBar SIZE 100,24 OF oWndChild 2007
          DEFINE BUTTON OF oBar PROMPT 'Nuevo'  ACTION oBrw:Edit(.t.)
          DEFINE BUTTON OF oBar PROMPT 'Editar' ACTION oBrw:Edit()
          DEFINE BUTTON OF oBar PROMPT 'Eliminar' ACTION IF(MsgNoYes("Seguro de borrar?"),oRs:Delete(),nil)
RETURN oBar
//----------------------------------------------------------------------------
 
User avatar
cmsoft
 
Posts: 1285
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Xbrowse, FastEdit y xBrw:Edit() tratando de entender...

Postby nageswaragunupudi » Wed Jul 19, 2023 9:55 am

Code: Select all  Expand view
              ACTIVATE WINDOW oWndChild MAXIMIZED  Valid( oWndChild := NIL, .T. )
               oRs:Close()
 

Recommended
Code: Select all  Expand view
oWndChild:bPostEnd := { || oRs:Close() }
ACTIVATE WINDOW oWndChild
Regards

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

Re: Xbrowse, FastEdit y xBrw:Edit() tratando de entender...

Postby jose_murugosa » Wed Jul 19, 2023 9:57 am

Gracias César, Gracias Maestro Rao, ya probé y funciona perfectamente.

Maestro Rao, creo que hay un pequeño error en la documentación de la clase nativa de fivewin.

Dice:
1) oRs := oCn:RowSet( cTable(or)cSql, [lShowError] ) // simple and normal

Pero me parece que el segundo parámetro es lreadonly y por eso no funcionaba, porque en .t. no permite editar y al pasarlo a .f. a sugerencia de César funcionó perfectamente.

Consulto porque me llama la atención.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1177
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Xbrowse, FastEdit y xBrw:Edit() tratando de entender...

Postby nageswaragunupudi » Wed Jul 19, 2023 3:18 pm

You are right
Possible params are:
RowSet( cSql, aParams, lReadOnly )
RowSet( cSql, aParams, nLimit, lReadOnly )
RowSet( cSql, nLimit, lReadOnly )
RowSet( cSql, lReadOnly )
Regards

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

Re: Xbrowse, FastEdit y xBrw:Edit() tratando de entender...

Postby jose_murugosa » Thu Jul 20, 2023 12:13 pm

Thanks a lot Mr. Rao.

xbrowse and FWHMariadb works wonderfully!!
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1177
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 75 guests