Wichtige Hinweise zu REFLEX ab Vers. 9

Aus GEVITAS
Wechseln zu: Navigation, Suche

Ab der Version 9 wird ein neuer Datenbank-Treiber eingeführt, der sich "ADO" nennt. Der bisherige Datenbank-Treiber "BDE" wird nach und nach abgelöst.

1 Warum ein neuer Datenbank-Treiber?

Die BDE („Borland-Database-Engine“) ist ein stabiler und ausgereifter Treiber, aber die BDE kommt langsam in die Jahre. Sie stammt noch aus der Zeit, als man Access® und Paradox® als Standard-Datenbank verwendete und SQL-Server als High-End-Produkte ansah. Inzwischen hat sich die Datenbank-Landschaft geändert: SQL-Server sind heutzutage Standard. Obwohl die BDE mit SQL-Servern wie MS-SQL-Server®, mySQL® oder Oracle® prima klar kommt, hat sie doch ein paar Nachteile:

  • Die BDE bildet eine Zwischenschicht zwischen einem ODBC-Treiber und der Datenbank. Dadurch wird unnnötiger „Ballast“ erzeugt, der die Geschwindigkeit etwas bremst und teilweise hohen Netzwerk-Verkehr erzeugt.
    • Ehrlicherweise muss man jedoch sagen, dass der Geschwindigkeitsnachteil der BDE bei den heutige PC’s nicht besonders relevant ist.
  • Die BDE wird vom Hersteller nicht mehr weiterentwickelt. So wird es z.B. niemals eine 64-Bit-Version geben. Das ist ein wichtiges Argument, weil sich abzeichnet, dass durch den Erfolg von Windows-7® immer mehr 64-Bit-Versionen von Windows eingesetzt werden.
    • Ganz so akut ist dieses Problem nicht, weil die 64-Bit-Windows-Versionen mit 32-Bit-Programmen problemlos funktionieren: Es wird hier „WOW“ verwendet (Windows-On-Windows), eine intelligente Technik von Microsoft® (doch: das gibt’s!), die automatisch erkennt, ob ein Betriebssystemaufruf von einem 32- oder 64-bit-Programm kommt und diesen für den Benutzer nicht sichtbar auf 32-Bit-WOW oder 64-Bit-Windows umleitet. Deshalb läuft REFLEX ja auch problemlos auf 64-Bit-Windows-7 und Windows-8!

Aus diesem Grund haben wir uns dazu entschlossen, die BDE abzulösen.

2 Warum ADO?

Es gibt eine Reihe von Datenbanktreibern auf dem Markt, die meisten davon haben wir in einem zeitaufwendigen Prozess untersucht. Die Entscheidung für ADO fiel u.a. aus den folgenden Gründen:

  1. ADO ist von Microsoft®. Das lässt schließen, dass ADO auch zukünftig weiterentwickelt wird.
  2. ADO ist schnell. Es benötigt für die meisten Datenbanksysteme keinen ODBC-Treiber mehr, lediglich mySQL® hat noch keinen nativen ADO-Treiber, hier wird weiterhin ODBC verwendet.
  3. Der Hersteller unseres Entwicklungssystems Delphi® hat dafür gesorgt, dass der Umstieg von der BDE auf ADO relativ (!) problemlos über die Bühne geht.
  4. Für Leute, die sich für die Programmierung interessieren: Wir haben viel Zeit und Geld geopfert, um festzustellen, welche Entwicklungsumgebungen für zukünftige Entwicklungen unserer Programme sinnvoll sind. Eine Zeit lang war .Net-Framework® mit VisualStudio® im Gespräch. Umfangreiche Tests haben jedoch ergeben, dass dieses System für ein derart umfangreiches System wie REFLEX bzw. GEVAS-Professional schlicht zu langsam ist! Deshalb haben wir uns dazu entschlossen, in der Zukunft weiter mit Delphi® zu arbeiten, zumal Delphi aktuell sehr stark weiterentwickelt wird und hochmoderne Komponenten bekommt!

Die mobilen Geräte sind davon nicht betroffen, diese werden weiterhin in VisualStudio mit dem Compact.Net-Framework entwickelt!

2.1 Alles sofort neu?

Der Umstieg von der BDE auf ADO ist für uns eine gewaltige Aufgabe:

  • REFLEX besteht aus ca. 450 Fenstern und Dialogen, die meisten davon haben in irgendeiner Weise mit Datenbankzugriffen zu tun.
  • REFLEX besteht aus ca. 1,2 Millionen Zeilen Programmcode. Die Zusatzprogramme wie der REFLEX-TerminManager, REXIM usw. sind dabei noch gar nicht eingerechnet.

Es ist also nicht realistisch anzunehmen, dass das komplette REFLEX auf einmal umgestellt werden kann! Schließlich wollen wir unsere Programmier-Kapazität auch noch für die Weiterentwicklung unserer Programme nutzen. Unsere Strategie sieht deshalb vor, dass wir Fenster für Fenster, Dialog für Dialog, Programmzeile für Programmzeile nacheinander umstellen werden. Dieser Prozess wird sich über Monate hinziehen.

Die Technik dazu haben wir in den letzen Monaten entwickelt. Im Idealfall ist der Umstellungsprozess für den Anwender transparent, er sollte davon eigentlich nichts merken (außer vielleicht, dass manche Programmteile schnellen laufen als vorher…). Auf den REFLEX-Administrator kommt jedoch unter Umständen ein kleiner Aufwand zu, der mit der Version 9 von REFLEX beginnt.

2.2 Welcher Aufwand?

Wie groß der Aufwand für den Administrator ist, auf ADO umzustellen, hängt von der bestehenden Konfiguration ab. In unseren Feld-Tests haben wir festgestellt, dass es bei manchen Anwendern ohne eine einzige Änderung möglich ist, REFLEX-9 mit ADO zu verwenden. Bei anderen muss die Datenbank-Konfiguration (bzw. die INI-Datei, in der diese gespeichert ist), geändert werden. Einzelheiten dazu werden weiter unten beschrieben.

2.3 Muss das sein?

Ja, es muss! Auf die Dauer führt kein Weg daran vorbei, die BDE abzulösen. Zukünftige Entwicklungen von GEVITAS werden keine BDE mehr verwenden.

2.4 Was ist zu tun?

Im Grunde genommen geht es „nur“ um die Datenbank-Konfiguration bzw. um die INI-Datei, in der diese gespeichert ist. In REFLEX können Sie diese ändern mit dem Menü…

REFLEX Menue.jpg

Natürlich benötigen Sie die Administrator-Rechte innerhalb von REFLEX, um auf dieses Menü zugreifen zu können!

In diesem Fenster wird die Datenbank-Konfiguration festgelegt:

REFLEX Menue Konfiguration.jpg

Bereich Für ADO
1 Name der ODBC-Datenquelle Wird für den Zugriff auf MS-SQL-Server mit ADO nicht verwendet. Für den Zugriff auf mySQL wird diese Angabe jedoch verwendet.

Da dieser Parameter elementar ist, müsste er eigentlich korrekt angegeben sein und für den ADO-Zugriff nicht verändert werden.

2 Server-Name Das könnte ein kritischer Bereich sein, weil man hier auch die ODBC-Datenquelle angeben kann:

Wenn man mit der integrierten CrystalReports-Engine 8.5 arbeitet, steht hier u.U. der Name der ODBC-Datenquelle und nicht der tatsächliche Server-Name! Das muss man ändern und den tatsächlichen Server-Namen angeben, wenn man mit REFLEX Version 9 arbeitet! Wenn man mit der CrystalReports-Version 10+ arbeitet (CRRUN12), steht hier der Name der Server-Name! Das ist korrekt und muss nicht geändert werden! Das Häkchen vor dem Server-Namen hat für ADO keine Bedeutung.

3 Datenbank-Name Für ADO ist diese Angabe zwingend!

Das Häkchen vor dem Namen hat für ADO keine Bedeutung.

4 Tabellen-Bezeichner Wird für ADO nicht verwendet.
5 Benutzer-Name Wenn REFLEX in einer MS-SQL-Umgebung mit Domäne verwendet wird, muss man…
  • …das Häkchen vor dem Namen entfernen
  • …keinen Benutzer und Passwort angeben.

Wenn REFLEX in einer MS-SQL-Umgebung ohne Domäne („Vertrauenswürdige Umgebung“) verwendet wird, muss man…

  • …das Häkchen vor dem Namen setzen
  • …einen Benutzer und Passwort angeben.

Wenn REFLEX in einer mySQL-Umgebung verwendet wird, muss man…

  • …das Häkchen vor dem Namen setzen
  • …einen Benutzer und Passwort angeben.
6 Passwort s.o.
7 ODBC-Datenquelle vorhanden Wird für ADO nicht verwendet.
8 Verbindungstest Nur für das integrierte CrystalReports 8.5 relevant. CRRUN12 prüft die Verbindung immer.
9 INI-Datei Pfad und Name der verwendeten INI-Datei.

2.5 Die Einstellungen in der INI-Datei

Die Datenbank-Konfiguration ist in einer INI-Datei abgelegt, die vom Programm beim Programmstart eingelesen wird. Dazu gibt es einen Abschnitt [Options], in dem die einzelnen Angaben stehen. Die Parameter und die zugehörigen Eingabefelder:

REFLEX Einstellungen INIDatei.jpg

In der INI gibt es diesen Parameter:

0DatabaseDriverName=MSSQL

Dieser wird entweder direkt in derINI geändert oder mit dem Konfigurations-Programm RxKonfig festgelegt.

Hinweis zum Markieren von Optionen und dem Speichern in der INI:

UseSQLServerName=1 entspricht REFLEX Einstellungen INIDatei Server Name1.jpg

UseSQLServerName=0 entspricht REFLEX Einstellungen INIDatei Server Name2.jpg

Hinweis zum Passwort in der INI-Datei: Es gibt zwei Möglichkeiten, wie das SQL-Passwort in der INI hinterlegt sein kann:

DPW=xxxxxxxx

Dies ist die verschlüsselte Form, die vom Konfigurationsprogramm RxKonfig erzeugt wird. Das Passwort ist nicht im Klartext lesbar. Aus Sicherheitsgründen sollte man diese Version verwenden!

DatabasePW=DasSQLPasswort

Dies ist die unverschlüsselte Form, die man direkt in die INI (mit einem Editor) schreiben kann. Das Passwort ist im Klartext lesbar. Aus Sicherheitsgründen sollte man diese Version nicht verwenden! Wenn beide Versionen in der INI stehen, wird die verschlüsselte Version benutzt!

2.6 Wie gehe ich vor?

Starten Sie REFLEX.9. Öffnen Sie das Menü „Stammdaten⇒ Buchhaltung, Kalkulation, Kostenrechnung ⇒ Kontenplan“.

Dieses Fenster wurde auf ADO umgestellt.

  • Ich erhalte keine Fehlermeldung
    • Glückwunsch! Ihre Datenbank-Konfiguration wird von ADO akzeptiert, Sie müssen keine Änderung vornehmen.
  • Es kommt eine Fehlermeldung: Prüfen Sie die Datenbank-Konfiguration
    • Stimmt die Angabe „Server-Name“? Es muss hier der tatsächliche Server-Name stehen, nicht die ODBC-Datenquelle!
    • Ist ein Benutzer-Name und Passwort eingetragen?
    • Wenn das Häkchen vor dem Benutzer-Namen markiert ist, muss auch ein Benutzer-Name und ein Passwort angegeben sein! Wenn nicht, darf kein Benutzername und Passwort angegeben werden!

2.7 Typische Fehlermeldungen

Datenbank kann nicht geöffnet werden/Server nicht gefunden:

REFLEX TypischeFehlermeldung1.jpg

Der Name der Datenbank (im Beispiel oben 'XX') ist falsch, die Datenbank kann nicht geöffnet werden.

Fehler in der Konfiguration:

REFLEX TypischeFehlermeldung2.jpg

Weil die Option nicht markiert ist, wirkt sich der Fehler in REFLEX-8 nicht aus: Die BDE ignoriert den Datenbank-Namen und holt sich diesen aus der ODBC-Einstellung. Da ADO aber im Regelfall (außer mySQL) nicht mit ODBC arbeitet, kann REFLEX-9 den Datenbank-Namen nicht daraus holen sondern nur aus der Konfiguration.

Auch beim Drucken mit CrystalReports 8.5 wirkt sich diese Konfiguration nicht aus. Arbeitet man aber mit CrystalReports 10+ (und CRRUN12), kommt es auch zu einer Fehlermeldung.

Fehlermeldung beim Starten von REFLEX:

REFLEX Fehlermeldung1.jpg

Fehler in der Konfiguration:

REFLEX Fehlermeldung2.jpg

Oder in der INI:

UseSQLUser=1

DatabaseUser=

Richtig wäre:

UseSQLUser=1

DatabaseUser=XXXXXX

(Wobei XXXXX der SQL-Benutzername ist)

Oder:

UseSQLUser=0

DatabaseUser=

(Anmeldung über eine Windows-Domäne, ohne explizit einen SQL-Benutzernamen anzugeben)