Resulta que por mero trabajo Pro-Bono, estoy haciendo una pequeña aplicación de control de caja para la escuela que dirige mi esposa, nada del otro mundo, solo pasar un libro donde registran lo que ingresa y lo que sale. Como no se necesita gran cosa de recursos pense en usar y ya meterme de una vez a conocer FB, esta vez en su version embebida, pues la idea es que sea portable. Ya he conseguido crear las tablas acostumbrarle a los generadores para los campo autoincrementados y otras cosas que FB usa y que en MySQL daba por sentado.
Uso Zeos para conectarme ya que ya los conozco bastante bien y nunca he tenido problema, el detalle es que de vez en vez me aparecen errores que para un bisogno en FB resulta críptico pero para alguno de los tantos expertos que tenemos por aquí, es algo de risa, ya hasta a pense mejor usar MySQL embebido pero es pago (ya hubiera acabado sin duda).
Os pongo un código y explico mi problema:
Código Delphi
[-]rocedure TFEditarMovimiento.Action1Execute(Sender: TObject);
begin
with Datos.ZMovimiento do
begin
Post;
Datos.ZMovimiento.CommitUpdates;
end;
Close;
end;
procedure TFEditarMovimiento.Action2Execute(Sender: TObject);
begin
with Datos.ZMovimiento do
begin
CancelUpdates;
end;
Close;
end;
Function TFEditarMovimiento.Editar(fecha: TDateTime; num_nota: Integer):boolean;
begin
end;
Function TFEditarMovimiento.Nuevo(tipo: Char):Boolean;
begin
with Datos.ZMovimiento Do
Begin
Open;
Append;
if tipo='E' then
Begin
Caption := 'Capturar Nuevo Egreso';
Datos.ZConceptos.ParamByName('tipo').AsString := 'E';
Datos.ZConceptos.Open;
End
else
Begin
Caption := 'Capturar Nuevo Ingreso';
Datos.ZConceptos.ParamByName('tipo').AsString := 'I';
End;
Datos.ZConceptos.Open;
ShowModal;
Datos.ZConceptos.Close;
Datos.ZMovimiento.Close;
End;
Result := ModalResult = mrOk;
end;
No puse la cabecera dela unidad pq es solo una ventana que abre o agrega un registro de una tabla y los botones (aceptar y cancelar [que disparan Action1 y Action2] son los que en teoría guardan o descartan lo capturado. Utilizo una tabla auxiliar conceptos para mostrar un lookupcombo y elegir de una lista.
El form que llama a su vez a esta solamente espera si le contesta si se modificó o agregó el registro para actualizar una tabla y que aparezca cualquier cambio.
El problema que tengo es que si lo ejecuto digamos "Nuevo" una vez me muestra el form y todo en orden, pero posteriormente si trato de volverlo a ejecutar me aparece "convertion error" justo al momento de ejecutar ZMovimiento.Open. El código con algunos cambios (los commits y eso) lo copie de otro que tengo con MySQL que uso como platilla. A ver si alguien me echa una luz..