PDA

Ver la Versión Completa : Conexion Zeos con delphi 7


franroju
06-01-2012, 15:13:09
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.

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;
con.Connected;
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.

ecfisa
06-01-2012, 16:01:43
Hola franroju.

No especificas con que motor de base de datos estás trabajando, pero si es Firebird, revisá este enlace:

Crear una base de datos Firebird por código con los ZEOS (http://www.clubdelphi.com/foros/showthread.php?t=73215)


Un saludo.

franroju
06-01-2012, 17:31:37
Perdón, me olvidé ese detalle. Utilizo Mysql server 5.1

kapcomx
09-01-2012, 23:38:02
ke tal amigo, yo trabajo en zeos de la sig manera:

1. tengo un zconnection en el cual pongo las sig propiedades:

catalog: xxxx (aqui pongo el nombre que le di an dns en origenes de datos).
database: xxxx (el nombre de tu base de datos).
hostname: 192.168.x.x (aqui la ip de la maquina donde tengo instalado e mysql)
password: xxxxxxxx (password de tu usuario).
port: 3306 (el que usa por defecto MySql)
protocol: mysql-5
user: xxxxxx (el nombre de usuario que definiste para accesar a la bd desde mysql)
connect: true (desde el momento en que le das true te marca si se pudo o no conectar)

2. a tu componente ztable le debes asignar a la propiedad connection el nombre de tu zconnection y darle las sig propiedades

connection: zconection1
table: nombre de la tabla
active: true

3. si quieres verlo en un dbgrid necesitas un componente data source ( de la paleta data access) a quien le asignas en su propiedad dataset el nombre de tu ztable. a tu db grid le asignas en su propiedad data source el nombre de tu componente data source.


espero te sirva...
Saludos...

franroju
10-01-2012, 14:26:32
Gracias por la respuesta kapcomx. Pero todo lo que me decís que haga está puesto en el código cuando abrí este hilo. La asociación del DBGrid con el DataSource y de este con la tabla, no es por código, por eso no la puse. Todavía no lo pude solucionar, así que si alguien me quiere ayudar, se los agradecería mucho.

beginner01
10-01-2012, 17:40:37
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.

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;
con.Connected;
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.


Hola.

Prueba cambiar las líneas en rojo por esto.


con.Connected := True;

ZTable1.Active := True;

franroju
10-01-2012, 18:08:31
Gracias beginner01, lo solucioné pero además de tu recomendación, debía anteponerle el nombre de la base al nombre de la tabla. Es decir:

ZTable1.TableName := 'prueba.cuentacorriente';

Muchas gracias igual!!