Intento crear una función con la cual pasar algunos parámetros y obtener un browse de una tabla al cual dando doble click en un elemento se pueda editar el mismo, usando Xbrowse y Xedit.
Lo hago así:
Parámetros:
- Code: Select all Expand view
//Script de la tabla
aAdd( aSql, 'SELECT id, descripcion, idcategoria, sector, ordenlinea FROM puestos AS p ORDER BY id' )
//Campos y cabezales para el xbrowse
aAdd( aFields, { 'id', 'descripcion', 'idcategoria', 'sector', 'ordenlinea' } )
aAdd( aHeaders, { 'Id', 'Descripción', 'Id.Categoría', 'Sector', 'Orden en Línea' } )
//Título del browse
aAdd( aTitleBrw, 'Puestos de Faena' )
así por cada tabla a la que deseo mostrar.
Para ver la tabla hago:
- Code: Select all Expand view
BrwSql( aSql[1], aFields[1], aHeaders[1], aTitleBrw[1] )
Así está hecha la función:
- Code: Select all Expand view
FUNCTION Brwsql( aSql, aFields, aHeaders, aTitleBrw )
LOCAL oWndChild, cSql, cFields, cHeaders, cTitleBrw
SetBalloon( .t. )
xbrNumformat( ,.t. )
oRs:= oCn:Rowset( aSql, .t. )
IF oRs != nil
DEFINE WINDOW oWndChild MDICHILD OF oWnd TITLE "Tabla de: " + atitlebrw
@ 0,0 XBROWSE oBrw OF oWndChild DATASOURCE oRs FIELDS aFields HEADERS aHeaders ;
AUTOCOLS AUTOSORT FOOTERS LINES CELL ;
ON DblClick MyXEdit( oRs, aFields, aHeaders, oBrw )
aEval( oBrw:aCols, { |oCol| oCol:cHeader := Upper( Left( oCol:cHeader, 1 ) ) + Lower( Substr( oCol:cHeader, 2 ) ) } )
oBrw:bPopUp := { |o| ColMenu( o ) }
oBrw:CreateFromCode()
oWndChild:oClient := oBrw
SET MESSAGE OF oWndChild TO ;
"Doble click le permite modificar una fila o agregar una nueva.." 2010
ACTIVATE WINDOW oWndChild MAXIMIZED
oRs:Close()
ELSE
oCn:ShowError()
ENDIF
RETURN nil
//-----------------------------------------------------------------------------------------------
FUNCTION MyXEdit( oRs, aFields, aHeaders )
LOCAL aFieldsHeaders:={}
FOR i = 1 to Len( aFields )
aAdd( aFieldsHeaders, { aFields[i], aHeaders[i] } )
NEXT i
oRec := FW_Record():New( oRs )
oRec:SetPrompt( aFieldsHeaders )
oRec:Edit()
RETURN nil
//----------------------------------------------------------------------------//
El resultado es este en el browse:
Despliega los campos, pero además despliega una columna con el array aFields.
Por otro lado si en lugar de usar un script abro cargo toda la tabla, me muestra todos los campos y no los del fieldlist, y una columna más con el array aFields.
Estoy seguro que hago algo mal, pero no me doy maña para dar con la solución (las neuronas ya no son las mismas, son muchas menos )
Agradeceré cualquier guía que puedan darme.
Gracias desde Ya.