Mysql y Dbf

Mysql y Dbf

Postby kpidata » Wed Nov 15, 2017 2: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..
kpidata
 
Posts: 80
Joined: Tue Jul 26, 2016 9:52 pm

Re: Mysql y Dbf

Postby leandro » Wed Nov 15, 2017 2: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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1480
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Mysql y Dbf

Postby Armando » Wed Nov 15, 2017 4: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
User avatar
Armando
 
Posts: 3049
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Mysql y Dbf

Postby cmsoft » Wed Nov 15, 2017 8: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...
User avatar
cmsoft
 
Posts: 1181
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Mysql y Dbf

Postby acuellar » 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.
User avatar
acuellar
 
Posts: 1589
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Mysql y Dbf

Postby Marcelo Via Giglio » Thu Nov 16, 2017 12:04 am

Hola,

es tan sencillo como :

Code: Select all  Expand view

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
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Mysql y Dbf

Postby acuellar » Thu Nov 16, 2017 2:12 pm

Muchas gracias Marcelo
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1589
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Mysql y Dbf

Postby kpidata » Thu Nov 16, 2017 2: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.,
kpidata
 
Posts: 80
Joined: Tue Jul 26, 2016 9:52 pm

Re: Mysql y Dbf

Postby cmsoft » Fri Nov 17, 2017 4:37 am

Simple, solo le das el orden que queres con ORDER BY
Con Dolphin seria asi:
Code: Select all  Expand view

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
User avatar
cmsoft
 
Posts: 1181
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Mysql y Dbf

Postby kpidata » Fri Nov 17, 2017 3: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..
kpidata
 
Posts: 80
Joined: Tue Jul 26, 2016 9:52 pm

Re: Mysql y Dbf

Postby cmsoft » Fri Nov 17, 2017 3: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: Select all  Expand view

oQry := oServer:Query("SELECT codigo,   marca, area, COUNT(codigo) as cantidad FROM tabla GROUP BY codigo,marca,area ORDER BY codigo")
xbrowse(oQry)
 
User avatar
cmsoft
 
Posts: 1181
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Mysql y Dbf

Postby kpidata » Fri Nov 17, 2017 4:09 pm

Estimado... te pasaste... voy a probarlo... que poco se de mysql.... :cry: :cry:
kpidata
 
Posts: 80
Joined: Tue Jul 26, 2016 9:52 pm

Re: Mysql y Dbf

Postby cmsoft » Fri Nov 17, 2017 9: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.
User avatar
cmsoft
 
Posts: 1181
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 12 guests