FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Mysql y Dbf
Posts: 84
Joined: Tue Jul 26, 2016 09:52 PM
Mysql y Dbf
Posted: Wed Nov 15, 2017 02:35 PM

Estimados, una Consulta, por efectos de que me resulta mas facil entender la manera de trabajar con DBF, en archivos de trabajo temporal, pero
a su vez aprovechando el motor de busqueda de Mysql. alguno de uds. habra trabajado con ambas opciones a la vez..

Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Mysql y Dbf
Posted: Wed Nov 15, 2017 02:42 PM

Hola buenos d铆as

La mayor铆a de los desarrollos que he creado con FW, los hice de la manera que tu comentas. Archivos temporales en dbf y el motor de mysql para la informaci贸n base. De esta manera he logrado acelerar la creaci贸n de reportes.

Saludos

Saludos
LEANDRO AREVALO
Bogot谩 (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Mysql y Dbf
Posted: Wed Nov 15, 2017 04:30 PM

Amigos:

Les recuerdo que tambi茅n se pueden usar tablas TEMPORALES y es muy sencillo su uso.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Mysql y Dbf
Posted: Wed Nov 15, 2017 08:10 PM

Como bien dice Armando, utilizar tablas temporales de MySql es muy ventajoso. Desde mi punto de vista por 2 cosas.
1) La tabla temporal que se crea, solo es visible en la conexion que se creo, por lo tanto puede ser utilizada como si el sistema se utilizara en monousuario, sin tener en cuenta que puede haber 100 usuarios conectados que hayan creado sus 100 tablas temporales al mismo tiempo. Esto evita el tema de tener que crear archivos temporales dbf para cada usuario si el sistema se usa en una red o tener que utilizarlo en exclusiva y perder la posibilidad de operar simultaneamente sobre ese archivo dbf.
2) Sobre una tabla temporal se pueden aplicar filtros, ordenes, etc. etc. que si lo queremos hacer con un dbf tenemos que crear los indices necesarios.
Creo que una vez sumergido en el entorno MySql hay que tratar de aprovechar al m谩ximo su potencial.
Es mi simple parecer...

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Mysql y Dbf
Posted: Wed Nov 15, 2017 10:13 PM

Estimado

Tienen alg煤n ejemplo de c贸mo crear tablas temporales en MySql/MariaDB

Gracias.

Saludos,



Adhemar C.
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: Mysql y Dbf
Posted: Thu Nov 16, 2017 12:04 AM
Hola,

es tan sencillo como :

Code (fw): Select all Collapse
CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)


esa sentencia te crea una tabla temporal table2 con la estructura de la tabla table1, y con la informaci贸n de la misma. Tambi茅n puedes utilizar el clasico formato con nombre de columna y tipo

La tabla temporal solo podra ser accedida desde la sesi贸n donde fue creada y su vida ser谩 hasta que la sesi贸n termine, salvo que la borres antes.

Saludos

Marcelo V铆a
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Mysql y Dbf
Posted: Thu Nov 16, 2017 02:12 PM

Muchas gracias Marcelo

Saludos,



Adhemar C.
Posts: 84
Joined: Tue Jul 26, 2016 09:52 PM
Re: Mysql y Dbf
Posted: Thu Nov 16, 2017 02:47 PM

Estimados, entiendo que es mejor Mysql que dbf, pero como hago una tabla temporal con indices...

algo como...

Select 60
ARCHI2 = "TEMEXT"+Alltrim(cUser[3])
If net_use(ARCHI2,.T.,0)
zap
Index On (Archi2)->Cod_Text + Str((Archi2)->Servicio) to Archi2
Endif

Como se har铆a esto con Mysql.... perd贸n, pero me pierdo.... ya que despu茅s....debo generar una rutina que ordene los datos y me vaya
dando datos acumulados, seg煤n como este ordenada la tabla, por grupo y sub grupos.

Atte.,

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Mysql y Dbf
Posted: Fri Nov 17, 2017 04:37 AM
Simple, solo le das el orden que queres con ORDER BY
Con Dolphin seria asi:
Code (fw): Select all Collapse
oApp:oServer:Execute("";
聽 聽 + "CREATE TEMPORARY TABLE IF NOT EXISTS ventas_det_H ";
聽 聽 +"( `id` INT(6) NOT NULL AUTO_INCREMENT, ";
聽 聽 +"`CODART` bigint(13) NOT NULL,"; 聽
聽 聽 +"`DETART` VARCHAR(50) NOT NULL,";
聽 聽 +"`CANTIDAD` DECIMAL(8,3) DEFAULT '0',";
聽 聽 +"`PUNIT` DECIMAL(10,2) DEFAULT '0.00', ";
聽 聽 +"`NETO` 聽DECIMAL(10,2) DEFAULT '0.00', ";
聽 聽 +"`DESCUENTO` 聽DECIMAL(10,2) DEFAULT '0.00', ";
聽 聽 +"`STOTAL` 聽DECIMAL(10,2) DEFAULT '0.00', ";
聽 聽 +"`IVA` DECIMAL(10,2) DEFAULT '0.00', ";
聽 聽 +"`CODIVA` INT(2) DEFAULT '0', ";
聽 聽 +"`PTOTAL` DECIMAL(10,2) DEFAULT '0.00',";
聽 聽 +"PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8")
oApp:oServer:Execute("TRUNCATE ventas_det_h") // La vacio por si existia y tenia datos

oQryDet:= oApp:oServer:Query("SELECT * FROM ventas_det_h ORDER BY CODART") // La abro ordenada or CODART, aunque su indice natural es ID


Y en el transcurso del programa podes cambiarle el orden simplemente indicando por que campo
oQryDet:SetOrder("DETART",.T.)
Si la muestras en un xBrowse y defines el mismo AUTOSORT el usuario puede elegir libremente por que campo desear ordenarla haciendo click en el encabezado
Posts: 84
Joined: Tue Jul 26, 2016 09:52 PM
Re: Mysql y Dbf
Posted: Fri Nov 17, 2017 03:27 PM

cuantos indices se pueden generar en una tabla normal y en una tabla temporal.

esto de abajo es lo que necesito hacer, abrir una tabla y el resultado de los grupos buscados pasarlo como item total a otra tabla temporal.

Tabla seria... codigo, marca, area, detalle, valor, cantidad... y debo ordenar por codigo, marca y area, para saber por esos grupos cuantos son y eso pasarlo a otra base temporal, que debe estar ordenada por codigo

Temporal codigo, marca, area, cantidad

Conta:=0

tabla:gotop()
do while .not. eof()
codigo:=tabla:codigo

do while .not. eof() .and. codigo:tabla:codigo
     marca:=tabla:marca

     do while .not. eof() .and. codigo:tabla:codigo .and.  marca=tabla:marca
         area:=tabla:area

         do while .not. eof() .and. codigo:tabla:codigo .and.  marca=tabla:marca .and. area=tabla:area
             cuenta++

             tabla:skip
         enddo
         if conta # 0
            append blank
            Replace temporal:codigo    with codigo
            Replace temporal:marca    with marca
            Replace temporal:area       with area
            Replace temporal:cantidad with cantidad
         Endif
     enddo
enddo

esta super resumido pero en lo general eso necesito hacer..

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Mysql y Dbf
Posted: Fri Nov 17, 2017 03:39 PM
Si lo que queres hacer es simplemente "mostrar" un resultado resumido en un xbrowse, lo que podes hacer es una query que contenga esa info y mostrarla.
Code (fw): Select all Collapse
oQry := oServer:Query("SELECT codigo,   marca, area, COUNT(codigo) as cantidad FROM tabla GROUP BY codigo,marca,area ORDER BY codigo")
xbrowse(oQry)
Posts: 84
Joined: Tue Jul 26, 2016 09:52 PM
Re: Mysql y Dbf
Posted: Fri Nov 17, 2017 04:09 PM

Estimado... te pasaste... voy a probarlo... que poco se de mysql.... :cry: :cry:

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Mysql y Dbf
Posted: Fri Nov 17, 2017 09:39 PM

Animo compa帽ero!! Ac谩 estamos para ayudarnos entre todos... Simplemente hay que sacarse el chip del dbf y ponerse el de MySql. En la web hay muchisima info. A veces lo que antes nos llevaba a tener que considerar un monton de campos e indices en nuestras aplicaciones, ahora el motor de MySql nos resuelve muchisimo la vida.
Cualquier duda no dejes de consultar.

Continue the discussion