[Lazarus-es] Eliminar registro en BD SQLite [SOLUCIONADO]

Maikel Enrique Pernía Matos reprepoli2mz en infomed.sld.cu
Mie Jul 4 20:18:17 CEST 2012


Hola, disculpen que demore en contestar pero hace días no tenía conexión
tienen razón haciendo un commit se soluciona todo, agrego el trozo de  
código de la función ya modificada

<code>
  //procedimeinto para eliminar registro.
  procedure TForm1.EliminaRegistro(reg : String);
  begin
      with SQLQuery1 do begin
         Close;
         SQL.Strings[1] := 'DELETE FROM persona WHERE id = ' + reg + ';';
         SQL.Strings[2] := 'COMMIT;');
         ExecSQL;
         Close;
      end;
      SQLTransaction1.CommitRetaining;
  end;
</code>

Saludos

El jue, 28-06-2012 a las 16:26 +0000, Jose Antonio. Cuello Principal escribió:
prueba ese mismo código pero con un starttransaction antes y un commit  
despues del execsql.
>
> debería funcionar.
> Un saludo
>
> ----- Mensaje original -----
> De: "Maikel Enrique Pernía Matos" <reprepoli2mz en infomed.sld.cu>
> Para: "Spanish version of Lazarus List"  
> <lazarus-es en lists.lazarus.freepascal.org>
> Enviados: Miércoles, 27 de Junio 2012 17:18:00
> Asunto: Re: [Lazarus-es] Eliminar registro en BD SQLite
>
> Jose Antonio, ya hice eso pero aún cuando hago una eliminación de un  
>  registro los cambios no son permanentes, después de cerrar la app y  
>  volverla a abrir allí está el registro eliminado, verifiqué los   
> permisos que tiene el fichero de la BD y todo esta bien. Por último   
> hice una rutina para eliminar los registros y el comportamiento es  
> el  mismo anexo el código.
>
> <code>
> //procedimeinto para eliminar registro.
> procedure TForm1.EliminaRegistro(reg : String);
> begin
>     with SQLQuery1 do begin
>        Close;
>        SQL.Clear;
>        SQL.Add('DELETE FROM persona WHERE id = ' + reg);
>        ExecSQL;
>        Close;
>     end;
> end;
> </code>
>
> El mar, 26-06-2012 a las 05:50 +0000, Jose Antonio. Cuello Principal  
> escribió:
> Para usar los dbcontrols tienes que enlazarlos, junto con el   
> componente dataset (en tu caso el TSqlite3Dataset), mediante un   
> datasource (componente que está en la pestaña "Data Access").
> >
> > Tanto los componentes como el dataset tienen una propiedad  >  
> "Datasource" donde asignar el datasource que has añadido y por el  >  
> cual se enlanzan.
> >
> > Un saludo
> >
> > ----- Mensaje original -----
> > De: "Maikel Enrique Pernía Matos" <reprepoli2mz en infomed.sld.cu>
> > Para: "Spanish version of Lazarus List"  >  
> <lazarus-es en lists.lazarus.freepascal.org>
> > Enviados: Lunes, 25 de Junio 2012 21:16:42
> > Asunto: Re: [Lazarus-es] Eliminar registro en BD SQLite
> >
> > Error el mio, no especifique en el mail anterior que intento  >  
> utilizar  el TDBNavigator, para las tareas propias de edición  >  
> (insertar,  eliminar, editar y actualizar o refrescar la Tabla), es   
> > por eso que no  incluí una sintaxis de eliminación en SQL que  
> estoy  > casi seguro  funcionaría en el trozo de código envié a la  
> lista.
> > ahora instalé un paquete que viene con lazarus que agrega el   >  
> componente "TSqlite3Dataset"; pero en lo poco que he probado no  >  
> puedo  asignarlo en la propiedad "DataSource" de cualquier  >  
> componente de los  "DbCtrls"
> >
> > Saludos
> >
> > El lun, 25-06-2012 a las 11:01 -0400, Jorge M. Martinez Saez escribió:
> > El 25-06-2012 9:44, Maikel Enrique Pernía Matos escribió:
> > > > Hola, estoy desarrollando desde Lazarus, una app que utiliza   
> >  > SQLite > como BD, hasta ahora puedo conectarme con la base de  
> datos   > > e insertar > datos en la tabla de forma permanente; pero  
> el  > problema  > está en la > posibilidad de eliminar un registro  
> de la  > tabla.
> > > >
> > > > Agrego el código de conexión y manejo de la Base de Datos:
> > > > <code>
> > > >  Un formulario con los siguientes componentes:
> > > >   Button1: TButton;
> > > >   Datasource1: TDatasource;
> > > >   DBEdit1: TDBEdit;
> > > >   DBGrid1: TDBGrid;
> > > >   DBNavigator1: TDBNavigator;
> > > >   SQLite3Connection1: TSQLite3Connection;
> > > >   SQLQuery1: TSQLQuery;
> > > >   SQLTransaction1: TSQLTransaction;
> > > >
> > > >
> > > >  //Procedimiento para configurar los componentes y activar la conexión:
> > > >  procedure TForm1.Button1Click(Sender: TObject);
> > > >  begin
> > > >    with SQLite3Connection1 do begin
> > > >       DatabaseName := '/home/maikel/prueba.alf';
> > > >       LoginPrompt  := False;
> > > >       Transaction  := SQLTransaction1;
> > > >       Connected    := True;
> > > >    end;
> > > >
> > > >    with SQLQuery1 do begin
> > > >       SQL.Add('SELECT nombre FROM persona');
> > > >       Transaction := SQLTransaction1;
> > > >       DataBase    := SQLite3Connection1;
> > > >       Active      := True;
> > > >    end;
> > > >
> > > >    SQLTransaction1.Active  := True;
> > > >    Datasource1.DataSet     := SQLQuery1;
> > > >    DBGrid1.DataSource      := Datasource1;
> > > >    DBNavigator1.DataSource := Datasource1;
> > > >    DBEdit1.DataSource      := Datasource1;
> > > >    DBEdit1.DataField       := 'nombre';
> > > >  end;
> > > >
> > > >  //Procedimeinto para almacenar permanentemente los datos
> > > >  //luego de la inserción.
> > > >  procedure TdmDatos.SQLQuery1AfterPost(DataSet: TDataSet);
> > > >  begin
> > > >     SQLQuery1.ApplyUpdates();
> > > >     SQLQuery1.CommitRetaining;
> > > > end;
> > > > </code>
> > > >
> > > >
> > > >
> > > > ----------------------------------------------------------------
> > > > This message was sent using IMP, the Internet Messaging Program.
> > > >
> > > >
> > > > -- >
> > > > Este mensaje le ha llegado mediante el servicio de correo  >   
> > electronico > que ofrece Infomed para respaldar el cumplimiento de  
>   > > las misiones del > Sistema Nacional de Salud. La persona que  
> envia  >  > este correo asume el > compromiso de usar el servicio a  
> tales  > fines  > y cumplir con las > regulaciones establecidas
> > > >
> > > > Infomed: http://www.sld.cu/
> > > >
> > > > _______________________________________________
> > > > Lazarus-es mailing list
> > > > Lazarus-es en lists.lazarus.freepascal.org
> > > > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
> > > >
> > > Hola Maikel:
> > >
> > > Cual es el codigo que usas para eliminar los datos?
> > >
> > > Has revisado los permisos que el usuario tiene sobre la base?  >  
> (para eliminar)
> > >
> > > Atte
> > >
> > > -- Jorge Martinez Saez 9-8817012
> > >
> > > _______________________________________________
> > > Lazarus-es mailing list
> > > Lazarus-es en lists.lazarus.freepascal.org
> > > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
> > >
> >
> > ----------------------------------------------------------------
> > This message was sent using IMP, the Internet Messaging Program.
> >
> >
> > --
> >
> > Este mensaje le ha llegado mediante el servicio de correo  >  
> electronico que ofrece Infomed para respaldar el cumplimiento de las  
>  > misiones del Sistema Nacional de Salud. La persona que envia este  
>  > correo asume el compromiso de usar el servicio a tales fines y  >  
> cumplir con las regulaciones establecidas
> >
> > Infomed: http://www.sld.cu/
> >
> > _______________________________________________
> > Lazarus-es mailing list
> > Lazarus-es en lists.lazarus.freepascal.org
> > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
> >
> > _______________________________________________
> > Lazarus-es mailing list
> > Lazarus-es en lists.lazarus.freepascal.org
> > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
> >
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
>
>
> --
>
> Este mensaje le ha llegado mediante el servicio de correo  
> electronico que ofrece Infomed para respaldar el cumplimiento de las  
> misiones del Sistema Nacional de Salud. La persona que envia este  
> correo asume el compromiso de usar el servicio a tales fines y  
> cumplir con las regulaciones establecidas
>
> Infomed: http://www.sld.cu/
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.


--

Este mensaje le ha llegado mediante el servicio de correo electronico que ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema Nacional de Salud. La persona que envia este correo asume el compromiso de usar el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/




More information about the Lazarus-es mailing list