Tengo una TQuery con un DataSource que me muestra los datos en una grilla y edito.
La Query tiene CacheUpdates en True y tiene asociado un TUpdateObject, y cuando aprieto el boton "Guardar cambios" llamo al metodo Query.ApplyUpdates;
La Query hace un Select campos from Tabla y en el InsertSQL del UpdateObject tiene algo asi como Insert into (campos) values (:campos)
Hasta ahi todo bien, el problema es cuando modifico el InsertSQL, porque parece que la BDE hace un control despues de ejecutar ese sql, para controlar que a la tabla de la cual hace select la Query se le haya insertado una y solo una fila.
Entonces esto me permite agregar cualquier tipo de codigo sql antes de la instruccion que inserta en la tabla que es seleccionada por la query, pero no puedo agregar codigo despues de esa instruccion, y lo que es mas, no puedo reemplazar esa instruccion por una llamada a un stored procedure que haga el inster en esa tabla, que es lo que quiero hacer.
Lo mismo pasa al querer modificar el UpdateSQL y el DeleteSQL
El error que me tira es justamente "Update Failed"
La base de datos es SQL Server, y la conexion es usando un Alias de la BDE con el driver MSSQL.
Espero no haber aburrido, pero queria explicar bien para que se entendiera.
Si alguien tiene una idea de como lo puedo solucionar o por donde puedo buscar, sera bienvenido.
Gracias y abajo pongo unos ejemplos de codigo para ilustrar la situacion.
SQL de la Query:
Código SQL
[-]Select idArticulo, Descripcion, Precio
from Articulos
InsertSQL del TUpdateObject (generado automáticamente por Delphi):
Código SQL
[-]insert into Articulos(idArticulo, Descripcion, Precio)
values (:idArticulo, escripcion, :Precio)
InsertSQL del TUpdateObject (editado y funcionando):
Código SQL
[-]
insert into Stock(idArticulo, Stock)
values(:idArticulo,0)
insert into Articulos(idArticulo, Descripcion, Precio)
values (:idArticulo, escripcion, :Precio)
InsertSQL del TUpdateObject (editado, esto no funciona, tira Update Failed):
Código SQL
[-]insert into Articulos(idArticulo, Descripcion, Precio)
values (:idArticulo, escripcion, :Precio)
insert into Stock(idArticulo, Stock)
values(:idArticulo,0)
Como veran, solo cambie el orden de las instrucciones
InsertSQL del TUpdateObject (editado, esto tampoco funciona, tira Update Failed):
Código SQL
[-]exec SP_Inserta_Articulo :idArticulo, escripcion, :Precio
SP_Inserta_Articulo es un Stored Procedure que solo hace el insert en la tabla Articulos