÷ÏÏÂÝÅÍ ÐÏÌÕÞÉÌÏÓØ, ×ÏÚÍÏÖÎÏ ÞÅÒÅÚ ÚÁÄÎÉÃÕ :)
É ÔÏÌØËÏ × ÒÁÎÔÁÊÍ.

ëÏÍÕ ÉÎÔÅÒÅÓÎÏ:
ïÛÉÂËÁ ÐÒÉÓÕÔÓÔ×ÕÅÔ × IBX 10.10\10.11 ÐÏÄ NET.
÷ÙÒÁÖÁÅÔÓÑ × ÎÅÐÒÁ×ÉÌØÎÏÍ ÚÎÁÞÅÎÉÉ ÐÏÌÅÊ Numeric(X,Y)

ÍÏÄÕÌØ
Borland.Vcl.IBCustomDataSet.pas
ÍÅÔÏÄ
TIBCustomDataSet.FetchCurrentRecordToBuffer
...
        SQL_SHORT, SQL_LONG:
        begin
          if (rdField.fdDataScale = 0) then
          begin
            rdField.fdDataSize := SizeOf(Integer);
            if RecordNumber >= 0 then
            begin
              LocalInt := Qry.Current[i].AsLong;
              LocalData := Marshal.AllocHGlobal(SizeOf(LocalInt));
              Marshal.WriteInt32(LocalData, LocalInt);
            end;
          end
          else
            if (rdField.fdDataScale <= (-4)) then
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            begin
              rdField.fdDataSize := SizeOf(Currency);
              if RecordNumber >= 0 then
...
ÐÒÁ×ÉÌØÎÏ
            if (rdField.fdDataScale >= (-4)) then



--
Good luck!
Sergey Tulaev






Ответить