Verwendung von ADO mit alten Datenbanken: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
Zeile 22: Zeile 22:
  
 
Die BDE entfernte die Leertasten ab Ende automatisch, ADO tut das nicht und reicht die Daten 1:1 weiter.
 
Die BDE entfernte die Leertasten ab Ende automatisch, ADO tut das nicht und reicht die Daten 1:1 weiter.
 +
 +
Das kann zu Problemen in der Formular-Gestaltung führen. Wenn Sie z.B. in einem Report zwei Felder miteinander verbinden, so sieht das ohne Leertaste (bzw. mit der BDE) so aus:
 +
 +
<code>Artikelbezeichnung Typ!</code>
 +
 +
Mit ADO sieht das so aus:
 +
 +
<code>Artikelbezeichnung                                                    Typ                              !</code>
 +
  
  
Zeile 41: Zeile 50:
  
 
Wenn Scripts erzeugt wurden, kopieren Sie diese in die Zwischenablage und speichern Sie sie in Textdateien. Sie können sie später verwenden, wenn Sie das Programm-Update ausführen.
 
Wenn Scripts erzeugt wurden, kopieren Sie diese in die Zwischenablage und speichern Sie sie in Textdateien. Sie können sie später verwenden, wenn Sie das Programm-Update ausführen.
 +
 +
 +
== Felder konvertieren ==
 +
 +
Nachfolgend wird beschrieben, wie man die Felder konvertieren kann.
 +
 +
Wir empfehlen, dieses von einem unserer Fachleute durchführen zu lassen!
 +
 +
 +
=== Wichtig ===
 +
 +
==== Backup der Datenbank erstellen ====
 +
 +
'''<big>Vor allem anderen müssen Sie ein Backup der Datenbank erstellen und sicherstellen, dass dieses Backup auch wiederherstellungsfähig ist!</big>'''
 +
 +
==== Allen Usern mitteilen ====
 +
 +
dass bis auf Widerruf '''kein User''' das Programm benutzen kann und darf!
 +
 +
 +
==== Update des Programms durchführen ====
 +
 +
Führen Sie an einem Computer das Update des Programm aus. Wenn ein Datenbank-Update verlangt wird, führen Sie dieses aus.
 +
 +
 +
 +
=== Scripte ausführen ===
 +
 +
Erstellen und speichern Sie die Scripte wie oben beschrieben.
 +
 +
==== Script Alter table ====
 +
 +
Führen Sie zuerst den Script "alter table" aus. Dies dauert mehrer Minuten!
 +
 +
Fehler bei der Ausführung:
 +
 +
Vermutlich werden Sie Fehler bei der Ausführung des Scripts erhalten. Diese sind im Register "Fehlerbericht" aufgeführt. Kopieren Sie die Fehlermeldungen in die Zwischenablage und speichern Sie sie in einer Textdatei.
 +
 +
Warum Fehler?
 +
 +
Problem ist, dass der SQL-Server Felder nicht einfach so konvertieren kann, die an einem Index beteiligt sind. Diese muss man manuell (!) konvertieren.

Version vom 24. Februar 2017, 17:40 Uhr

1 Allgemeines

Nach und nach wird in allen GEVITAS-Programmen der Datenbank-Treiber BDE abgeschafft und durch ADO ersetzt.

Bei älteren Datenbanken kann dabei ein Problem mit Textfeldern auftreten. Diese Felder werden von der Datenbank mit Leertasten auf die eingestellte Länge aufgefüllt.

  • Wenn Sie wissen wollen, ob dieses Problem Ihre Datenbank überhaupt betrifft, können Sie mit unserem Support einen Online-Termin ausmachen. Dieser kann (z.B. per TeamViewer) ermitteln, ob Ihre Datenbank betroffen ist oder nicht.


2 Technischer Hintergrund

In älteren Datenbanken wurden die Textfelder mit festen Längen definiert:

ADR.KURZNAME char(20)

Der SQL-Server füllt in diesem Fall die Felder rechts mit Leertasten (Blanks) auf!


In neueren Datenbanken wurden die Textfelder mit variablen Längen definiert:

ADR.KURZNAME varchar(20)

Die BDE entfernte die Leertasten ab Ende automatisch, ADO tut das nicht und reicht die Daten 1:1 weiter.

Das kann zu Problemen in der Formular-Gestaltung führen. Wenn Sie z.B. in einem Report zwei Felder miteinander verbinden, so sieht das ohne Leertaste (bzw. mit der BDE) so aus:

Artikelbezeichnung Typ!

Mit ADO sieht das so aus:

Artikelbezeichnung Typ  !


3 Prüfen, ob die Datenbank betroffen ist

Um zu prüfen, ob Ihre Datenbank überhaupt betroffen ist, melden Sie sich an GEVAS-Professional bzw. REFLEX als Admin an und starten dann über das Menü "Datenpflege" den GEVAS-/REFLEX-Checker.

Dort klicken Sie auf "SQL-Editor".

Auf der Anzeige der Tabellen klicken Sie mit der rechten Maustaste und wählen auf dem Menü "MS-SQL" den Untermenüpunkt "Update-Script für char-Felder" aus.

Der Checker prüft nun in allen Tabellen der Datenbank, ob es char-Felder gibt. Wenn ja, erzeugt er zwei SQL-Scripts:

  • Im Register "Script" befindet sich der Script, mit dem die Felder in varchar-Typen geändert werden.
  • Im Register "Update Tables Script" befindet sich der Script, mit dem die Leerstellen der Felder in entfernt werden.

Wenn diese Register leer sind (also kein Script erzeugt wurde), ist diese Datenbank nicht betroffen.

Wenn Scripts erzeugt wurden, kopieren Sie diese in die Zwischenablage und speichern Sie sie in Textdateien. Sie können sie später verwenden, wenn Sie das Programm-Update ausführen.


4 Felder konvertieren

Nachfolgend wird beschrieben, wie man die Felder konvertieren kann.

Wir empfehlen, dieses von einem unserer Fachleute durchführen zu lassen!


4.1 Wichtig

4.1.1 Backup der Datenbank erstellen

Vor allem anderen müssen Sie ein Backup der Datenbank erstellen und sicherstellen, dass dieses Backup auch wiederherstellungsfähig ist!

4.1.2 Allen Usern mitteilen

dass bis auf Widerruf kein User das Programm benutzen kann und darf!


4.1.3 Update des Programms durchführen

Führen Sie an einem Computer das Update des Programm aus. Wenn ein Datenbank-Update verlangt wird, führen Sie dieses aus.


4.2 Scripte ausführen

Erstellen und speichern Sie die Scripte wie oben beschrieben.

4.2.1 Script Alter table

Führen Sie zuerst den Script "alter table" aus. Dies dauert mehrer Minuten!

Fehler bei der Ausführung:

Vermutlich werden Sie Fehler bei der Ausführung des Scripts erhalten. Diese sind im Register "Fehlerbericht" aufgeführt. Kopieren Sie die Fehlermeldungen in die Zwischenablage und speichern Sie sie in einer Textdatei.

Warum Fehler?

Problem ist, dass der SQL-Server Felder nicht einfach so konvertieren kann, die an einem Index beteiligt sind. Diese muss man manuell (!) konvertieren.