Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-11-2007
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Acceder a tablas DBF con ADO

Hola
Intento rellenar un informe desde cinco tablas .DBF (DBase IV) mediante un ZQuery de Zeos con la siguiente consulta:
Código Delphi [-]
{ activar la base de datos }
  with ZQuery do begin
     { desactivar la base de datos }
       Active := false;
       if bHAY_MYSQL then begin
          Connection := Form_Impresion.ZConnection_MYSQL;
       end else begin
          Connection := Form_Impresion.ZConnection_DBF;
       end;
     { confección de la Query de consulta }
       SQL.Clear;
       SQL.Add( 'SELECT tabla1.maximo, tabla1.cad_maximo,' );
       SQL.Add( '       tabla1.minimo, tabla1.cad_minimo,' );
     { datos de tabla2 }
       SQL.Add( '       tabla2.ayer,'   );
       SQL.Add( '       tabla2.hoy,'    );
       SQL.Add( '       tabla2.valor,'  );
       SQL.Add( '       tabla2.helado,' );
       SQL.Add( '       tabla2.roto,'   );
     { datos de tabla3 }
       SQL.Add( '       tabla3.xcien,'    );
       SQL.Add( '       tabla3.duracion,' );
     { datos de tabla4 }
       SQL.Add( '       tabla4.valor_06,' );
       SQL.Add( '       tabla4.valor_07,' );
       SQL.Add( '       tabla4.valor_12,' );
       SQL.Add( '       tabla4.valor_13,' );
       SQL.Add( '       tabla4.valor_18,' );
       SQL.Add( '       tabla4.valor_24,' );
     { datos de tabla5 }
       SQL.Add( '       tabla5.dif_00,' );
       SQL.Add( '       tabla5.dif_07 ' );
       SQL.Add( '  FROM tabla1' );
       SQL.Add( '  JOIN tabla2  ON tabla2.clave=tabla1.clave' );
       SQL.Add( '  JOIN tabla3  ON tabla3.clave=tabla1.clave' );
       SQL.Add( '  JOIN tabla4  ON tabla4.clave=tabla1.clave' );
       SQL.Add( '  JOIN tabla5  ON tabla5.clave=tabla1.clave' );
       SQL.Add( ' WHERE tabla1.clave="' + strClave + '"' );
       SQL.Add( ' ORDER BY tabla1.clave' );
     { abrir la tabla activa }
       try
         Active := true;
       except
         SQL.SaveToFile( 'ERROR_SQL.txt' );
       end;
     { las tablas quedan abiertas }
  end; { del with ZQuery do }
  with QuickRep1 do
       DataSet := ZQuery;
end;
Cuando la conexión (con un ZCOnnection) la realizo sobre un servidor MySql se ejecuta correctamente.

Cuando al ZConnection le asigno la cadena:
Código Delphi [-]
  with ZConnection_DBF do begin
       HostName := '';
       User     := '';
       Password := '';
       Protocol := 'ado';
       Port     := 0;
       Database := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
                   'Data Source=C:\DATOS;' +
                   'Extended Properties=dBASE IV;' +
                   'User ID=Admin;' +
                   'Password=;';
  end;
al ejecutar la Query me dice: OleException with message 'Error de sintaxis en la clausula FROM'

¿Podeis decirme cual es el error o como de hace un JOIN con ADO?
Gracias adelantadas:
Salvica

Edito -> Delphi-7, MySql-5, Zeos 6.6.1-beta
Gracias

Última edición por salvica fecha: 16-11-2007 a las 00:22:17.
Responder Con Cita
  #2  
Antiguo 16-11-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Un consejo, si piensas usar ADO, utiliza los componentes ADO, no utilices Zeos.
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 16-11-2007
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Cita:
Empezado por poliburro Ver Mensaje
Un consejo, si piensas usar ADO, utiliza los componentes ADO, no utilices Zeos.
Gracias, pero la aplicación está hecha para MYSQL, lo que pasa es que hay algunos sitios que no pueden ponerlo y las tablas están en DBF
(y por portabilidad...)

De todas formas, para probar, he añadido un ADOConnection y un ADOQuery al proyecto. pero al ejecutar la Query anterior me tira el mismo error: Error de sintaxis en la clausula FROM por lo que, supongo, el problema viene de la construcción de la consulta.

Debo añadir que las tablas .DBF son "tablas sueltas", no hay ninguna estructura de Base de Datos como tal y que si la consulta la hago sobre una única tabla se resuelve perfectamente.

¿Alguien puede decirme como hacer una consulta múltiple (estilo JOIN) a dichas tablas y con qué objetos)?

Gracias
Salvica

Última edición por salvica fecha: 16-11-2007 a las 23:18:42. Razón: Por no abrir una nueva respuesta a lo mismo
Responder Con Cita
  #4  
Antiguo 21-11-2007
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Al final lo hice importando las tablas a access y creando la consulta

- La conexión sigue con la misma (ZConnection) y la consulta en un ZQuery.
- Los campos del select son los mismos y el cambio es en el FROM que daba problemas:
Código Delphi [-]
{ en el FROM, tantos paréntesis como "tablas - 1" }
  SQL.Add( '  FROM (((tabla1 ' );
  SQL.Add( '          INNER JOIN tabla2 ON tabla1.CLAVE = tabla2.CLAVE) ' );
  SQL.Add( '          INNER JOIN tabla3 ON tabla1.CLAVE = tabla3.CLAVE) ' );
  SQL.Add( '          INNER JOIN tabla4 ON tabla1.CLAVE = tabla4.CLAVE) ' );
  SQL.Add( '          INNER JOIN tabla5 ON tabla1.CLAVE = tabla5.CLAVE' );
{ ¿porqué paréntesis en WHERE? }
  SQL.Add( ' WHERE (((tabla1.CLAVE)="'+FormatDateTime('yyyymmdd', zFECHA)+'"));' );
Gracias
Salvica
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Acceder con varios programas a las mismas tablas .dbf (en el mismo pc)-RESUCITADO :) Wonni Conexión con bases de datos 0 11-08-2007 19:10:36
Acceder a tablas (dBase) del programa Ges-Pro Wonni Conexión con bases de datos 2 03-11-2006 21:35:37
acceder a DBF (SQL) Demian Conexión con bases de datos 0 25-08-2004 21:47:56
Problemas al acceder a tablas Foxpro sanluisme Conexión con bases de datos 4 04-03-2004 09:49:34
Acceder a las tablas temporales oneromm Conexión con bases de datos 1 24-12-2003 10:52:18


La franja horaria es GMT +2. Ahora son las 21:48:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi