Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   guardad datos en firebird no funciona hasta cerrar programa (https://www.clubdelphi.com/foros/showthread.php?t=78754)

Rofocale 15-05-2012 04:16:10

guardad datos en firebird no funciona hasta cerrar programa
 
Hola a todos tengo un problema que no puedo guardar los datos que agrego en mi programa hasta que se cierre el programa, osea lo añado al grid verifico con el ibexpert y aun estos datos no estan en la base de datos. cierro el programa y verifico con el ibexpert y los datos recien se guardan.

este es el codigo que uso y espero puedan ayudarme
muchisimas gracias
Código Delphi [-]
 if (sModo = 'Insertar') then
  begin
    with dmDatos.Categorias do
    begin
      Close;
      SQL.Clear;
      SQL.Add('INSERT INTO categoria (name_categ, fecha_categ, tipo, cuenta)');
      SQL.Add('VALUES(:name_categ,:fecha_categ,:tipo,:cuenta)');
      params.ParamByName('name_categ').Value := txtnombrecateg.Text;
      params.ParamByName('fecha_categ').Value := FormatDateTime('dd/mm/yyyy', Date);
      params.ParamByName('tipo').Value := sTipo;
      params.ParamByName('cuenta').Value := txtcodigo.Text;
      ExecSQL;
      Close;
    end;
      dmDatos.Tcategorias.Active := false;
  with dmDatos.categorias do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM categoria');
    open;
  end;
  with dmDatos.Tcategorias do
  begin
    Active := true;
  end;

  end
  else
  begin
    with dmDatos.Categorias do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE categoria SET name_categ = ''' + txtnombrecateg.Text + ''',');
      SQL.Add('cuenta = ''' + txtcodigo.Text + ''',');
      SQL.Add('fecha_categ = ''' + FormatDateTime('mm/dd/yyyy', Date) + '''');
      SQL.Add('WHERE clave = ' + IntToStr(iClave));
      ExecSQL;
      Close;
    end;
  end;

look 15-05-2012 04:27:59

tienes que utilizar transacciones, investiga , hay mucho de ese tema en los foros.

look 15-05-2012 04:31:22

aqui un ejemplo:


Código Delphi [-]
  if not (DataModule.IBTransaction1.InTransaction) then DataModule.IBTransaction1.StartTransaction;
  try

     ////     aqui los cambios en la base de datos      insert, update..

      DataModule.IBTransaction1.CommitRetaining;
  except
    on E: Exception do
    begin
          DataModule.IBTransaction1.RollbackRetaining;
          Application.MessageBox( PCHAR('Ocurrio un error.'+#13+E.MESSAGE), 'Error',MB_ICONERROR );
          exit;
    end;
  END;

JXJ 15-05-2012 05:49:09

tienes que agregar commit a cada transaccion
que quieres que
sea guardada sin cerrar el programa

osea cada componente funciona diferente.
los ibdac lo hacen automaticamente.

los zeos
dbx
ibxpress

lo tienes que indicar explicitamente


que compoenntes usas??

Rofocale 15-05-2012 20:37:10

Gracias por el ejemplo.
uso ibquery, ibtransaction..


La franja horaria es GMT +2. Ahora son las 19:30:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi