[Lazarus-es] Felicidades y una Consulta
Eduardo Lopez
dar_alle en yahoo.com.ar
Vie Ene 11 17:00:17 CET 2008
José Luis Vassallo escribió:
> Buenas y sigo yo el pesado. :-)
>
> 1) Logre instalar el componente rxlib y anda casi todo bien, el
> problema es que en el form donde puse el componente antes de salir de
> el cuando quiero cerrar el query me da el error "Project raised
> exception class ¿EDatabaError' with message: Operation cannot be
> perfrmed on an inactive dataset", vere si cambiando algunas opciones
> logro hacer que desaparezca el error. Me despliega bien la información
> eso si.
> 2) Perdon por molestar tanto con este tema de la red.
> En mi pc lo corro sin problemas, ya que tengo tanto lazarus como el
> mysql en forma local en mi suse. Pero en lo de mi cliente tengo el
> servidor y las estaciones de trabajo (todas con suse 10.3) y no se
> como armar la red. En el servidor esta el mysql corriendo sin
> problemas ahora mi problema es el sistema que desarrollo en lazarus lo
> tengo que tener en cada pc (si es asi como desde la aplicacion la
> configuro para que acceda a la base de datos del servidor y como
> configuro la red)? o si tiene que estar mi aplicacion dentro del
> servidor (en un directorio accesible por todos)?
Disculpame la demora en responder, pero estuve unos días de vacaciones. :-)
Respecto del punto 1) sólo puedo decirte que es probable que al cerrar
el form estés haciendo alguna operación (tipo commit) pero el dataset
está cerrado. Sólo queda revisar con detalle.
Para el punto 2) paso a detallarte: Ambas opciones son posibles:
a) Tener los binarios en un servidor junto con sus archivos de
configuración (leído por todos los clientes), con un directorio
compartido por NFS.
b) Tener los binarios en cada equipo sus archivos de configuración
leído sólo por el usuario.
En ambos casos las bibliotecas del cliente mysql se deben instalar en
todos los equipos clientes. En el punto a) la actualización del sistema
es más sencilla, ya que actualizando el server, todos los clientes
usarán la versión disponible, en b) hay que actualizar equipo por equipo.
Actualmente, en tu equipo de desarrollo tienes configurado los
componentes de acceso a mysql con "localhost", "tu_base_de_datos",
"usuario", "contraseña"
Lo que tienes que hacer es, leer estos valores de un archivo de
configuración (que puede ser en formato INI o XML) y en la creación del
Form asignarle las propiedades correspondientes al componente.
procedure TForm1.FormCreate(Sender: TObject);
begin
MySQL50Connection1.hostname := 'servidor';
end;
Por ejemplo, para leer los datos de un archivo XML de configuración
puedes usar la unit XMLCfg:
var
cfg: TXMLConfig;
ArchivoConf:string;
begin
ArchivoConf := 'misistema.conf';
cfg := TXMLConfig.Create(nil);
cfg.Filename := ArchivoConf;
LabeledEdit_servidor.Text := cfg.GetValue('BaseDatos/NombreServidor','');
LabeledEdit_base.Text := cfg.GetValue('BaseDatos/BaseDatos','');
LabeledEdit_usuario.Text := cfg.GetValue('BaseDatos/Usuario','');
cfg.free;
end;
Depende de tu aplicación y del nivel de seguridad que quieras darle,
puedes guardar el usuario y contraseña en el archivo XML o bien pedirla
en una pantalla de login.
El archivo de configuración puede ser guardado donde quieras: en
/etc/tu_archivo.conf (sólo modificable por root y válido para todos los
usuarios del equipo) o en cada home del usuario, donde tendrás acceso
completo al mismo y podrás utilizarlo además para guardar cualquier
preferencia que desees.
De esta forma podrás generar un binario único que te funcionará tanto en
tu equipo de desarrollo como en el del usuario final de la aplicación.
Saludos cordiales.
Eduardo López.
More information about the Lazarus-es
mailing list