Page 1 of 1

New FTDN November 2018 (FWH 18.11)

Posted: Sat Dec 01, 2018 10:46 am
by Antonio Linares
November 2018
=============

* XBROWSE:
- Bitmaps were being painted only when the column width is greater than the
bitmap width. Now the bitmaps are resized and painted.

- ToExcel: Datetime values are not exported unless oBrw:lCellExcelWise is
set to .t. Now exported correctly in all cases.

- Ado fields of type adVarChar or adVarWChar with DefinedSize -1 were not
being displayed. Now, they are displayed as memo fields.

- Browsing Hash: If the first value is numeric, logical and date values in
subsequent values are not displayed correctly. Fixed.

- ColsAsRows: Version 18.05 introduced an enhanced edit feature by
providing a dialog for edit of all rows. With a view to keep backward
compatibility this feature is made available only if oCol:lMultiRowEdit
is set to .t.

* TDataRow:
- Modified destructor method for compatibility with xHarbour for derivation
of classes from TDatarow

* edit.prg: Bug fix in method VarPut()
http://forums.fivetechsupport.com/viewt ... =3&t=36364

* Enhancement: function FW_DT2STR( tDateTime, [lISO8601] )
Optional 2nd parameter lISO8601 (default .f.)
If .t., returns datetime as YYYY-MM-DDTHH:MM:SS

* adofuncs:

- function RsGetRows( oRs, [nRows], [nStart], [aFields] ) -> aRows
Enhanced with 3 additional optional paramters
nRows: Number of rows. Default all rows rest.
nStart: 0 : Default from current Row
1 : From first row
2 : From last row
aFields: Array of field names. Default all fields

- New: RsToHash( oRs, [nRows], [nStart], [aFields] ) --> Array of Hashes
- New: RsToJson( oRs, [nRows], [nStart], [aFields] ) --> Json Array

* FWMARIADB:
FWMARIADBCONNECTION
- New methods:
CopyTableToServer( cTable, oDestServer, [nBatchSize] )
Copies and replaces cTable on the oDestServer from the
current server. Optional nBatchSize (default 1000) may
be reduced to a much smaller size in case of tables with
blobs and large memofields.

- UpdateTableToServer( cTable, oDestServer, cTimeStampFld )
Updates cTable on the destination server with the latest
changes made to cTable on current server. This is possible
only if the table contains a timestamp field created with
datatype "=".

- FWMARIAROWSET

TABLE REPLICATION:

New Datas:
oReplServer
bOnReplFail

If oRs:oReplServer is assigned with connection object to an external
server, all modifications (modify,append and delete) made to
the main table are also simulataneously made to the table with
the same name on the external server. It is the responsibility
of the programmer to keep both tables identical and not to modify
the table on the second server directly.
see \fwh\samples\mariarpl.prg
http://forums.fivetechsupport.com/viewt ... =3&t=36382
http://forums.fivetechsupport.com/viewt ... =6&t=36383

If write to oReplServer fails, bOnReplFail is evaluated. If
oReplServer is set to nil, replication is discontinued or else
the write to main server is rolled back.

New methods:
RecToHash( [aFields] )
RecToJson( [aFields] )
ToHash( [anRows], [nStart], [aFields] )
ToJson( [anRows], [nStart], [aFields] )

* TDATABASE:
- New method SetReplicationServer( oServer )
oServer can be a MariaDB connection object.
This invokes automatic replication of all changes to the DBF
(add,edit,delete) made through the class to a table with the
same name, structure and data on the MariaDB server.
For more details please see:
http://forums.fivetechsupport.com/viewt ... =3&t=36386
http://forums.fivetechsupport.com/viewt ... =6&t=36387
fwh\samples\dbf2sql.prg.

* New Json (and Hash) support functions:

- ArrToHash( acHeader, aData )
Returns hHash with aHeader as keys and aData as values.
If aData is multi-dimensional array returns array of hashes
If acHeader is 2 dimensional array and aData is nil, first
dimension of acHeader is considered as head and second dimension
is considered as data.

- ArrToJson( acHeader, aData )
- RsToJson( oAdoRs, [nRows], [nStart], [aFields] ) --> Json Array
- FW_RecToJson( [acFields], [acNames] ) // for dbf record
- FW_DbfToJson( [cFieldList], [bFor], [bWhile], [nNext], [nRec], [lRest], [aData] )
- FW_DbfToHash( [cFieldList], [bFor], [bWhile], [nNext], [nRec], [lRest], [aData] )
- oMariaRs:RecToJson( [aFields] )
- oMariaRs:ToJson( [anRows], [nStart], [aFields] )

- Date/DateTime values in Json are converted as ISO8601 formatted strings.

- FW_JsonDecode( cJson, @hHash )
Same as HB_JsonDecode() but in addition translates ISO1801 datetime
strings to proper date/datetime values.

- FW_SetJsonHuman( lSet ) --> lPreviousSet
If set to .t. all Json outputs are in human readable format.

Re: New FTDN November 2018 (FWH 18.11)

Posted: Thu Dec 27, 2018 4:57 pm
by Antonio Linares
Noviembre 2018
==============
* XBROWSE:
- Los mapas de bits estaban siendo pintados sólo cuando el ancho de la columna
es mayor que el ancho del mapa de bits. Ahora los mapas de bits son
redimensionados al pintarse.

- ToExcel: Los valores "Datetime" no son exportados a menos que oBrw:lCellExcelWise
sea puesto a .T.. Ahora son exportados correctamente en todos _.
- _ "ADO" de tipo "adVarChar" o "adVarWChar" con "DefinedSize -1" no eran
mostrados. Ahora, son mostrados como campos "memo".
- Hashs de navegación: si el primer valor es numérico, los valores lógicos y de fecha
en los valores posteriores no se muestran correctamente. Corregido.
- ColsAsRows: La versión 18.05 introdujo una característica de edición mejorada al proporcionar
un cuadro de diálogo para editar todas las filas. Con el fin de mantener la compatibilidad
con versiones anteriores, esta característica solo estará disponible si oCol: lMultiRowEdit está
establecido en .T.
* TDataRow:
- Modificado el método destructor para la compatibilidad con xHarbour para la deivación de clases
en TDatarow.
* edit.prg: Corregido error en el método VarPut()
viewtopic.php?f=3&t=36364

* Mejora: En la función FW_DT2STR( tDateTime, [lISO8601] )
Opcional un segundo parámetro lISO8601 (por defecto .F.)
Si es .T., entonces devuelve "datetime" como "YYYY-MM-DDTHH:MM:SS"
* adofuncs:
- Función RsGetRows( oRs, [nRows], [nStart], [aFields] ) -> aRows
Mejorada con tres parámetros opcionales
nRows: Número de filas. Por defecto toadas las filas.
nStart: 0 : Por defecto la fila actual.
1 : Desde la primera fila.
2 : Desde la última fila.
aFields: Matriz de nombres de campo. Por defecto todos _.
- Nueva: RsToHash( oRs, [nRows], [nStart], [aFields] ) --> Matriz de Hashes
- Nueva: RsToJson( oRs, [nRows], [nStart], [aFields] ) --> Matriz de Jsons
* FWMARIADB:
FWMARIADBCONNECTION

- Nuevos métodos:
CopyTableToServer( cTable, oDestServer, [nBatchSize] )

Copia y reemplaza cTable sobre oDestServer desde el servidor actual.
El parámetro opcional nBatchSize (por defecto 1000) puede reducirse a un
tamaño mucho más pequeño en cado de tablas con campos blobs y grandes campos
memo.

UpdateTableToServer( cTable, oDestServer, cTimeStampFld )

Actualiza cTable en el servidor de destino con el último cambio realizado sobre
cTable en el servidor actual. Esto es posible sólo si la tabla tiene un campo
"timestamp - marca de tiempo" creado con el tipo de dato "=".

- FWMARIAROWSET
REPLICACION DE TABLAS:
Nuevos Datas:
oReplServer
bOnReplFail

Si oRs:oReplServer se asigna con un objeto de conexión a un servidor externo,
todas las modificaciones (modificar, añadir y eliminar) realizadas en la tabla
principal también se realizarán simultáneamente en la tabla con el mismo nombre
en el servidor externo. Es responsabilidad del programador mantener ambas tablas
idénticas y no modificar la tabla en el segundo servidor directamente.
Ver \fwh\samples\mariarpl.prg
viewtopic.php?f=3&t=36382
viewtopic.php?f=6&t=36383

Si la escritura a oReplServer falla, el bloque de código bOnReplFail se evaluará.
Si oReplServer es puesto a NIL, la replicación se interrumpe y la escritura en el
servidor principal se vuelve atrás.
Nuevos métodos:
RecToHash( [aFields] )
RecToJson( [aFields] )
ToHash( [anRows], [nStart], [aFields] )
ToJson( [anRows], [nStart], [aFields] )
* TDATABASE:
- Nuevo método SetReplicationServer( oServer )

oServer puede ser un objeto de conexión MariaDB.
Esto invoca la replicación automática de todos _ al DBF
(añadir, editar, eliminar) realizados a través de la clase en una
tabla con el mismo nombre, estructura y datos en el servidor MariaDB.

Para más detalles por favor vea:
viewtopic.php?f=3&t=36386
viewtopic.php?f=6&t=36387
fwh\samples\dbf2sql.prg.
* Nuevas funciones de soporte de Json (y Hash):
- ArrToHash( acHeader, aData )
Devuelve hHash con aHeader como claves y aData como valores.
Si aData es una matriz multidimensional devuelve una matriz de hashes
Si acHeader es una matriz bidimensional y aData es nil, la primera dimensión
de acHeader se considera como cabecera y la segunda dimensión se considera como datos.
- ArrToJson( acHeader, aData )
- RsToJson( oAdoRs, [nRows], [nStart], [aFields] ) --> Matriz Json
- FW_RecToJson( [acFields], [acNames] ) // para el registro de la dbf
- FW_DbfToJson( [cFieldList], [bFor], [bWhile], [nNext], [nRec], [lRest], [aData] )
- FW_DbfToHash( [cFieldList], [bFor], [bWhile], [nNext], [nRec], [lRest], [aData] )
- oMariaRs:RecToJson( [aFields] )
- oMariaRs:ToJson( [anRows], [nStart], [aFields] )
- Los valores de Date / DateTime en Json se convierten a cadenas con formato ISO8601.
- FW_JsonDecode( cJson, @hHash )
Igual que HB_JsonDecode (), pero además traduce las cadenas de fecha y hora ISO1801
a los valores de fecha / fecha y hora adecuados.
- FW_SetJsonHuman( lSet ) --> lPreviousSet
Si se establece a .T., todas las salidas Json estarán en formato entendible por los
humanos.