Using IBDac version 3.60.0.22 and converting an interbase 2007 database form charset NONE to UTF8, I get an error when using a select from a stored procedure where one or more columns returned is a BLOB and UseUnicode is True.
The error is in the unit IBCClasses in procedure GetBlobCharset when checking the result of the call to isc_blob_lookup_desc.
When UseUnicode is false, the call to this procedure is not made and the procedure works, but then the strings returned for the varchar columns are malformed.
When using the original database all works fine as well
Can you please advice me how to get this working?
Error column is not defined
This problem is connected with incorrect work of the InterBase server and we cannot influence it. The point is that InterBase returns the relation name of these fields as a stored procedure name and not a table name. And we cannot know the right relation name of the field.
To solve this problem, apply the following change. Find the code below in the TGDSRecordSet.InternalInitFields method of the IBCClasses.pas unit:
and change it to the code:
To solve this problem, apply the following change. Find the code below in the TGDSRecordSet.InternalInitFields method of the IBCClasses.pas unit:
Code: Select all
Check(Res);
Field.CharsetID := Marshal.ReadInt16(BlobDesc, 2);Code: Select all
if Res 335544396 then begin
Check(Res);
Field.CharsetID := Marshal.ReadInt16(BlobDesc, 2);
end;