¡Hola!
Según veo, ese error es lanzado por los IBX, específicamente en el método TIBCustomDataSet.InternalGetFieldData de la unidad IBCustomDataSet.pas:
Código Delphi
[-]
with CurrentRecord^.rdFields[FMappedFieldPosition[Field.FieldNo - 1]] do
begin
Data := Buff + CurrentRecord^.rdFields[FMappedFieldPosition[Field.FieldNo - 1]].fdDataOfs;
if (fdDataType = SQL_VARYING) or (fdDataType = SQL_TEXT) then
begin
if fdDataLength <= Field.Size then
begin
if (Field is TStringfield) and TStringField(Field).FixedChar then
FillChar(Buffer^, Field.Size, ' ');
Move(Data^, Buffer^, fdDataLength);
if (Field is TStringfield) and TStringField(Field).FixedChar then
PChar(Buffer)[Field.Size] := #0
else
PChar(Buffer)[fdDataLength] := #0;
end
else
IBError(ibxeFieldSizeMismatch, [Field.FieldName]);
end
else
Move(Data^, Buffer^, Field.DataSize);
end;
La consulta SQL está arrojando una descripción de mayor longitud que el tamaño definido del campo. Lo curioso es que, según nos dices, no utilizas campos persistentes. Pero lo que sí es seguro es que tiene que ver con discrepancia en tamaños de campos. Mira si no estás omitiendo algo por ahí y nos comentas.
Saludos.
Al González.