Gracias, en zeos ten�a el autocommit a true pero no funcionaba, finalmente he cambiado zeos por sqldb y aparentemente ahora, tecleando todo a mano y abriendo y cerrando las conexiones a la base de datos dentro de cada formulario (antes intent� usar un form com�n), creo que voy por buen camino.
He probado los procedimientos almacenados cre�ndolos con ibexpert personal, me ha costado un poco encontrar la l�gica y la forma de usarlos pero finalmente lo he conseguido y parece que funciona bien. De todas formas os agradecer�a que me confirmarais si voy por buen camino o hay otra forma de hacer u optimizar lo siguiente.
El procedimiento ser�a este:
CREATE OR ALTER PROCEDURE USUARIOS_NUEVO (
usuario varchar(80),
clave varchar(80),
nivel integer)
as
begin
/* Nuevo usuario */
INSERT INTO USUARIOS (USUARIO,CLAVE,NIVEL) values (:USUARIO, :CLAVE,
:NIVEL);
suspend;
end
Y el c�digo el siguiente:
try
SQLQryOrdenes.SQL.Clear;
SQLQryOrdenes.SQL.Text := 'EXECUTE PROCEDURE USUARIOS_NUEVO :USUARIO,
:CLAVE, :NIVEL;';
SQLQryOrdenes.ParamByName('USUARIO').Value:=edtUsuario.Text;
SQLQryOrdenes.ParamByName('CLAVE').Value:=cifra(edtPassword.Text);
//Genera el nivel con relaci�n al ItemIndex
// 0=Control total
// 1=Usuario
// 2=�
SQLQryOrdenes.ParamByName('NIVEL').Value:=cbNivel.ItemIndex;
SQLQryOrdenes.ExecSQL;
SQLTransactionVAV.CommitRetaining;
SQLQryUsuarios.Refresh;
except
ShowMessage('Error: al guardar los datos en la tabla');
end;
Un saludo.
De: Ismael L. Donis Garcia [mailto:ismael en citricos.co.cu] Enviado el: jueves, 21 de julio de 2011 15:35
Para: Spanish version of Lazarus List
Asunto: Re: [Lazarus-es] Comportamiento Lazarus y firebird
El problema lo tienes porque no estas haciendo el Commit de la transacci�n, eso no tiene nada que ver con firebird.
Otra cosa me parece que lo que deb�as de optar es por no usar zeos ya que el soporte no va al mismo ritmo de lazarus, en vez de haber decidirte por usar o una distribuci�n de firebird u otra, aunque yo en lo personal no recomiendo tampoco a nadie que para un desarrollo serio use la versi�n 2.5 de firebird porque tiene muchos insectos, eso si pueden usar perfectamente la �ltima foto de la versi�n 2.5.1 la cual ya se le han corregido muchos insectos, la cual considero que no faltar� mucho en salir como candidate 1 del pr�ximo rel�ase.
Otra cosa te recomiendo que trabajes todas las actualizaciones con procedimientos almacenados, factor este que te va a evitar muchos dolores de cabeza con las aplicaciones cliente-servidor.
Saludos Cordiales
=========
|| ISMAEL ||
=========
PD: Mi caso es todo lo contrario al tuyo, muchos conocimientos en el manejo de RDBMS y muy pocos de Lazarus.
Earlier message 52 lines
----- Original Message -----
From: Manuel Galeote <mailto:manuel en clublazarus.com>
To: Lazarus-es en lists.lazarus.freepascal.org
Sent: Thursday, July 21, 2011 8:07 AM
Subject: [Lazarus-es] Comportamiento Lazarus y firebird
Hola a todos.
Estoy comenzando a desarrollar una aplicaci�n para windows y he decidido
usar Lazarus y Firebird por la capacidad, de con relativamente poco cambio,
poder usarlo en otro sistema operativo (Linux o mac). Con Lazarus alguna
cosa he hecho pero en firebird no tengo ninguna experiencia.
He comenzado con mal pie al usar zeos 6.6.6 y firebird 2.5 ya que me da en
la nariz que no son muy compatibles. A partir de aqu� he bajado a firebird
2.1 y todo ha funcionado mejor pero me estoy encontrando con alg�n que otro
problemilla y agradecer�a a quien tenga experiencia en el tema que me dijera
si esto es normal.
Tengo un formulario principal donde hago la conexi�n con un zconnection y un
formulario donde permito modifca datos con un ztable,dataset, grid y edt�
Si ejecuto la aplicaci�n, se conecta correctamente a la base de datos y
puedo hacer los cambios que quiera.
Ejecuto la aplicaci�n 2 veces (simulo el uso en 2 ordenadores), cuando
realizo cambios en la tabla en el primer programa el segundo no refresca los
cambios. Entiendo que es normal ya que supongo que tendr� que hacer un
refresco de datos en la tabla.
Pues no funciona nada, hasta que no fuerce una desconexi�n de la base de
datos y vuelva a conectar. He probado con un componente de tabla y con otro
de query y a hacer refresh de la tabla, close y open o poner el active a
false y luego a true y no refrescan los datos. Tengo necesariamente que
desactivar la conexi�n y volver a conectarla para que lo haga.
Alguien sabe por qu� pasa.
Un saludo.
_____