AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bug und Fix in der IBX bei Zugriff auf Firebird Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Bug und Fix in der IBX bei Zugriff auf Firebird Datenbank

Ein Thema von Alphacodex · begonnen am 17. Jul 2009 · letzter Beitrag vom 3. Sep 2010
Antwort Antwort
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, 12: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
Alphacodex

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

Re: Bug und Fix in der IBX bei Zugriff auf Firebird Datenban

  Alt 17. Jul 2009, 23:00
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
  Mit Zitat antworten Zitat
schnickers

Registriert seit: 25. Okt 2005
12 Beiträge
 
Delphi 2009 Enterprise
 
#3

AW: Bug und Fix in der IBX bei Zugriff auf Firebird Datenbank

  Alt 3. Sep 2010, 10:00
Ich bekomme seit einer Umstellung der Interbase-Anbindung den gleichen Fehler.
Ich habe bisher folgendes Versucht:
  • Erstellen eines Neuen Projektes
  • In das Project die ibsq.pas (C:\Program Files (x86)\CodeGear\RAD Studio\6.0\source\Win32\IBX) eingefügt
  • Die ibsq.pas wie oben geändert
  • das Projekt Compiliert
  • die neue ibsql.dcu in das Verszeichnuss: C:\Program Files (x86)\CodeGear\RAD Studio\6.0\lib kopiert.
  • das eigentliche Interbase projekt geöffnet, compiliert etc.
  • Fehler bleibt

Ich verwende Delphi 2009.
In der Main-Form verwende ich:
  • TIBTransaction
  • IBDatabase
  • IBQuery

Hat wer eine Idee?
Vor der Umstellung Funktionierte noch alles. Ich gllaube es hatte was mit dem SQL Provider zu tun.

Gruß
Moritz
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz