Un consejo de un conejo...
Lo mejor para trabajar com MySQL, es utilizar los comandos directamente, para ello yo vengo utilizando con mucho éxito TDolphin,,, una maravillosa clase escrita por Daniel,,
las DBFs las deje hace 10 años atrás, empecé con Eagle1, pero luego pase a TDolphin y no la suelto,,, un ventaja es que se conecta directamente al servidos (Windows o Linux) y es rápido,,, Utilizo FW + TDolphin + PellesC + Meditor + MySQL 5.5/6.0 o MariaDB tanto para Windows o Linux,,,
Como ejemplo te muestro estas líneas para obtener datos..
Code: Select all | Expand
cBusca := "SELECT "
cBusca += "productos.registro, " // 1
cBusca += "productos.cod_producto, " // 2
cBusca += "productos.producto, " // 3
cBusca += "productos.unidad, " // 4
cBusca += "productos.codbar1, " // 5
cBusca += "productos.cod_proveedor, " // 6
cBusca += "productos.cod_marca, " // 7
cBusca += "productos.cod_grupo, " // 8
cBusca += "productos.puntos, " // 9
cBusca += "proveedor.razon_social, " // 10
cBusca += "marca.detalle AS cmarca, " // 11
cBusca += "grupo.detalle AS cgrupo, " // 12
cBusca += "productos.percepcion, " // 13
cBusca += "productos.impuesto_p, " // 14
cBusca += "productos.observaciones, " // 15
cBusca += "IFNULL((SELECT registro FROM imagenes WHERE imagenes.cod_producto = productos.cod_producto),0) AS imagen " // 16
cBusca += "FROM productos "
cBusca += "LEFT JOIN proveedor ON productos.cod_proveedor = proveedor.ruc_dni "
cBusca += "LEFT JOIN marca ON productos.cod_marca = marca.codigo "
cBusca += "LEFT JOIN grupo ON productos.cod_grupo = grupo.codigo "
IF !EMPTY(cProve) .OR. !EMPTY(cMarca) .OR. !EMPTY(cGrupo)
cBusca += "WHERE "
EndIf
cBusca += IF(!EMPTY(cProve), "productos.cod_proveedor = '" + cProve + "' ", "")
If !EMPTY(cProve) .AND. !EMPTY(cMarca)
cBusca += " AND "
EndIf
cBusca += IF(!EMPTY(cMarca), "productos.cod_marca = '" + cMarca + "' ", "")
If !EMPTY(cMarca) .AND. !EMPTY(cGrupo)
cBusca += " AND "
EndIf
cBusca += IF(!EMPTY(cGrupo), "productos.cod_grupo = '" + cGrupo + "' ", "")
cBusca += "GROUP BY productos.cod_producto " // importante para que no se dispare el join
If nOrden = 1
cBusca += "ORDER BY productos.producto "
ElseIF nOrden = 2
cBusca += "ORDER BY productos.utilidad_p "
ElseIF nOrden = 3
cBusca += "ORDER BY productos.puntos "
EndIf
oProduc := SQLQry(oMySQL, oProduc, cBusca) // la información "mezclada" de 5 tablas en un objeto de datos
aProduc := SQLQryA(oMySQL, aProduc, cBusca) // los mismos datos en un array