
ZEOS
#1
Escrito 11 mayo 2009 - 03:12
pregunta
se puede hacer que el zconection de ZEOS
tome los parametros de un archivo de configuracion ???
#2
Escrito 11 mayo 2009 - 03:16
Me imagino que te refieres a un archivo .INI.?
Si es asi, no le veo el problema.
Saludos
#3
Escrito 11 mayo 2009 - 03:20
y que estructura llevaria ??
como le digo al conection que tome el .ini ?
#4
Escrito 11 mayo 2009 - 03:31
No tengo Zeos (lo borre

Te voy a explicar como se hace con access, el camino es practicamente el mismo, solo tendras que colocar en el INI los datos que la conexion necesite.
Primero, el zconnection se pone en un datamodule.
Segundo, se agrega al uses del datamodule IniFiles.
Tercero, se colocan las instrucciones que se necesitan en el evento OnCreate del datamodule, serian algo asi:
(en mi caso Ado)
procedure TDM1.DataModuleCreate(Sender: TObject); Var Direccion, BaseDeDatos, ConStr : String; IniFile: TIniFile; begin // Obtiene la ruta y el nombre de la base de datos ADOC1.Close; IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'DatosEmp.ini'); Direccion := IniFile.ReadString('DR','Path',''); BasedeDatos := IniFile.ReadString('BDE','Path',''); If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos'); ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+ 'Data Source='+Direccion+BaseDeDatos+';'+ 'Persist Security Info=False;'+ 'Jet OLEDB:Database Password=admin'; ADOC1.ConnectionString := ConStr; ADOC1.Open;
Cuarto y por supuesto necesario, se coloca en el INI lo que se necesita, seria algo asi:
Como veras el archivo INI en este caso se llama DatosEmp.ini y la dirección esta en el path del INI.[BD]
Path="S:\bd\Prod.MDB"
[Logon]
Auto="No"
Login=""
Pass=""
No es muy diferente con zeos, el programa solo buscara primero el ini y luego se iniciara.
Espero te ayude.
Saludos
#5
Escrito 11 mayo 2009 - 07:20
#6
Escrito 12 mayo 2009 - 04:52
Primero, el zconnection se pone en un datamodule.
Segundo, se agrega al uses del datamodule IniFiles.
Tercero, se colocan las instrucciones que se necesitan en el evento OnCreate del datamodule
Cuarto y por supuesto necesario, se coloca en el INI lo que se necesita
ok el ini ya kedo coketo y todo
[DB]
catalog="a"
Database="a"
hostname="192.168.254.20"
password="Mictlan"
Protocol="mysql-4.1"
user="arroyoj"
nomas que me surgieron dudas
1.- en el codigo pones inifile:=Tinifile
2.- si lo pongo en el evento on create no es un lujo inecesario cerrar la coneccion si la voy creando apenas ??
3.- en mi caso <Mysql> no tengo que usar un parametro de conecion verda ??
digo no soy tonto nomas lento
y con tanta chamba que luego le inventan a uno aki en la office mas
#7
Escrito 12 mayo 2009 - 06:14
El primer punto, SI......
nomas que me surgieron dudas
1.- en el codigo pones inifile:=Tinifile
2.- si lo pongo en el evento on create no es un lujo inecesario cerrar la coneccion si la voy creando apenas ??
3.- en mi caso <Mysql> no tengo que usar un parametro de conecion verda ??
El segundo punto, no entiendo a que te refieres con cerrar la conexion?, donde la cierro?, mas bien la abro, No entiendo.
El tercero punto, no entiendo.
Tal vez si lo explicas a lo Novato?.
Saludos
#8
Escrito 14 mayo 2009 - 01:42
(en mi caso Ado)
procedure TDM1.DataModuleCreate(Sender: TObject); Var Direccion, BaseDeDatos, ConStr : String; [b]IniFile: TIniFile;[/b] begin // Obtiene la ruta y el nombre de la base de datos [b]ADOC1.Close;[/b] IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'DatosEmp.ini'); Direccion := IniFile.ReadString('DR','Path',''); BasedeDatos := IniFile.ReadString('BDE','Path',''); If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos'); ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+ 'Data Source='+Direccion+BaseDeDatos+';'+ 'Persist Security Info=False;'+ 'Jet OLEDB:Database Password=admin'; ADOC1.ConnectionString := ConStr; ADOC1.Open;
marque co nnegritas donde le das close
y para que sirte el
IniFile: TIniFile
#9
Escrito 14 mayo 2009 - 02:30
Saludos.
#10
Escrito 14 mayo 2009 - 02:32
Se me adelantaron jejeje.

Como te dijeron, el close es por si acaso esta abierta, asi no se duplica y manda error.
Saludos
#11
Escrito 14 mayo 2009 - 04:46
procedure TForm1.FormCreate(Sender: TObject); var catalog, database, hostname, password, prtocol, user : string ; begin ZConnection1.close ; inifile:Tinifile ; inifile:=Thnifile.create(ExtractFilePath(aplication.exename)+'mysql.ini'); catalog:=Inifile.ReadString('DR','catalog',''); database:=Inifile.ReadString('DR','database',''); hostname:=Inifile.ReadString('DR','hostname',''); password:=Inifile.ReadString('DR','password',''); Protocol:=Inifile.ReadString('DR','protocol',''); user:=Inifile.ReadString('DR','user',''); zconection1.catalog:= catalog; zconection1.database:=database; zaconectio1.hostname:= hostname; zconection1.password:=password; zconection1.protocol:=protocol; zconection1.user:=user; end;
y me dice que todo esto esta mal
[Error] Unit1.pas(52): Undeclared identifier: 'inifile'
[Error] Unit1.pas(53): Undeclared identifier: 'Thnifile'
[Error] Unit1.pas(53): Undeclared identifier: 'aplicatoin'
[Error] Unit1.pas(53): ')' expected but identifier 'exename' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
este es mi ini
[DB]
catalog="a"
database="a"
hostname="192.168.254.20"
password="Mictlan"
Protocol="mysql-4.1"
user="arroyoj"
#12
Escrito 14 mayo 2009 - 04:55
procedure TForm1.FormCreate(Sender: TObject); var catalog, database, hostname, password, prtocol, user : string ; inifile: Tinifile ; begin ZConnection1.close ; inifile:=Thnifile.create(ExtractFilePath(aplication.exename)+'mysql.ini'); catalog:=Inifile.ReadString('DR','catalog',''); database:=Inifile.ReadString('DR','database',''); hostname:=Inifile.ReadString('DR','hostname',''); password:=Inifile.ReadString('DR','password',''); Protocol:=Inifile.ReadString('DR','protocol',''); user:=Inifile.ReadString('DR','user',''); zconection1.catalog:= catalog; zconection1.database:=database; zaconectio1.hostname:= hostname; zconection1.password:=password; zconection1.protocol:=protocol; zconection1.user:=user; ZConnection1.open ; end;
Asi, de reojo.
Saludos
#13
Escrito 15 mayo 2009 - 09:14
masterla forma de enlazarlo directamente no la hay, tienes que hacerlo por codigo tal cual te explica Carlos, si no te sale avisas para sacarte un ejemplo---
creo que si
si me ayudas con un ejemplo te lo agradecere mucho
GRACIAS
#14
Escrito 15 mayo 2009 - 02:15
#15
Escrito 21 mayo 2009 - 12:04
pero tenia aki varias cosas que tenia pendientes y ya termine
ahora si
master me arroja estos errores
[Error] Unit1.pas(156): Undeclared identifier: 'close'
[Error] Unit1.pas(157): Undeclared identifier: 'aplication'
[Error] Unit1.pas(157): ')' expected but identifier 'exename' found
espero me puedan ayudar
GRACIAS
#16
Escrito 21 mayo 2009 - 12:22
A ver:
Amigo, la sintaxis es importante, el espanglish no funciona en delphi.

Esto es lo que tienes escrito:
inifile:=Thnifile.create(ExtractFilePath(aplication.exename)+'mysql.ini');
Veamos asi:
procedure TForm1.FormCreate(Sender: TObject); var catalog, database, hostname, password, protocol, user : string ; inifile: TInifile ; begin ZConnection1.Close; Inifile := TInifile.Create(ExtractFilePath(Application.ExeName)+'mysql.ini'); catalog:=Inifile.ReadString('DR','catalog',''); database:=Inifile.ReadString('DR','database',''); hostname:=Inifile.ReadString('DR','hostname',''); password:=Inifile.ReadString('DR','password',''); protocol:=Inifile.ReadString('DR','protocol',''); user:=Inifile.ReadString('DR','user',''); zconection1.catalog:= catalog; zconection1.database:=database; zaconectio1.hostname:= hostname; zconection1.password:=password; zconection1.protocol:=protocol; zconection1.user:=user; ZConnection1.open ; end;
No deberia dar problemas el Close, pero puedes quitarlo si lo amerita.
Saludos
#17
Escrito 21 mayo 2009 - 02:48
pero ahora me dice que no encuentra el driver
ya hice una prueba
y le pedi que en unas etiquetas me ponga las variables y no pone nada osea que las variables estan vacias
como si no estuviera leyendo el archivo
el codigo quedo asi
Inifile := TInifile.Create(ExtractFilePath(Application.ExeName)+'mysql.ini'); catalog:=Inifile.ReadString('DR','catalog',''); database:=Inifile.ReadString('DR','database',''); hostname:=Inifile.ReadString('DR','hostname',''); password:=Inifile.ReadString('DR','password',''); protocol:=Inifile.ReadString('DR','protocol',''); user:=Inifile.ReadString('DR','user',''); zconnection1.catalog:= catalog; zconnection1.database:=database; zconnection1.hostname:=hostname; zconnection1.password:=password; zconnection1.protocol:=protocol; zconnection1.user:=user;
#18
Escrito 21 mayo 2009 - 03:01
afortunadamento
o no tanto
el error estava entre
la silla y el teclado
en el archivo ponia la parte del archivo "DB" y cuando leia los datos los queria sacar de "DR"
#19
Escrito 21 mayo 2009 - 03:05
coreccion ya encontre el error
afortunadamento
o no tanto
el error estava entre
la silla y el teclado
en el archivo ponia la parte del archivo "DB" y cuando leia los datos los queria sacar de "DR"
Vaya, parece que hoy es el día

Salud OS
#20
Escrito 21 mayo 2009 - 03:45
procedure TForm1.FormCreate(Sender: TObject); var capt : string ; catalog, database, hostname, password, protocol, user : string ; inifile: TInifile ; begin Inifile := TInifile.Create(ExtractFilePath(Application.ExeName)+'mysql.ini'); catalog:=Inifile.ReadString('DB','catalog',''); database:=Inifile.ReadString('DB','database',''); hostname:=Inifile.ReadString('DB','hostname',''); password:=Inifile.ReadString('DB','password',''); protocol:=Inifile.ReadString('DB','protocol',''); user:=Inifile.ReadString('DB','user',''); zconnection1.catalog:= catalog; zconnection1.database:=database; zconnection1.hostname:=hostname; zconnection1.password:=password; zconnection1.protocol:=protocol; zconnection1.user:=user; end;
El archivo ini va asi
[DB]
catalog="a"
database="a"
hostname="192.168.254.20"
password="Mictlan"
protocol="mysql-4.1"
user="arroyoj"