[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