El asunto es sobre el componente TSqlQuery de Lazarus, o más exactamente de CodeTyphon.
Este componente permite mediante la sola escritura de una sentencia select en la propiedad SQL (de tipo TStringlist) y la correcta asignación de otras propiedades hacer que se completen automáticamente las otras declaraciones básicas como update, insert, delete o refresh.
Lo correcto es siempre que se quiera hacer uso de las otras cuatro declaraciones, incorporar una clave única a la tabla.
Todo es muy sencillo e incluso más que en Delphi, ya que la propiedad sequence permite fácilmente configurar el incremento automático de una columna mediante el uso de un generador.
El problema se da, al menos en mi caso, cuando se intenta mezclar las declaraciones utilizando tablas y vistas (que refieren a la misma tabla)
Lo que intento hacer es utilizar una vista para obtener datos más "ricos" en la visualización, por lo que escribo declaraciones sobre esta vista en la propiedad SQL y Refresh, pero uso la tabla referida desde esa vista para las declaraciones para update, insert y delete.
Algo así como :
SQL: SELECT * FROM vista1 REFRESH: SELECT * FROM vista1 WHERE id_tabla1 = :id_tabla1 DELETE: DELETE FROM tabla1 WHERE id_tabla1 = :old_id_tabla1 UPDATE: UPDATE tabla1 SET (col1 = :col1, col2 = :col2) WHERE id_tabla1 = :old_id_tabla1 INSERT: INSERT INTO tabla1 id_tabla1, col1, col2 VALUES :id_tabla1, :col1, :col2
Y así surge un error que dice que no se puede aplicar las actualizaciones en la tabla, por no recuerdo bien que problema.
Supongo que esto tiene que ver con la configuración de las propiedades UsePrimaryKeyAsKey y UpdateMode. Pero no estoy muy seguro.
¿Alguien entiende algo sobre esto para darme algo de luz?
Olvidé aclarar que además de generar las "instrucciones" automáticamente, podemos escribirlas.
Saludos
Editado por cram, 12 marzo 2017 - 02:45 .