[Lazarus-es] SQLQuery y params

Giuseppe Luigi glpunzi en lordzealon.com
Mie Jun 22 17:38:22 CEST 2011


El mar, 21-06-2011 a las 12:58 +0200, José Mejuto escribió:
> Hello Giuseppe,
> 
> Tuesday, June 21, 2011, 9:50:24 AM, you wrote:
> 
> >> dmDatos.qryArticulos.Params.ParamByName('xxxx').asString:=Edit1.Text;
> >> dmDatos.qryArticulos.Execute;
> >> dmDatos.qryArticulos.Commit;
> 
> GL> Execute y Commit no existen.
> GL> Supongo que será ExecSQL y Post, pero, si lanzo ExecSQL, como sabe si
> GL> tiene que usar el SQL que está en la propiedad SQL, o el de InsertSQL, o
> GL> el de UpdateSQL, etc... ???
> 
> Me acababa de levantar, estaba medio dormido :)
> 
> Execute es ExecSQL sip. El ExecSQL siempre lanza el SQL, el insertSQL,
> UpdateSQL, etc con para los controles visuales. Cuando un control
> visual intenta añadir un registro comprueba si existe un InsertSQL, si
> lo hay rellena los params y lo lanza con ExecSQL, si no lo hay intenta
> derivar un insert a partir del SQL y lanzarlo, pero eso sólo se
> consigue si el select del SQL es sencillo, sobre una tabla única.
> 
> El Commit se lanza sobre la transacción asignada al Query. De modo que
> si has hecho algo como:
> 
> Query:=TSQLQuery.Create.....
> Query.Transaction:=MyTransaction;
> ....
> Query.ExecSQL;
> MyTransaction.Commit;
> 
> El ApplyUpdate se usa cuando lo hace a través de un DataSource, no
> cuando trabajas con un Query.

Entonces el ApplyUpdates es para cuando se usa controles DB-aware no?

Entonces, qué soléis usar? Un query para selects, y otro para inserts,
delete etc..cambiando el SQL dependiendo de lo que vaya a hacer?

> 
> En otras palabras, es diferente si usas el Query directamente o si los
> datos los manejas a través de un DataSource para enlazarlo con
> controles visuales, ya que estos no entienden de Querys, tablas, etc.
> 


Por cierto, por qué me dá error en un Refresh del SQLQuery, diciendo que
no se puede realizar en un Dataset Abierto? Tengo que hacer un
Active:=False y Active:=True? me parece una chapuza....





More information about the Lazarus-es mailing list