Hola...
No entiendo mucho lo que te sucede... yo utilizo IBDataset con dialecto 3 y funciona perfecto. Creo que tu problema esta en la sentencia del update.
Yo lo haría asi:
Tabla1.SelectSql.Clear;
Tabla1.SelectSql.Add('update tabla1 set campo1 = :campo1, campo2 = campo2¡);
Tabla1.SelectSql.add('where campo1 =
ld_campo1');
Tabla1.ParamByName('campo1').asstring := dbEdit1.text;
Tabla1.ParamByName('campo2').asCurrency := dbEdit2.field.AsCurrency;
Tabla1.ExcecSql;
Lo de
ld_campo1 nunca lo he utilizado de esta manera.
Espero te sirva
Saludos