PDA

Ver la Versión Completa : Dbexpress no se actualiza el query


Mariana
31-08-2005, 20:03:49
Hola a todos, esta vez les consulto por lo siguiente:
Tengo un Tsimpledataset, que lo utilizo de la siguiente forma

Q.DataSet.CommandText := ‘ select * from personas where id_persona=:n_id_persona’;
Q.DataSet.CommandType := ctQuery;
Q.DataSet.Prepared :=false;
Q.DataSet.Params.ParamByName('n_id_persona').AsString:= ‘xx’;
Q.DataSet.Prepared := true;
Q.Execute;

la primera vez que se ejecuta funciona bien, el problema es la segunda vez que le quedan datos anteriores. Alguien me puede indicar como limpiarlo, he probado haciendo close y open, clearfields, params.clear, hasta probe cerrar la conexion a la BD y volverla a abrir, pero nada me dio resultado.
Muchas gracias por la ayuda que me puedan dar.

jmariano
31-08-2005, 20:54:15
Puesto que la consulta que estás haciendo devuelve un resultado no debes usar el método "Execute" (sólo usa "Execute" cuando la consulta no devuelva resultado o, mejor dicho, un conjunto de registros). Utiliza, en su lugar, el método "Open" para ejecutar la consulta


Q.DataSet.CommandText := 'select * from personas where id_persona=:n_id_persona';
Q.DataSet.CommandType := ctQuery;
Q.DataSet.Params.ParamByName('n_id_persona').AsString:= ‘xx’;
Q.DataSet.Prepared :=false;
Q.DataSet.Close;
Q.DataSet.Open;


Saludos!

Mariana
31-08-2005, 21:01:54
Gracias por la respuesta pero justo puse un ejemplo donde si devuelve un solo resultado, pero tengo otros donde devuelve un conjunto de registros y el problema es el mismo.
Como tengo que hacer en esos casos?
Gracias

jmariano
31-08-2005, 21:17:58
Como te comenté antes, siempre que la consulta te devuelva ya sea un sólo registro como un conjunto de ellos has de usar el método "Open" (cerrándo primero el DataSet, con "Close", para que se limpie). El método "Execute" sólo se utiliza para ejecutar aquellas consultas que no devuelven registro alguno (o como pone la ayuda, consultas que no devuelvan un "cursor"), como son, por ejemplo, las consultas para actualizar datos (aquellas que contienen la cláusula "INSERT" o "UPDATE").

(Si aún cerrando y abriendo el DataSet no se te refresca bien, cosa que sería extraña, puedes obligar el refresco usando el método "Refresh")

Bye!