Einzelnen Beitrag anzeigen

Alphacodex

Registriert seit: 16. Mär 2006
65 Beiträge
 
Delphi 2006 Professional
 
#1

Bug und Fix in der IBX bei Zugriff auf Firebird Datenbank

  Alt 17. Jul 2009, 13:26
Datenbank: Firebird • Version: 2.5 • Zugriff über: Interbase
Hallo,


bei meinen unendlichen Suchen im Netz bin ich auf was interessantes gestossen. In den bei Delphi mitgelieferten IBX Komponenten gibt es einen Bug, wenn man versucht auf Datenbanken zuzugreifen, die von der COLLATE Eigenschaft Gebrauch machen.

Der Bug zeigt sich, wenn man versucht, die Active-Eigeschaft einer DataSet Komponente auf true zu stellen als "Division durch 0 Fehler"


Die User haben aber auch einen möglichen Fix für das Problem gefunden. In der Unit IBSQL.pas aus den IBX Komponenten muss folgende Funktion korrigiert werden:
Delphi-Quellcode:
// Original Function
// function TIBXSQLVAR.GetCharsetSize: Integer;
// begin
// case SQLVar.SQLSubtype of
// 0, 1, 2, 10, 11, 12, 13, 14, 19, 21, 22, 39,
// 45, 46, 47, 50, 51, 52, 53, 54, 55, 58 : Result := 1;
// 5, 6, 8, 44, 56, 57, 64 : Result := 2;
// 3 : Result := 3;
// 59 : Result := 4;
// else
// Result := 0;
// end;
// end;

// Fixed Function
function TIBXSQLVAR.GetCharsetSize: Integer;
begin
  case SQLVar.SQLSubtype of
    0, 1, 2, 10, 11, 12, 13, 14, 19, 21, 22, 39,
    45, 46, 47, 50, 51, 52, 53, 54, 55, 58 : Result := 1;
    5, 6, 8, 44, 56, 57, 64 : Result := 2;
    3, 4 : Result := 3;
    59 : Result := 4;
    else
      Result := 0;
  end;
end;
Ich würde das gerne mal ausprobieren, brauche aber noch einen Tip, wie ich die Unit kompiliert kriege, so dass ich die Original dcu im Programmverzeichnis überschreiben kann.


Grüße
Codex
  Mit Zitat antworten Zitat