[Lazarus-es] tquery insertSQL

Claudio Romero clauslack en gmail.com
Mar Sep 29 16:24:13 CEST 2009


Bueno te paso lo que uso en mis sistemas, aunque lo uso para Firebird,
lo puedes adaptar para MySql
Le da 2 parametros la sentencia SQL (insert,update,delete)
y la coneccion y listo. En una sola linea hace todo.
Chequea uses db, sqldb (seguro ya las tienes)
Para mi deberias actualizar a la version 0.9.27 svn, que es la proxima
0.9.28, porque la 0.9.24 tenia muchos errores, ya corregidos.

procedure EjecutaSql(consulta:string;IBexecSql:TIBConnection);
var SQLQuery1:TSQLQuery;SQLTransaction1:TSQLTransaction;
begin
	try
	    SQLQuery1:=TSQLQuery.Create(nil);
    	SQLTransaction1:=TSQLTransaction.Create(nil);
        SQLTransaction1.DataBase:=IBexecSql;
        SQLQuery1.UsePrimaryKeyAsKey:=false;
        SQLQuery1.Transaction:=SQLTransaction1;
        //
        SQLQuery1.SQL.add(consulta);
        try
  		    SQLTransaction1.StartTransaction;
    		SQLQuery1.ExecSQL;
            SQLTransaction1.Commit;
        except on e:exception do
           	begin
            	SQLTransaction1.Rollback;
            	ShowMessage('procedure EjecutaSql'+#13+'Error al
ejecutar: '+#13+consulta+#13+e.message);
			end;
        end;
	finally
    	SQLTransaction1.free;
	    SQLQuery1.free;
	end;
end;

Saludos

El día 29 de septiembre de 2009 11:04, Rafael Bidegain
<r.bidegain en gmail.com> escribió:
> Hola a todos.
>
> Perdón si la pregunta es reiterada. Intuyo que sí lo es, pero despues
> de buscar con google y no encontrar ninguna ayuda no me queda mas
> alternativa que realizarla en la lista.
>
> estoy haciendo una prueba con mysql 5 en linux con lazarus 0.9.24
>
> tengo un componente mysql50connection, un sqltransaction,  un sqlquery
> un dataset un dbgrid y un dbnavigator
> con esos elementos ejecuto un select * desde una tabla y funciona.
> (cosa que me permite asegurar que todo esta configurado correctamente)
>
> tengo un error  "sql statement not set" cuando intento ejecutar un
> insert de esta manera:
>
> procedure TMySQL.btInsertClick(Sender: TObject);
> begin
>     SQLQuery1.Active := false;
>     SQLQuery1.SQL.clear;
>     SQLQuery1.ParseSQL := false;
>     SQLQuery1.InsertSQL.clear;
>     SQLQuery1.InsertSQL.Add('insert into tabla_prueba (cadena,
> numero) values ("hola", 10)');
>     SQLQuery1.Active := true;
>     SQLQuery1.Open;
>     SQLQuery1.Insert;
>     SQLQuery1.Post;
>     SQLQuery1.ApplyUpdates;
> end;
>
> ¿ qué estoy haciendo mal ?
>
> gracias
> --
> Rafael Bidegain
>
> Ya que los cuerdos no hablan, hablará el loco.
> (The Fool, Padraic Pearse)
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>




More information about the Lazarus-es mailing list