Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-01-2012
franroju franroju is offline
Miembro
NULL
 
Registrado: ene 2012
Posts: 55
Poder: 15
franroju Va por buen camino
Hola. Soy nuevo en Zeos pero leyendo por estos foros vi que esta muy recomendado y decidí utilizarlo en una aplicación de prueba. Me surgió el siguiente problema:

Tengo en un form un ZConnection, un ZTable, un DataSource y un DBGrid. Creo la base de datos externamente, es decir, con un soft. de administración de base de datos, conecto las "piezas" y funciona perfectamente.

Ahora bien, quiero crear la base de datos y las tablas desde delphi, para facilitar la instalación en el cliente. Para esto utilizo un ZSQLProcessor en el cual escribo los scripts SQL, y no me informa ningún error, pero el DBGrid queda en blanco, es decir, sin datos y sin el nombre de las columnas. Como que algo falla en la conexión. Les paso el código para que vean las propiedades que modifico, tal vez olvido alguna o hago algo mal y no me doy cuenta.

Código Delphi [-]
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  ZSQLProcessor1.Script.Add('CREATE DATABASE IF NOT EXISTS prueba;');
  ZSQLProcessor1.Script.Add('USE prueba;');
  ZSQLProcessor1.Script.Add('CREATE TABLE IF NOT EXISTS `cuentacorriente` (`numero` int(9) NOT NULL, `nombre` varchar(20) NOT NULL, `monto` float(8,2) NOT NULL,  PRIMARY KEY  (`numero`));');
  ZSQLProcessor1.Execute;

  con.Database := 'prueba'; //ZConnection
  con.Catalog := 'prueba';
  con.Connect;
  ZTable1.TableName := 'cuentacorriente';
  ZTable1.Properties.Add('select * from cuentacorriente;');
  ZTable1.Active;
end;

La base de datos y la tabla las crea. Supongo que hay alguna falla con el ZTable pero no me doy cuenta cual puede ser. Hago un Showmessage de la propiedad Active de la tabla y me da 0, o sea que no queda activa y no puedo saber por qué.
Muchas gracias y espero su ayuda.
Responder Con Cita
  #2  
Antiguo 10-01-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola,

No estoy seguro de cuál sea el problema pero por lo menos parece que te has olvidado de enlazar el componente ZTable con el ZConnection, algo como:

Código Delphi [-]
ZTable1.Connection := con;

Por otra parte, no creo que estas sentencias sean necesarias:

Código Delphi [-]
con.Catalog := 'prueba';
ZTable1.Properties.Add('select * from cuentacorriente;');

Finalmente, parece que también te has olvidado de abrir la tabla. La sentencia:

Código Delphi [-]
ZTable1.Active;

en realidad no hace nada. Active es una propiedad que simplemente indica si la tabla está o no abierta. Tendrías que usar

Código Delphi [-]
ZTable1.Active := true;

o bien

Código Delphi [-]
ZTable1.Open;

// Saludos
Responder Con Cita
  #3  
Antiguo 10-01-2012
franroju franroju is offline
Miembro
NULL
 
Registrado: ene 2012
Posts: 55
Poder: 15
franroju Va por buen camino
Gracias roman por la respuesta, pero sigo teniendo el mismo problema, aún haciendo las modificaciones que me marcaste. Cuando hago
Código Delphi [-]
ZTable1.Active := True;
o
Código Delphi [-]
ZTable1.Open;
me lanza un supuesto error de SQL. Digo supuesto, porque si ejecuto el programa con las propiedades ya establecidas funciona perfecto, así que supongo que no es error de SQL. Además no hago ninguna consulta ni nada, solo creo la base y la tabla, pero no me deja abrirla.

Les copio el error para que lo vean:

SQL error: You have an error in your SQL syntax; check de manual that correspons to your MySQL server version for the right syntax to use near 'LIKE 'cuentacorriente'' at line 1.

Ese near 'LIKE 'cuentacorriente'' at line 1 se refiere a que el error está cerca de
Código Delphi [-]
ZTable1.TableName := 'cuentacorriente';
. Es decir, cuando activo o abro la tabla, por eso dije que era un "supuesto" error de SQL.

Gracias, y espero ayuda.
Responder Con Cita
  #4  
Antiguo 10-01-2012
franroju franroju is offline
Miembro
NULL
 
Registrado: ene 2012
Posts: 55
Poder: 15
franroju Va por buen camino
Solucionado

Gracias por ayudarme pero ya encontré donde estaba el error. Tenía que anteponerle el nombre de la base a la tabla. Es decir:

Código Delphi [-]
ZTable1.TableName := 'prueba.cuentacorriente';

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Ejecutar script desde el isql victork_py Firebird e Interbase 9 25-05-2017 20:56:54
Ejecutar script toni.vi Conexión con bases de datos 6 19-02-2009 12:51:53
Ejecutar script sql en firebird jlalvarez Firebird e Interbase 8 05-03-2008 01:25:42
Ejecutar Script SQL con DELPHI patay SQL 1 06-08-2007 18:12:26
Componente ejecutar Script buitrago Conexión con bases de datos 3 27-11-2003 09:40:54


La franja horaria es GMT +2. Ahora son las 22:00:48.


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