Le pegue una mirada al codigo y es claro como no encuentras el problema.
Esta muy desorganizado y depende demasiado de llevar bien "la cuenta" de que se hace primero y que segundo. Es lo que se llama
codigo espagueti.
Deja separado el acceso a los datos, no dupliques la funcionalidad y no uses el mismo objeto para actividades diferentes.
Estructura el código maso asi:
Código Delphi
[-]
DB:
QueryLlamada(Params):TDataSet
QueryCliente(Params):TDataSet
UpdateLlamada(Params):Result
GUI:
Forma1 ->
Accion1 - > QueryLlamada(...)
Accion2 - > QueryCliente(...)
Accion3 - > UpdateLlamada(...)
La idea es que deberias poder formar un "árbol" del flujo de la aplicación sin que (en lo posible) tengas interdependencias entre los objetos.
Por ejemplo "GetData" esta desparramado en varias partes y toca el mismo objeto. Eso es LO MISMO que tener una variable global. Que por regla general es MALA IDEA.
Ten los objetos encapsulados para cada gran actividad, que garanticen que no es posible (accidental o por pereza) acceder a ellos "a las espaldas de su verdadero dueño".
Estudia sobre los principios de SOLID:
https://en.wikipedia.org/wiki/SOLID_...riented_design