OJO, he dicho que en tu proyecto hay algo raro.
En mis pruebas noté que el error salta cuando lo forcé a hacer un .Edit, y noté que los componentes no permiten la edición.
Pero en una prueba en un proyecto en limpio, tanto con Zeos como con SQLDB las cosas andan bien. Tu proyecto tiene algo mal, y no he logrado determinar que es.
Me extraña que digas que con IBX no puedas aplicar filtros. Fíjate bien, debe tener la propiedad Filter con la cadena que hará de filtro, y a su vez la propiedad Filtered debe ser true.
Puedo recomendarte los excelente tutoriales del compañero Caral:
Como hacer un programa de Facturación - Parte 1
Como hacer un programa de Facturación - Parte 2
Como hacer un programa de Facturación - Parte 3
Si bien los tutoriales emplea otros componentes y está basado en Delphi la teoría y el manejo de una suite de componentes a otra no es tán distinto. Los conceptos siguen siendo los mismos.
Respecto a los componentes que empleas puedo señalarte que el Transaction tiene el valor caRollback en su propiedad Action un cuRollback. ¿Que implica esto? Que no interesa todo lo que hagas, la transacción se encargará de deshacer todo. Estudia el tema de las transacciones, es fundamental entenderlo. Te recomiendo la lectura del
documento Transacciones en Interbase y Firebird que está disponible en nuestra sección descargas.
El documento pone la práctica con IBX en Firebird, pero tales principios se extienden a todas las suites que manejan las transacciones de forma explícita e implícitamente (Zeos es un ejemplo de esto último).
Las transacciones son la piedra angular de una base de datos. Todo lo que haces en una base de datos implica iniciar una transacción. No basta con operar (insertar, eliminar, actualizar, etc) sino que también hay que confirmar y darle validez a la transacción o bien descartarla.
Saludos,