GLS Vereinsmeister Umstieg von Professional- auf Network-Edition

Datenbank des GLS Vereinsmeister von Visual FoxPro nach MySQL bzw. SQL-Server umstellen.
Hierfür müssen vorab ein paar Installationen durchgeführt werden.


MySQL

1.) MySQL installieren
     Hinweis: Als Bsp. wird hier eine lokale Installation verwendet
     In XAMPP ist der MySQL-Server enthalten incl. PhpMyAdmin um die Datenbanken zu verwalten
    A.) XAMPP herunterladen und installieren nach c:\xampp

2.) XAMPP Anpassungen:
  A:) Link zum XAMPP-Controllcenter erstellen mit Admin-Rechten     
       > In den Ordner c:\xampp\ wechseln
       > Rechte Maustaste auf xampp-control.exe und Senden an > Desktop (Verknüpfung erstellen) anklicken
      > Auf den neu erzeugen Link im Desktop per rechte Maustaste auf Eigenschaften klicken
         - im Register Verknüpfung auf Erweitert klicken und "Als Administrator ausführen" anklicken
         - Im Register Allgemein den Text " - Verknüpfung" entfernen:

   B:) XAMPP-Controllcenter starten
       >MySQL starten (Firewall Zugiffsmeldung zulassen)
       > Apache starten (Firewall Zugiffsmeldung zulassen)

      Hinweis: Das Apache Modul lässt sich nicht starten 
         Dies liegt vermutlich am WWW-Publishingdienst da dieser den Port 80 blockiert
         > Windows Dienste starten
            -> CMD-Shell als Admin starten darin dann services.msc ausführen      
            -> zum WWW-Publishingdienst scrollen und per Doppelkick die Eigenschaften öffen. Dort den Dienst beenden und Starttyp auf Manuell stellen.

    C:) Fernzugriff auf PhpMyAdmin über das Netzwerk zulassen:
          ->im XAMPP-Kontrollcenter bei Apache die Konfig für "Apache(httpd-xamp.conf)" öffnen und zum Abschnitt phpmyadmin scrollen und "Require local" durch "Require all granted" ersetzen. Datei speichern!
------------------------------------------------------------------------
Alias /phpmyadmin "/xampp/phpMyAdmin/"
  <Directory "/xampp/phpMyAdmin">
  AllowOverride AuthConfig
  Require local
  Require all granted
  ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
  </Directory>
------------------------------------------------------------------------    

3.) Datenbank Benutzer anlegen
    In diesem Bsp. wird vmeister als Datenbankbenutzer mit alles Rechten angelegt
    > PhpMyAdmin im Webbrowser starten http:/localhost/phpmyadmin/   
    > Menüpunkt Benutzer auswählen "Benutzerkonto hinzufügen" anklicken
    > Namen, PW, % (Jeder Host Zugriff von allen PC im Netzwerk) und Zugriffsrechte vergeben für Daten und Struktur

 

4.) Zugriff auf MariaDB (MySQL) per ODBC einrichten
     Der Zugriff auf die MySQL-Datenbanken geht mit beiden ODBC-Treibern. Der MariaDB-Treiber kommt ohne das Packet "Microsoft Visual C++ Redistributable (x86)" aus.
    * MariaDB ODBC-Connector herunterladen und installieren.
        ->  Product: ODBC connector
        ->
Verson: 3.1.19-GA  (Stand 07.08.2023 funktioniert es mit diesem)
        -> OS: MS Windows 32-bit (!)
    ODER
    * MySQL ODBC herunterladen und installieren.   
      -> Product Version: 8.0.33 (GSL emppfiehlt in einem Forumseintrag 8.0.22)
      -> Operating System: MS Windows
      -> OS Version: Windows (x86, 32-bit)
      Hinweis: Sollte es beim Installieren ein Fehler geben dann muss noch das Paket "Microsoft Visual C++ Redistributable" (32Bit) herunterladen und installieren. Danach sollte beim erneuten installieren des MySQL-Teibers keine Probleme geben


GLS Vereinsmeister

1.) Daten sichern:
    - GLS öffnen.
    - Menü-Block Programmbereiche > System/Einstellungen > Datenbankpflege
      > 1.Optimieren ausführen !
      > 2. Export der Datenbank > Sichern anklicken
         - Sicherungs-Ordner auswählen. Dateiname wird vorgeschlagen z.B. vmdasi_20230714 > Start
         - Nach einer kurzen Zeit wird die Datensicherung als abgeschlossen angezeigt. > Beenden

2.) Lizenz eingeben für die Netzwerk-Edition:
    Im Menü-Block Info auf Über klicken > Registerkarte Info anklicken > Schlüssel anklicken
    > Netzwerk-Edition Key eintippen mit + aktivieren.
    > GLS schließen

3.) GLS mit MySQL verbinden
     - GLS starten
     - Menü-Block Programmbereiche > Verbindungseinstellungen
       > Im Popup-Fenster den Datenbanktyp auf MariaDB bzw MySQL ändern
       -> Servername: localhost
       -> Benutzer: vmeister  (Wie unter 3. angegeben) 
       -> Passwort: ***********

3.) VisualFox Pro Datenbankordner unbenennen
     > Den Ordner "c:\ProgramData\GLS Vereinsmeister\db umbenennen nach z.B. db_FVP

4.) Daten importieren nach MySQL
    - GLS starten
    - Menü Programmbereiche > System/Einstellungen > Datenbankpflege
    - Wiederherstellen anklicken und die zuvor erstelle ZIP auswählen und mit Start die Daten importieren. (Löschen bestätiben)
    - Hinweis: Import dauert etwas ;-)


Import-Fehler korrogieren

(ohne Fehler kann dieser Punkt natürlich übersprungen werden)
    
Sollte nach dem Import ein Fehlerprotokoll angezeigt werden dieses öffnen


INFO: Sicherungsdaten importieren: EXADR
ERROR: Fehler beim Speichern der Tabelle: Externe Adressen (Daten ggf. inkonsistent).
ERROR: Nativer Fehler: Die IBAN hat eine ungültige Prüfziffer!
Dieser Fehler tritt auf wenn die IBAN in Blöcken eingetragen ist und nicht am Stück. z.B. (gekürzt ;-) DE59 1245 0000 0000 (Korrekt DE59124500000000) 

oder z.B.

INFO: Sicherungsdaten importieren: SONZAH
ERROR: Fehler beim Speichern der Tabelle: Mitglieder - Sonderzahlungen (Daten ggf. inkonsistent).
ERROR: Nativer Fehler: Der Betrag darf nicht Null sein.


Zum Verständnis:
In diesem Bsp. geht es um die Sonderzahlungen (Tabelle sonzah). Leider habe ich bei Sonderzahlungen keine offensichtlichen Fehler gefunden. Eine Möglichkeit besteht darin die Daten komplett zu exportieren und via PHPMyAdmin zu importieren.
Hierfür wird ein Commandline-Tool benötigt dass auf die Visualfox-Pro Datensätze zugreifen kann.
Hinweis:
Über eine einfache SQL-Abfrage select * from sonzah werden der Inhalt eines Memo-Felder nicht angezeigt. Wenn in den Memo-Felder keine größen Datenmengen wie z.B. Bilder enthalten sind kann über eine Konvertierung auf max. 254 Zeichen das Memo-Feld per CAST-Funktion so umgwandelt werden dass es die Memo-Feldinhalte exportiert.

   A.) Commandline-Tool um SQL-Befehle in VisualFox Pro auszuführen:
       FoxConsole
        ODER
       vRunfox bzw. Alternaitver Download (Nach Target.zip suchen und den Download danach umbennen !)
       Eine der Zip herunterladen und nach c:\ProgramData\GLS Vereinsmeister\db kopieren.
       
     > FoxConsole.exe bzw. vRunfox.exe starten
        Hinweis: Sollte der Fehler msvcr71.dll angezeigt werden diese DLL von dllme.comdllme.com herunterladen und ebenfalls in den db-Ordner kopieren.

       
-----------------------------------------------------------------------------
use sonzah
select count(*) from sonzah    (Zeigt die Anzahl Datensätze an. Nicht wirklich notwendig)
select * from sonzah                 (Zeigt alle Datensätze incl. Memofelder an. Jetzt können die Memo-Felder identifiziert werden da in den Datensätzen memo steht)
------------------------------------------------------------------------------------
select  *, CAST(buchtext AS c(254)) AS buchtext    (Mit dieser Erweiterung wird auch der Inhalt des Memo-Feldes buchtext ausgegeben als buchtext_b)
copy to sonzah.csv type csv                                         (Das Memo-Feld buchtext_a wurde nicht mit exportiert :-)
-----------------------------------------------------------------------------

   B.) Datei sonzah.csv öffnen z.B. mit  Notepad++
        ->Die 1. Zeile mit den Spaltenüberschriften ausscheiden. Kopfzeile wird gleich noch benötigt ggf. in einen Editor zwischenlagern !
        -> Datei von Ansi nach UTF-8 umkodieren und speichern!
   C.) PhpMyAdmin der XAMPP-Installation im Webbrowser öffnen und in die Datenbank vmeister wechseln
   (D.) Tabelle sonzah als sql-Befehlsätze exportieren falls doch Datensätze vor dem Import angepasst werden müssen.
   E.)  Tabelle sonzah leeren
   E.) Tabelle sonzah öffnen (anklicken) und importieren anklicken
   F.) Tabelle importieren  phpmyadmin sonzah import 2
       -> sonzah.csv auswählen
       -> Format: csv
       -> Spaltennamen: aus der Zwischenablage einfügen und buchtext_b (am ende) nach buchtext umbenennen

 Wenn jetzt die Anzahl der Datensätze übereinstimmt hat alles geklappt.
Wenn nicht muss jetzt herausgefunden werden welche Datensätze einen Fehler verursachen.
z.B. bei sonzah herausfinden ob es Beträge mit NULL als Wert gibt
select * from sonzah where isnull(stbetrag) or isnull(sz_urwert)
Wenn ja dann folgende Befehle ausführen
update sonzah set stbetrag=0 where isnull(stbetrag)
update sonzah set sz_urwert=0 where isnull(sz_urwert) 

oder bei exadr (externen Adressen) wenn die IBAN Leerzeichen hat
update exadr set iban=STRTRAN(iban,' ','')

Dies ist nur als Bsp.