÷ÏÏÂÝÅÍ ÐÏÌÕÞÉÌÏÓØ, ×ÏÚÍÏÖÎÏ ÞÅÒÅÚ ÚÁÄÎÉÃÕ :)
É ÔÏÌØËÏ × ÒÁÎÔÁÊÍ.
ëÏÍÕ ÉÎÔÅÒÅÓÎÏ:
ïÛÉÂËÁ ÐÒÉÓÕÔÓÔ×ÕÅÔ × 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