Page 1 of 1

Pasar de TDolphin a FWHMariaDB

PostPosted: Mon May 08, 2023 8:37 pm
by acuellar
Buenas estimados

Pasar de TDolphin (de Daniel Garcia) a FWHMariaDB Nativo
TDolphin se quedó sin actualización desde hace mucho tiempo. (Pero funciona)
Con FWHMariaDB se emplea menos código y da mejor performance.

Deben enlazar las siguientes LIB
libmariadb.lib para BCC y libmariadb32.lib para MSVS Necesitan libmariadb.dll

mysqlclient.lib para MSVS no necesita de ninguna DLL es un poco mas grande el EXE
Pero lo pueden comprimir con: UPX sistema.exe --lzma

El siguiente resumen, todo está en el foro brindado por Mr. RAO en diferentes TOPICS
Code: Select all  Expand view

SET EXACT ON //Se debe activar para las busquedas
  MYSQL_TinyIntAsLogical(.T.) //Activar los campos TINYINT en lógicos
 
  TRY
     FWCONNECT oCn HOST "localhost/IP" USER "root" PASSWORD "password" DB "database"
   CATCH oErr
     ?"No conecta con el servidor MySqlMaDB"
     RETURN NIL
   END
   oPlani:=oCn:Query( "SELECT * FROM PLANILLA") Es igual oPlani:=oCn:RowSet( "SELECT * FROM PLANILLA")
   oSQL:oPlani:Record(.T.) //Registro en blanco
   oSQL:oPlani:Record() //Carga los datos
   oCn:BeginTransaction() //Inciar el proceso de guardado
   oCn:CommitTransaction() //Guarda inmediatamente el registro
   aOrigen:=ArrTranspose( oCn:Execute( "SELECT DESCRIP FROM TABLAS WHERE QT = 'O' ORDER BY DESCRIP" ) )[ 1 ] //Llena la tabla con una columna
   nMesP:=2
   oRs:=oCn:Query( "SELECT * FROM PLANILLA WHERE MESP = ? ORDER BY CODIGO",{nMesP})
   nMesP:=3
   oRs:ReQuery({nMesP}) //Para recargar la tabla
   oRs:Refresh()
   oCn:Insert("PLANILLA","MESP,CODIGO,NOMBRE",{cMesP,nCOD,cNOM} ) //Insertat registro
   oRs:Delete() //Borrar el registro actual
   oCn:Execute( "DELETE FROM PLANILLA WHERE `CODIGO` LIKE '1%'" ) //Para borrar con condición
   oRs:UPDATE("CAMPO1,CAMPO2",{nDATO1,cDATO2}) //Actualizar datos
 


//Si aún sigue con DBF y quiere dar el gran salto. descargar de aquí el motor MariaDB
https://mariadb.org/download/?t=mariadb&p=mariadb&r=11.1.0&os=windows&cpu=x86_64&pkg=msi&m=insacom

//Si quiere pasar todas sus DBF con datos a SQL utilice DBF2SQL de Kleyber Descargar de aquí:
https://drive.google.com/file/d/1vC32WQL1zuqHetm8IHxL-ogBES0Xp9qm/view?usp=sharing

//Quizás alguien sepa de otro método para pasar de DBF a SQL.

Espero le sirva o ayude a alguien

Re: Pasar de TDolphin a FWHMariaDB

PostPosted: Tue May 09, 2023 9:05 am
by Joaquim Ferrer
Personalmente para migraciones utilizo la excelente utilidad de (X)ailer, xaSQLite

Búsquenla por la red...

Permite importar masivamente tablas DBF a SQLite y posteriormente exportar la base de datos a MySQL/MariaDB

En desarrollos grandes (tipo ERP) es muy interesante compaginar las DBF con una BD SQLIite, ya que poco a poco podemos ir migrando a SQLite, con un único fichero al estilo de una DBF, incluso compaginar los 2 mundos, con los RDD adecuados (Busquen HDO del amigo xManuel :)

Saludos

Re: Pasar de TDolphin a FWHMariaDB

PostPosted: Wed May 10, 2023 4:22 pm
by JoseAlvarez
Hola Ademar, saludos.

Gracias por el aporte.

He estado tentado a hacer el cambio de TDOLPHIN a la clase nativa, pero para ser sincero, he leido el foro y veo que el uso de la misma como que es complicado, de hecho vi en un post que un coloega desistió de usarla; o quizás sea cuestion de cambiarse el chip con tdolphin. En todo caso la curva de aprendizaje parece ser un poco cuesta arriba.

¿Donde se puede conseguir documentacion paso a paso de la clase de mr rao y si es posible con algunos ejemplos con consultas complejas?

Espero no estar pidiendo mucho.

Muchas Gracias !

Re: Pasar de TDolphin a FWHMariaDB

PostPosted: Wed May 10, 2023 9:37 pm
by acuellar
Estimado José

No comparto lo de complicado. A mi parecer es sencillo. Y con respuesta al instante de Mr. Rao para darnos soporte.

Lo que se tiene que hacer es interpretar el uso de ClipValue2SQL que se usa bastante en TDolphin.

Las consultas son similares tantos las sencillas como en las complejas.

Lamentablemente los links de la documentación de FiveWiki están caídos :(
https://forums.fivetechsupport.com/viewtopic.php?f=6&t=33304&sid=341f0805e2bc71dec3a11368a9dfaeec&sid=9b16f85d0d9bbf89e948c89e427acbc8#p219418

Mr. Rao Please review them

Re: Pasar de TDolphin a FWHMariaDB

PostPosted: Wed May 10, 2023 11:24 pm
by JoseAlvarez
Ok, bueno, intentemosle a ver...

Esperemos que mr rao reactive los enlaces

Iremos probando, soy de los que piensa que mientras menos lbrerias o recursos de 3ros se usen es mejor, sin dejar de reconocer y agradecer esos aportes.

Re: Pasar de TDolphin a FWHMariaDB

PostPosted: Thu May 11, 2023 12:23 pm
by nageswaragunupudi
Full documentation is available in the forums also:
viewtopic.php?f=3&t=33286

Re: Pasar de TDolphin a FWHMariaDB

PostPosted: Thu May 11, 2023 12:36 pm
by nageswaragunupudi
Exporting tables from DBF to MySql/MariaDB using FWMariaDB library is as simple as:
Code: Select all  Expand view
aDbf := DIRECTORY( "c:\mydata\*.dbf" )
AEval( aDbf. { |a| oCn:ImportFromDBF( "c:\mydata\" + a[ 1 ] ) } )

Done.

Re: Pasar de TDolphin a FWHMariaDB

PostPosted: Thu May 11, 2023 2:30 pm
by acuellar
Thanks very much Mr. Rao

Re: Pasar de TDolphin a FWHMariaDB

PostPosted: Fri May 12, 2023 6:50 am
by nageswaragunupudi
ClipValue2SQL

Corresponding in FW is oCn:ValToSQL()

But when you start using FW MySql, you will not find the need to use ClipValue2SQL() or its equivalent. In fact, you will find it not necessary even to prepare SQL statements in most cases.

Please give me a small example using ClipValue2SQL()

Re: Pasar de TDolphin a FWHMariaDB

PostPosted: Fri May 12, 2023 12:07 pm
by acuellar
Thanks Mr. Rao

I have not needed oCn:ValToSQL()
Code: Select all  Expand view

oEMPL:=oServer:Query("SELECT * FROM DATPER WHERE IDSECT = " + ClipValue2SQL( nCC ) + " AND !lOUT ORDER BY CODIGO")
//I did it like this
oEMPL:=oCn:Query("SELECT * FROM DATPER WHERE IDSECT = ? AND !lOUT ORDER BY CODIGO",{ nCC} )

Other case
oEMPL:= oServer:Query( "SELECT COUNT(*) AS NumRecs FROM ext_otr1 WHERE fec_ing BETWEEN &1 AND &2", { ClipValue2SQL( dDate1 ), ClipValue2SQL( dDate2 ) } )
//
oEMPL:= oCn:Query( "SELECT COUNT(*) AS NumRecs FROM ext_otr1 WHERE fec_ing BETWEEN &1 AND &2", { dDate1, dDate2  } )