![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: Interbase
Bug und Fix in der IBX bei Zugriff auf Firebird Datenbank
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:
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.
// 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; Grüße Codex |
Re: Bug und Fix in der IBX bei Zugriff auf Firebird Datenban
So Hallo nochmal,
ich hab es selbst gelöst. Ich musste den Code nochmal leicht anpassen und in ein Dummy-Projekt importieren. Die kompilierte .dcu habe ich dann wieder ins Programmverzeichnis von Delphi (/lib/irgendwas) kopiert. Voila - keine Division by Zero Fehler mehr. Datenbank läuft endlich - das war der Haupt-Fehler der alles aufhielt... Hier nochmal der veränderte Code in der unit IBSQL (IBX Komponente)
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 and $FF 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; 4, 59 : Result := 4; else Result := 0; end; end; Grüße Codex |
AW: Bug und Fix in der IBX bei Zugriff auf Firebird Datenbank
Ich bekomme seit einer Umstellung der Interbase-Anbindung den gleichen Fehler.
Ich habe bisher folgendes Versucht:
Ich verwende Delphi 2009. In der Main-Form verwende ich:
Hat wer eine Idee? Vor der Umstellung Funktionierte noch alles. Ich gllaube es hatte was mit dem SQL Provider zu tun. Gruß Moritz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz