Modernize Studio
Sprache: DE
E‑Mail schreiben

Visual-Basic-6-Anwendungen, ins Web migriert

In vielen Unternehmen steuern Visual-Basic-6-Programme noch immer Aufträge, Produktion, Termine und Buchhaltung, mehr als fünfundzwanzig Jahre nach Erscheinen der letzten Version. Wir migrieren sie zu Webanwendungen in C#, mit denselben Daten und Geschäftsregeln, mit oder ohne den ursprünglichen Quellcode.

Warum jetzt

Microsoft hat den Support für die Entwicklungsumgebung von Visual Basic 6 am 08/04/2008 beendet. Die Laufzeitumgebung wird weiterhin mit Windows ausgeliefert und für die gesamte Lebensdauer der Windows-Versionen unterstützt, die sie enthalten, darunter Windows 11. Das gilt aber nur als 32-Bit-Komponente und nur für schwerwiegende Regressionen und kritische Sicherheitsprobleme. Steuerelemente, die nicht zu Windows gehören, etwa MSCOMCTL.OCX, MSFLXGRD.OCX und fast alle OCX-Dateien von Drittanbietern, müssen mit der Anwendung installiert werden und sind nicht durch Microsoft abgedeckt.

In der Praxis liegt die Schwierigkeit bei Menschen und Werkzeugen. Microsoft unterstützt die IDE nicht auf 64-Bit-Windows, Entwickler mit VB6-Kenntnissen werden jedes Jahr weniger, und jeder neue PC bedeutet eine weitere Installation mit von Hand registrierten Komponenten.

  1. Entwicklungsumgebung Visual Basic 6Ende des Microsoft-Supports
  2. Windows 10Ende des Microsoft-Supports

Was wir migrieren

Das ganze Programm, einschließlich dessen, wovon es außerhalb des eigenen Codes abhängt.

  • Formulare und Steuerelemente

    Fenster mit Textfeldern, Kombinationsfeldern, Tabellen, Registerkarten und Steuerelementfeldern, auch MSFlexGrid, ListView und TreeView. Sie werden zu Webseiten, die das gewohnte Layout beibehalten.

  • Logik in Modulen und Klassen

    Berechnungen, Prüfungen und Abläufe, verteilt auf .bas- und .cls-Dateien und Formularereignisse. Wir überführen sie in serverseitige Dienste mit Tests.

  • Datenzugriff

    DAO-, RDO- und ADO-Code für Access, SQL Server, Oracle oder andere Datenbanken, einschließlich SQL, das durch Aneinanderhängen von Zeichenketten entsteht. Die Daten wandern nach SQL Server oder MySQL oder bleiben, wo sie sind, wenn andere Systeme davon abhängen.

  • Berichte und Druck

    Crystal Reports, DataReport und Ausdrucke, die Zeile für Zeile mit dem Printer-Objekt gezeichnet werden. Daraus wird jeweils ein PDF-Dokument mit demselben Inhalt.

  • COM-Komponenten und DLLs

    Selbst geschriebene ActiveX-DLLs, Komponenten von Drittanbietern und Aufrufe der Windows-API über Declare. Wir identifizieren jede davon und entscheiden, ob sie ersetzt, neu geschrieben oder nicht mehr gebraucht wird.

  • Dateien, Einstellungen und Geräte

    Konfiguration in INI-Dateien oder der Registry, Importe aus Textdateien und Anbindungen an Waagen, Etikettendrucker oder serielle Geräte über MSComm. Wir prüfen, welche davon weiterhin eine lokale Installation brauchen.

So sieht die Web-Version aus

Anschauungsbeispiel, erfundene Daten

Ein Terminbuch, wie es in einem VB6-Programm am Empfang aussehen könnte, und dieselbe Woche im Browser.

Ziehen Sie den Regler oder nutzen Sie die Pfeiltasten.

Was woraus wird

In VB6: Formulare (.frm) und ihre Ereignisse
In der Webanwendung: Webseiten, mit der Logik auf dem Server
In VB6: Module (.bas) und Klassen (.cls)
In der Webanwendung: C#-Dienste mit automatischen Tests
In VB6: OCX-Steuerelemente, auf jedem PC registriert
In der Webanwendung: Standard-Webkomponenten, nichts zu installieren
In VB6: ADO- oder DAO-Recordsets
In der Webanwendung: Parametrisierte Abfragen auf SQL Server oder MySQL
In VB6: Crystal Reports oder DataReport
In der Webanwendung: PDF-Dokumente, erzeugt vom Server
In VB6: Ein Setup für jeden Arbeitsplatz
In der Webanwendung: Eine Adresse, im Browser geöffnet

So läuft die Migration ab

  1. Analyse innerhalb von 48 Stunden

    Sie schicken uns das installierte Programm und seine Datenbank, dazu den Quellcode (.vbp, .frm, .bas, .cls), falls vorhanden. Innerhalb von 48 Stunden erhalten Sie einen schriftlichen Bericht: was das Programm heute leistet, wo die Risiken liegen, wie die Web-Version aufgebaut wäre, einen Festpreis für ein Pilotmodul und eine Schätzung für den Rest. Die Analyse ist kostenlos und verpflichtet Sie zu nichts.

  2. Pilotmodul

    Wir bauen einen Teil der Anwendung auf einer Kopie Ihrer echten Daten, meist den Teil, der am häufigsten genutzt wird. Ihre Mitarbeiter arbeiten damit im Alltag, bevor Sie über den Rest entscheiden.

  3. Automatische Vergleichstests zwischen Alt und Neu

    Wir halten fest, was das VB6-Programm bei einer Reihe echter Fälle liefert, etwa Preise, Summen und erzeugte Dokumente, und prüfen die neue Anwendung gegen diese Ergebnisse. Für jede Regel, die wir finden, gibt es einen automatischen Test, der dem alten Programm und der neuen Anwendung dieselben Eingaben gibt und prüft, ob die Ergebnisse übereinstimmen. Sie erhalten die Testergebnisse.

  4. 30 Tage Parallelbetrieb

    Wenn die vollständige Anwendung fertig ist, bleibt das VB6-Programm 30 Tage lang parallel in Gebrauch. Jede Abweichung zeigt sich, solange das alte Programm noch da ist, und wir beheben sie im Rahmen des vereinbarten Preises.

Typische Stolperstellen und wie wir damit umgehen

  1. OCX- und ActiveX-Abhängigkeiten

    Viele VB6-Programme stützen sich auf Steuerelemente, die nicht mit Windows ausgeliefert werden, teils von Herstellern, die es nicht mehr gibt, und Microsoft führt Dateien wie GRID32.OCX und THREED32.OCX als nicht unterstützt. Die Analyse listet jede Abhängigkeit auf, ihre Aufgabe im Programm und ihren Ersatz.

  2. Variant, Standardeigenschaften und stille Umwandlungen

    VB6 wandelt stillschweigend zwischen Zeichenketten, Zahlen und Datumswerten um, und eine Zeile wie Text1 = rs!Summe verlässt sich auf Standardeigenschaften. Eine wörtliche Übersetzung nach C# oder VB.NET verhält sich in Grenzfällen anders, etwa bei leeren Feldern oder Datumswerten in einem anderen Länderformat. Wir schreiben diese Stellen bewusst neu und sichern sie mit Tests ab.

  3. On Error Resume Next

    In VB6-Code verbreitet, verschluckt diese Anweisung Fehler und lässt das Programm mit halb geschriebenen Daten weiterlaufen. Wo wir sie finden, klären wir, was der ursprüngliche Autor vermeiden wollte, und behandeln diesen Fall ausdrücklich. Sonst würde die neue Anwendung entweder mit einem Fehler abbrechen oder dieselben stillen Fehler wiederholen.

  4. 16-Bit-Integer und Rundung

    Ein Integer endet in VB6 bei 32.767, die Ursache vieler Überlauffehler, sobald eine Tabelle wächst. Currency hat vier Nachkommastellen, und Round rundet nicht kaufmännisch, sondern mathematisch auf die nächste gerade Ziffer. Wir bilden die Rundung nach, die das Geschäft erwartet, und vermerken, wo das alte Programm falsch lag.

  5. SQL aus aneinandergehängten Zeichenketten

    Abfragen, die mit & aus Benutzereingaben zusammengesetzt werden, sind anfällig für SQL-Injection und scheitern an Namen mit Apostroph. In der neuen Anwendung verwendet jede Abfrage Parameter.

  6. Fehlender oder veralteter Quellcode

    Manchmal ist der Quellcode verloren, oder die vorhandene Kopie passt nicht zum Programm im Einsatz. Aus einem kompilierten VB6-Programm lässt sich kein verlässlicher Quellcode zurückgewinnen. Wir arbeiten daher vom laufenden Programm, seiner Datenbank und seinen Masken aus, und die Analyse sagt klar, welche Teile mit mehr Unsicherheit behaftet sind.

Preis und Zahlung

Analyse

Kostenlos

schriftlich, innerhalb von 48 Stunden

Pilotmodul

1.000–1.500 €

meist, zu 50 % bei Beginn und zu 50 % nach Abnahme

Die Analyse ist kostenlos. Wenn Sie sich gegen das Projekt entscheiden, behalten Sie den Bericht und schulden uns nichts.

Die Preise sind fest und werden vor Projektbeginn schriftlich vereinbart. Ändert sich der Umfang, schicken wir ein neues schriftliches Angebot und warten auf Ihre Freigabe, bevor wir die zusätzliche Arbeit erledigen.

Bei einer kompletten Migration wollen wir 40 bis 60 % unter dem üblichen Angebot einer Agentur liegen. Das ist möglich, weil wir ein kleines Studio sind, ohne teure Büros und ohne Vertriebsabteilung.

Preise zzgl. MwSt.

Zur Preisschätzung

Eine echte Migration, durch Tests belegt

Northwind ist die Beispieldatenbank, die Microsoft mit Access ausgeliefert hat, kein Kunde von uns. Wir haben eine öffentliche Kopie zu SQLite und PostgreSQL migriert, jede Tabelle und jede Abfrage mit automatischen Tests gegen das Original geprüft und auf dem Ergebnis eine funktionierende Webanwendung gebaut. Die Fallstudie nennt die Zahlen, der Äquivalenzbericht führt jede Prüfung auf.

Northwind ist eine Access-Datenbank, bei Visual Basic 6 gehen wir aber genauso vor: migrieren, gegen das Original testen, beides parallel betreiben.

Äquivalenzbericht (auf Englisch) · Klickbare Vorschau und Beispielanalyse (Demo)

Häufige Fragen

Wir haben den Quellcode nicht. Können Sie das Programm trotzdem migrieren?

Oft ja. Wir arbeiten vom Programm im Einsatz aus, von seiner Datenbank und von Screenshots oder Aufzeichnungen, wie es genutzt wird. Die Analyse nennt, welche Teile wir sicher nachbilden können und wo wir Ihre Angaben brauchen.

Warum den Code nicht automatisch nach VB.NET oder C# konvertieren?

Konvertierungswerkzeuge erzeugen Code, der kompiliert, aber die Desktop-Struktur beibehält, oft auf Kompatibilitätsbibliotheken angewiesen ist und die alten Probleme mitnimmt. Für eine Webanwendung bauen wir die Masken neu und verlagern die Logik, und der VB6-Code dient uns als Spezifikation dessen, was das Programm tut.

Hört unser VB6-Programm unter Windows 11 auf zu funktionieren?

Nicht von selbst: Microsoft unterstützt die VB6-Laufzeitumgebung unter Windows 11. Was meist versagt, ist alles drumherum: nicht registrierte OCX-Dateien, verlorene Setup-Pakete, alte Datenbanktreiber und die IDE, die Microsoft auf 64-Bit-Windows nicht unterstützt.

Unser Programm spricht mit einer Waage oder einem Etikettendrucker. Kann eine Webanwendung das?

Meist ja, aber das ist der eine Teil, für den eventuell ein kleines Programm auf dem PC nötig ist, an dem das Gerät hängt. Wir prüfen das in der Analyse und berücksichtigen es im Preis.

Können wir Schritt für Schritt migrieren?

Ja. Das Pilotmodul ist der erste Teil, der Rest kann in Etappen folgen. Wo es möglich ist, teilen sich VB6-Programm und Webanwendung während der Übergangszeit dieselbe Datenbank.

In welcher Sprache wird die neue Anwendung geschrieben?

Meist in C# mit ASP.NET Core, das jeder .NET-Entwickler warten kann. PHP mit MySQL ist eine Alternative, wenn Ihr IT-Dienstleister damit arbeitet.

Kontakt

Per E‑Mail:

riccardo@modernizestudio.com
E‑Mail schreiben

Schicken Sie uns das Programm und seine Datenbank, gern mit Testdaten, oder eine kurze Beschreibung, was es leistet. Wir antworten innerhalb eines Werktags.

Wir arbeiten von Italien aus.

E‑Mail schreiben