PDA

Ver la Versión Completa : Error al insertar datos a una consulta


The Cid James
20-11-2017, 17:30:49
Buenas gente estoy tratando de agregar los datos a una consulta y al ejecutarla me dice que la consulta esta vacía este es el código que estoy usando

fmodulo.Qtotal.Close;
fmodulo.Qtotal.SQL.Clear;
fmodulo.Qtotal.SQL.Text := 'Select SUM(Precio_v) As Total FROM detalles_venta Where detalles_venta.estado = 1 and detalles_venta.id_detalle = :idv';
fmodulo.Qtotal.ParamByName('idv').AsInteger := numventap;
fmodulo.Qtotal.ExecSQL;
fmodulo.Qtotal.Refresh;

Casimiro Notevi
20-11-2017, 19:44:25
Creo que te he recomendado alguna vez un libro con el que serías un "maestro" en delphi con bases de datos. Es este (http://terawiki.clubdelphi.com/Delphi/Manuales/?download=La_Cara_Oculta_De_Delphi_4_pdf_.zip).
No puedes "insertar" en una "consulta". Una consulta es una consulta, y un insert es un insert.fmodulo.Qtotal.Close;
// fmodulo.Qtotal.SQL.Clear; -> no sirve
fmodulo.Qtotal.SQL.Text := 'Select SUM(Precio_v) As Total FROM detalles_venta Where detalles_venta.estado = 1 and detalles_venta.id_detalle = :idv'; // -> ¿Falta group by
fmodulo.Qtotal.ParamByName('idv').AsInteger := numventap;
// fmodulo.Qtotal.ExecSQL; -> si es un "insert", entonces execsql. Si es un select, entonces "open"
fmodulo.Qtotal.Open // --> "open" si es un select
// fmodulo.Qtotal.Refresh; -> no sirve
Todo esto sin saber qué componentes usas, base de datos, ni nada.

ecfisa
20-11-2017, 19:46:10
Hola.

Si no es una consulta de actualización no uses el método ExecSQL, simplemente usa Open.


...
fmodulo.Qtotal.Open;
...


Saludos :)