[Lazarus-es] SQLQuery y params
José Mejuto
joshyfun en gmail.com
Mar Jun 21 12:58:42 CEST 2011
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.
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.
--
Best regards,
José
More information about the Lazarus-es
mailing list