Best Practices für die Umstellung großer MS Access-Anwendungen auf .NET?

26

Wir haben eine sehr große MS Access-Anwendung, die ursprünglich für unsere persönlichen Bedürfnisse entwickelt und dann in eine kommerzielle Software umgewandelt und erfolgreich verkauft wurde. Die Software ist eine Art "Allround-Software für Ihr Unternehmen" und enthält mehrere Module, einschließlich Dokumentenmanagementsystem, Enterprise Resource Planning, Bestandsmanagement, Kundenbeziehungsmanagement, Datenanalyse usw. Wir sind mit dem aktuellen Stand sehr zufrieden Funktionalität der Anwendung, aber um die Anforderungen unserer Kunden zu erfüllen, müssen wir auf etwas Neues umsteigen.

Wir haben uns entschlossen, unsere Anwendung schrittweise auf .NET umzustellen, da wir uns an Visual Basic .NET halten können. Obwohl dies für die meisten Entwickler eine neue Sprache ist, verfügen wir über fundierte Kenntnisse in VBA und einige Dutzend kleiner Projekte, die in VB6 implementiert sind.

Wir haben bereits damit begonnen, die Datenschichtfunktionalität unserer Anwendung auf MS SQL Server zu verlagern, sodass jede Datenmanipulation und -suche direkt auf dem Server ausgeführt wird.

Was wir suchen, sind bewährte Methoden zum schrittweisen Verschieben unserer umfangreichen Benutzeroberfläche (ca. 500-600 verschiedene Formulare, einschließlich Unterformulare, ca. 200 Berichte mit mehrsprachiger Unterstützung usw.). Nach der jüngsten Anfrage unseres potenziellen Kunden, eine asynchrone Datenverschlüsselung für Dokumente in DMS zu implementieren, würden wir diesen Teil auch gerne vollständig von MS Access entkoppeln und in .Net implementieren.

Die Frage ist, wie die .NET-Anwendung nahtlos in das vorhandene MS Access-System integriert werden kann, damit wir sie mit bestimmten Parametern (Benutzerrechten usw.) aufrufen und den Datenaustausch zwischen dieser Anwendung und der laufenden MS Access-Anwendung ermöglichen können.


BEARBEITEN:

Wir haben versucht, einige Methoden aus Martin Fowlers Buch " Enterprise Intergration Patterns " anzuwenden , um eine gewisse Integration zwischen der MS Access-Anwendung und einigen kleinen Dienstprogrammen zu erreichen, die wir für verschiedene Anforderungen in .Net implementiert haben. Wir haben es aber nur geschafft, das Muster "Shared Database" zu verwenden und waren mit unserer Lösung nicht wirklich zufrieden.

Zum Beispiel haben wir ein kleines Hilfsprogramm implementiert, das als Windows-Dienst ausgeführt wird und alle Nachrichten automatisch über eine POP3-Verbindung vom Mailserver herunterlädt und in einer Tabelle speichert, während alle Anhänge im Dateisystem gespeichert werden.

Wir haben hauptsächlich ADO.NET verwendet, um direkt auf MS Access-Datenbanken im MDB-Format zuzugreifen und die Tabelle mit einigen verarbeiteten Daten zu füllen (wie die Daten zu E-Mail-Nachrichten aus dem obigen Beispiel: Wir haben Felder für FROM, TO, CC, BCC, Thema und Körper).

Es ist absolut kein Problem, mit dem MDB-Datenformat von .Net zu arbeiten . Außerdem möchten wir nicht bei MDB bleiben und haben fast alles auf MS SQL Server 2008 aufgerüstet - dies gibt uns viel mehr Freiheit bei der Datenverwaltung und Skalierbarkeit.

Das Hauptproblem hierbei ist, dass wir nicht wissen, wie eine Art "Rückruf" in Access implementiert wird , damit wir die Ausführung eines bestimmten VBA-Codes bei der Datenaktualisierung auslösen können.

Wir hatten große Hoffnungen, dass MS Access 2010 Update- und Insert-Trigger für Datentabellen unterstützt , aber es stellte sich heraus, dass wir für diese Trigger nur MS Access-Makros verwenden können und es keine Möglichkeit gibt, benutzerdefinierten VBA-Code innerhalb des Triggers auszuführen.

Wir haben auch einige Lösungen ausprobiert, bei denen Tastatureingaben direkt an das MS Access-Fenster gesendet wurden, um eine vom Benutzer aufgerufene Datenanforderung nachzuahmen. Das funktioniert, aber wir glauben nicht, dass dies eine realisierbare Lösung ist, die in der Produktion eingesetzt werden kann.

Wir haben uns auch mit DDE für MS Access befasst, aber wir konnten keine gute Musterlösung finden, die DDE-Befehle implementiert und diese für speicherinterne Daten und den Befehlsaustausch verwendet.

Das Hauptproblem besteht also darin, dass MS Access und die .Net-Anwendung gleichzeitig vorhanden sind und miteinander interagieren.

EDIT2 :

Ich habe vergessen zu erwähnen, welche MSMQ-Bibliothek wir auch in VBA für die Nachrichtenübermittlung zwischen .Net und MS Access implementiert haben. Das Problem war erneut das Fehlen eines Rückrufs hier: Wir mussten die Warteschlange wirklich nach neuen Nachrichten abfragen und da VBA nicht wirklich unterstützt Multithreading war keine wirklich gute Lösung.

Alexander Galkin
quelle
Haben Sie eine kleine Proof-of-Concept-.NET-App erstellt, um zu sehen, wie gut die beiden Teile zusammenarbeiten können? Auf welche Probleme sind Sie gestoßen?
sq33G
Wie wird Ihre Access-Anwendung bereitgestellt? Und was ist die Authentifizierungstechnik?
Skrol29
@ sq33G: Ich habe meine Frage überarbeitet, um diese Themen anzusprechen.
Alexander Galkin
@ Skrol29: Wir stellen es normalerweise als kompilierte MDB (.MDE) zusammen mit der MS Access-Laufzeitumgebung bereit. Wir verwenden die über Active Directory verwaltete Windows-Authentifizierung für die Datenbankverbindung und Berechtigungen.
Alexander Galkin
3
Gute Frage. Dies ist ein sehr praktisches Problem, mit dem viele Nicht-Software-Unternehmen, die schnell wachsen, häufig konfrontiert sind und in den Schoß der Entwickler geraten - wenn die Access-Datenbank "alles" nicht an ihre wachsenden Anforderungen angepasst werden kann.
Mistkerl

Antworten:

17

Dies wird ein großes und sehr kompliziertes Projekt sein. Ich war viele Male für die Migration von Access-Datenbanken nach .NET verantwortlich, aber nie in diesem Maßstab. Ich stimme zu, dass ein schrittweiser Ansatz wahrscheinlich am realistischsten sein wird. Der Versuch, alles auf einmal zu meistern, ist ein einfacher Weg, um zu scheitern.

Wie in anderen Antworten wird der erste und wichtigste Schritt darin bestehen, alles auf SQL Server zu verschieben. Dokumentieren Sie dabei die Datenbank, falls dies noch nicht geschehen ist, und identifizieren Sie Bereiche für das Refactoring, falls vorhanden. Access-Datenbanken, die wachsen, um sich verändernden Anforderungen gerecht zu werden, verfügen häufig über Datenmodelle, die im Gesamtüberblick verbessert werden können.

Als nächstes identifizieren Sie Module der Anwendung, die "in sich geschlossen" sind. Da es sich um eine Alles-zu-Alles-Datenbank handelt, wird es wahrscheinlich Module davon geben, die fast vollständig voneinander getrennt sind. Nachdem Sie diese disjunkten Teile erhalten haben, identifizieren Sie eines der kleineren Module, die am meisten von der Aktualisierung profitieren, und nehmen Sie es zuerst an.

Führen Sie bei der Migration zu .NET nicht nur eine einfache 1: 1-Kopie der Anwendung durch. Sammeln Sie Eingaben von Benutzern, um Schwachstellen mit der aktuellen Anwendung zu identifizieren. Sie möchten, dass Ihre erste Migrationseinheit ein großer Erfolg wird, um das vollständige Buy-In von allen anderen zu erzielen.

Nachdem Sie die erste Einheit fertiggestellt haben, schauen Sie sich an, was in Bezug auf Herausforderungen, Schwierigkeiten usw. passiert ist, und verwenden Sie diese Informationen in Zukunft.

Eine Sache, von der ich dringend abraten würde, wäre die Implementierung teilweise funktionierender Module (z. B .: "Wir haben das CRM migriert, aber die Funktionen X, Y, Z sind noch nicht im neuen System enthalten"). Dies führt dazu, dass Benutzer schnell frustriert werden, wenn ein unvollständiges System vorhanden ist, während das alte für sie "vollkommen in Ordnung" war. Diese Art der Entwicklung funktioniert möglicherweise auch in anderen Domänen, jedoch nicht in Unternehmen, in denen Benutzer "nichts falsches" mit dem alten Access-Monolithen sehen und die Migrationsanforderungen nicht verstehen.

Mistkerl
quelle
1
Es wird viel einfacher sein, mehrere Sprachen zu unterstützen. Während Sie Entwurfsentscheidungen treffen sollten, die die Unterstützung mehrerer Sprachen ermöglichen, sollten Sie sich auf bestimmte Elemente konzentrieren. Ich würde mir auch ein Layout und einen Ablauf für alle Formulare einfallen lassen, klar vermeiden, auf ein Formular zu verlinken, das nicht zu 100% vollständig ist, dies vermeidet eine teilweise Funktionalität.
Ramhound
7

Hier ist eine Art Plan, um Ihre MS Access-Anwendung durch Mutation in eine VB.Net-Anwendung zu verwandeln.

Dies ist kein allgemeiner Plan. Der folgende Plan hängt von dem von Ihnen beschriebenen Projekt ab.

Schritt 1: Migrieren Sie alle Daten zu SQL Server

Verwenden Sie ODBC nicht für den Verbindungszugriff auf SQL Server, sondern verwenden Sie stattdessen ein Access-Projekt (ADP). Bei einem Access-Projekt handelt es sich um eine Access-Datei mit der Erweiterung .adp, die über sämtliche Access-Funktionen (Makros, Formulare, Berichte, Module) verfügt. Die Verbindung erfolgt jedoch direkt in einer SQL Server-Datenbank anstelle einer MDB-Datei. ADP-Dateien sind sehr kompatibel mit MDB-Dateien. Sie scheinen in Access 2010 nicht unterstützt zu werden, obwohl die Funktion ausgeblendet ist, aber sehr gut unterstützt wird. Wie MDE können ADP-Dateien in ADE-Dateien "kompiliert" werden.

Die Migration nach SQL Server kostet nur wenige Änderungen in der Datenstruktur und im Code, ist jedoch ganz einfach zu migrieren. Und es ist schließlich ein endgültiges Ziel.

Vergessen Sie das Auslösen von Datenbankereignissen für VBA- oder VB.Net-Code. Dies kann technisch mit SQL Server Extended Stored Procedures durchgeführt werden, ist jedoch ein sehr schlechter Trick. Ihr Projekt hat ein zukünftiges Leben, daher ist es besser, seine Datenstruktur durch Vermeidung einer solchen destrukturierenden Brücke durchzusetzen. Wenn Sie mit Datenbank-Triggern spielen, ist dies im Allgemeinen klug, aber schwierig zu warten.

Schritt 2: Authentifizierung vereinheitlichen

Es ist eine gute Sache, dass Ihre Anwendung nicht auf Access-Sicherheit (MDW-Datei) basiert.

Erstellen Sie einen Plan für die Zielauthentifizierung für die VB.Net-Anwendung, und definieren Sie dann eine Möglichkeit, die Access-Authentifizierung auf dieses Ziel zu migrieren, um eine einheitliche Authentifizierung zwischen den beiden Anwendungen zu erzielen.

Da die Authentifizierung in einer Anwendungsarchitektur übergreifend ist, ist es einfacher, zwischen der Access-Version und der VB.Net-Version zu wechseln.

Schritt 3: Bereiten Sie ein Token-Feature vor, um eine Brücke zwischen Access und VB.Net herzustellen

Sie sagten, die Access-Benutzeroberfläche muss eine VB.Net-Benutzeroberfläche mit einigen genauen Parametern und auch Authentifizierung öffnen. Und wahrscheinlich müssen Sie das auch anders machen.

Eine gute Lösung besteht darin, ein kleines Token-Feature basierend auf einer Token-Tabelle zu erstellen: Spalten können eine Token-ID (Ganzzahl), einen Token-Schlüssel (lange Zeichenfolge), ein Token-Datum und eine Parameterliste (lange Zeichenfolge oder Text) sein. Jedes Mal, wenn Access einen VB.Net-Bildschirm öffnen muss, speichern Sie ein Token in der Datenbank mit den Parametern und öffnen Sie dann Ihre VB.Net-Anwendung nur mit der Token-ID und dem Token-Schlüssel. Das VB.Net öffnet sich, durchsucht die Token-ID in der Datenbank, überprüft den Schlüssel (dies gilt als Authentifizierung) und liest die Parameter. Dann öffnet es sich dem entsprechenden Formular und macht was nötig ist. Vergessen Sie nicht, den Token eine Dauer zu geben und die alten Token zu reinigen.

Wenn Sie von VB.Net zu Access zurückrufen müssen (das werden Sie wahrscheinlich), ist es meiner Meinung nach möglich, mit OLE einen Teil des VBA-Codes für eine geöffnete MDB-Access-Datei zu aktivieren.

Schritt 4: UI und Module Bildschirm für Bildschirm, Modul für Modul migrieren

Nun ist die Vorbereitung abgeschlossen. Sie können mit der Migration der Benutzeroberfläche von Frau Access zu VB.Net beginnen.

Dafür gibt es keine guten automatischen Werkzeuge. VBA und .Net sind zu unterschiedlich. Sie müssen Ihre Arbeit auf eine solche Migration vorbereiten. Beginnen Sie mit einem kleinen Formular, z. B. dem Feld "Info", und wechseln Sie von einfachen Formularen zu komplizierten Formularen. Natürlich müssen Sie einige Migrationen bündeln und planen, aber Sie migrieren nach und nach Ihre Bildschirme, Berichte und Bibliotheken von Frau Access zu VB.Net.

Skrol29
quelle
1

Ich bin erstaunt, dass Sie das alles mit Access gemacht haben. Es gibt eine sehr wichtige Frage, die Sie .NET Windows Forms oder .NET WPF nicht stellen. WPF hat eine steilere Lernkurve, aber meiner Meinung nach ist es leistungsfähiger mit einer besseren Benutzeroberfläche. Wir haben kürzlich unsere kommerzielle Anwendung von Forms auf WPF umgestellt und erzielen bereits mehr Verkäufe. Wir haben auch neue Funktionen hinzugefügt, aber die WPF-Benutzeroberfläche ist einfach sexy. Überprüfen Sie Ihr Tischdesign und räumen Sie es auf - jetzt ist es an der Zeit. Stellen Sie sicher, dass Sie alle Ihre FKs deklarieren. In Access können Sie schnell und einfach Dinge hinzufügen, die manchmal verrutschen. Wenn dies Ihre erste WPF-Benutzeroberfläche ist, erstellen Sie einige Prototypen. Wir könnten mehr in WPF packen, da die neue App mehr Funktionen, weniger Bildschirme und weniger viel weniger Code enthält. Sie werden XAML nicht mehr hassen, sondern lieben. Betrachten Sie eine Struktur wie MVVM.

Paparazzo
quelle
Wir haben mehrere kleine .NET-Anwendungen unter Verwendung von WinForms, WPF und Silverlight (sowohl als RIA als auch außerhalb des Browsers) entwickelt, und ich stimme zu, dass WPF (und Silverlight) für Anwendungen ein wesentlich aufregenderes Erscheinungsbild bieten.
Alexander Galkin
0

Da Sie das Access-Objektmodell bereits gut kennen, sollten Sie Access Interop in Ihrer .NET-App verwenden. Es sollte (mehr oder weniger) Ihnen ermöglichen, die Steuerung einer Access-App zu automatisieren, ohne die Undurchsichtigkeit von DDE.

sq33G
quelle
Ich halte dies zwar für eine gute Idee, aber wenn sie eine ältere Access-Version verwenden, verfügen sie möglicherweise nicht über die Funktionalität, die sie benötigen.
Jfrankcarr
-1

Ich kenne Ihre Geschäftslogikschicht nicht genau, aber Sie können auch in Ihrer .NET-Anwendung auf Ihre MS Access-Datenbanken zugreifen. Wenn es nicht nur um das Abrufen von Daten geht, können Sie eine TCP / IP-Verbindung zwischen Ihren Programmen (VB6- und VB.NET-Anwendungen) implementieren. Bitte werfen Sie einen Blick auf einen Artikel in CodeProject .

Osman Turan
quelle
"... den Datenaustausch zwischen dieser Anwendung und der laufenden MS Access-Anwendung aktivieren." wenn diese Aussage nicht mit meiner Antwort zusammenhängt. Dann weiß ich auch einfach nichts.
Osman Turan
Okay. Entschuldigen Sie. Downvote entfernt.
Arseni Mourzenko
@MainMa: Kein Problem.
Osman Turan
1
Ich denke, meine Antwort ist nach Ihrer Bearbeitung noch gültig. Ich erwähnte zwei Möglichkeiten. Einer davon ist der direkte Zugriff, der sich nach der Bearbeitung als unbrauchbar herausstellt, und der andere ist das Erstellen einer N-Tier-Anwendung. Ich denke, Sie sollten ein TCP / IP-Protokoll zwischen Ihrer Anwendung implementieren. Ich empfehle diese Methode besonders, auch wenn Sie Ihre Anwendungen auf demselben Computer ausführen möchten. Denn in meiner alten Erfahrung habe ich festgestellt, dass DDE für solche Verwendungen nicht sehr zuverlässig ist und es wirklich ärgerlich ist. Ein anderer Ansatz für lokale Anwendungen kann die Verwendung von benutzerdefinierten Systemmeldungen (Fenstermeldungen) sein.
Osman Turan
1
Scheint, Sie haben ein größeres Problem, als es scheint :) Weil Sie nach jedem meiner Kommentare etwas Neues enthüllt haben. Ich bin nicht mit MSMQ BTW vertraut. Es tut uns leid.
Osman Turan
-1

Sie fragen nach einer bewährten Methode, um das Falsche zu tun. Es gibt keinen. Zu den Best Practices gehört die effektive Erstellung eines wartbaren Systems, sodass die Entwicklung und der Support fortgesetzt werden können, auch wenn ein Bus abstürzt und ein ganz neues Team ausfallen muss. Das System, das Sie beschreiben, wird die meisten Entwickler in die Irre führen. Sie haben ein Produkt mit veralteter Technologie entwickelt und möchten mit der heutigen Technologie kommunizieren. Und Sie möchten dies tun, ohne eines der Anti-Patterns anzusprechen, die Sie für das Kernprodukt beschrieben haben. Diejenigen Entwickler, die bereit sind, dies in Angriff zu nehmen, sind wahrscheinlich nicht bereit, dies unter den von Ihnen vorgeschlagenen Bedingungen zu tun.

Ihr Bus ist jedoch nicht abgestürzt, sodass Sie das vorhandene Team nutzen können, das das System versteht. Der beste Weg, mich schrittweise weiterzuentwickeln, ist die Verwendung der Agilen Methodik. Es unterstützt einen iterativen Prozess, der die hohen Risikoanforderungen frühzeitig berücksichtigt und die geschäftlichen Anforderungen gut berücksichtigt.

SoylentGray
quelle
-2

Wir haben uns entschlossen, unsere Anwendung schrittweise auf .NET umzustellen

Oft ein Fehler. Am besten versuchen Sie es nicht "nach und nach".

Obwohl dies für die meisten Entwickler eine neue Sprache ist, verfügen wir über umfassende Kenntnisse von VBA und einigen Dutzend kleiner Projekte, die in VB6 implementiert sind.

Keine sehr gute Entscheidungsgrundlage. Wenn Sie eine neue Sprache lernen möchten, lernen Sie nicht VB. Lernen Sie C # oder etwas noch besseres wie Java.

"Eine neue Sprache für die meisten Entwickler, wir haben tiefe Kenntnisse von VBA" ist ein gängiger Code für "Wir haben einen VBA-Guru, den wir nicht irritieren wollen". Das ist etwas, das möglicherweise auch schlecht ist.

Was wir suchen, sind Best Practices, um unsere umfangreiche GUI schrittweise zu verschieben

Bei den Best Practices handelt es sich nicht um "Allmählich". Sie beinhalten "Ganz verwerfen".

Die allmählichen Migrationen, die ich gesehen habe, sind zusammengebrochen, weil es so schwer ist.

Du bist besser dran.

  1. Bewahren Sie das wertvollste Gut . Die Daten. Verschieben Sie alle Daten zu SQL Server. Alles davon. Schreiben Sie alles MS-Access neu, um ODBC-Verbindungen zu SQL Server zu verwenden. Jetzt sofort.

  2. Feuern Sie jeden ab, der in MS-Access temporäre Tabellen, Daten oder Ähnliches erstellt. Alle Daten müssen sich in einer Datenbank außerhalb von MS-Access befinden. Daten in MS-Access sind die Ursache für die Probleme. Halten Sie jetzt an und stellen Sie sicher, dass alle zustimmen. Wenn sie nicht einverstanden sind, suchen Sie ihnen einen neuen Job, der kein Hacken in MS-Access beinhaltet, während Sie versuchen, MS-Access loszuwerden.

  3. Suchen Sie nach einem Berichts-Framework, das automatisch Berichte erstellt, die Ihren aktuellen Anforderungen entsprechen. Keine Programmierung. Einfach einen Tisch oder eine Aussicht geben und loslegen! es ist fertig.

  4. Zählen Sie alle 500 Berichte auf. Partitionieren Sie sie in Berichte, die mit dem Tool einfach erstellt werden können, und in Berichte, die schwieriger sind. Priorisieren Sie die harten Berichte in "Must Have", "Should Have", "Could Have" und "Won't Do Before Later". Ersetzen Sie die automatisierten Berichte und die Must Have-Berichte dieses Berichtstools vollständig außerhalb von MS-Access.

    Nach meiner Erfahrung wird eine Datenbankansicht häufig in etwa 20 Berichten wiederverwendet. Daraus würde ich schließen, dass Sie 25 relevante Ansichten haben, aus denen die 500 Berichte abgeleitet werden. Jedes Tool, das die Berichterstellung automatisieren kann, sollte den größten Teil Ihrer Berichterstellung über eine kleine Anzahl von gut gestalteten SQL-Ansichten abwickeln. Einige Berichte sind für ein automatisiertes Tool zu komplex oder zu schwierig.

  5. Suchen Sie ein Entwicklungsframework, das CRUD-Transaktionen automatisch erstellt.

  6. Partitionieren Sie Ihre 200 Formulare in CRUD-Formulare (die automatisch erstellt werden können) und Nicht-CRUD-Formulare. Priorisieren Sie unter den Nicht-CRUDs mithilfe der MoSCoW-Regeln (Must, Should, Could, Won't).

    Häufig sind 60-80% der Antragsformulare einfache automatisierte CRUD-Formulare. 20-40% sind komplexer und erfordern eine fachkundigere Programmierung. Basierend darauf haben Sie 120 bis 160 CRUD-Formulare, die Sie nicht umschreiben müssen, sondern nur automatisieren. Sie haben 40-80 sehr komplexe Transaktionen.

  7. Erstellen Sie die CRUD-Formulare und die nicht CRUD-konformen Must-have-Formulare.

  8. Bewerten Sie die Lücken. Setzen Sie neue Prioritäten und arbeiten Sie an den wichtigsten Stellen der "Should-Have" -Liste.

Es ist wahrscheinlich am einfachsten, Access vollständig zu verwerfen. Vermeiden Sie Gradualismus.

Du wirst irgendwann das ganze Geld ausgeben.

Sie können es auch budgetieren und jetzt ausgeben.

Der Versuch , dies kann tatsächlich nach und nach tun , mehr wegen der Komplexität des Versuchens teuer Koexistenz zu verwalten.

S.Lott
quelle
9
Das ist alles schön, aber nicht realistisch. Vor allem der Teil mit "jemanden feuern" und "komplett verwerfen". Wir können nicht einfach alles wegwerfen und von einer grünen Wiese ausgehen, sowohl aus finanzieller als auch aus strategischer und persönlicher Sicht.
Alexander Galkin
8
-1 Deine Erfahrung ist nicht die Gesamtsumme des Universums. Während wir alle gerne in einer perfekten Welt leben würden, in der wir die Kultur sofort ändern können, ist dies nicht die Realität. Darüber hinaus trübt Ihre Tendenz gegenüber einigen bewährten Technologien Ihre Fähigkeit, andere potenzielle Lösungen zu erkennen. Sie haben den besten Weg für SIE dargelegt, um das Problem zu lösen, nicht für das OP.
SoylentGray
4
Tut mir leid, das musste -1 sein. Oft ein Fehler. Am besten versuchen Sie es nicht "nach und nach". - Haben Sie ein Zitat für diese "Best Practice"? Weil die meisten Leute das Gegenteil sagen würden - joelonsoftware.com/articles/fog0000000069.html
MattDavey
2
"Weil die meisten Leute das Gegenteil sagen würden". Die meisten Leute sind schlauer als die Kunden, mit denen ich gearbeitet habe. Gut für sie. Leider musste ich mit einer Reihe von Kunden zusammenarbeiten, die große, fehlerhafte MS-Access-Anwendungen hatten, für die umfangreiche Änderungen erforderlich waren, da sie nicht schrittweise migrieren konnten. Es ist meine Erfahrung. Das ist mein Zitat. Es tut mir leid, meine Erfahrung scheint einzigartig zu sein.
S.Lott
4
@S.Lott Ich finde es extrem zu sagen, dass der Code eher eine Verbindlichkeit als ein Wert ist. Nichts, was das OP sagte, deutete darauf hin, dass es nicht funktionierte oder die geschäftlichen Anforderungen erfüllte - tatsächlich "sind wir mit der aktuellen Funktionalität der Anwendung sehr zufrieden" . Es scheint keine dringende Notwendigkeit zu bestehen, perfekt funktionierenden Code zu entfernen - kein Krebs zum Ausschneiden. Das OP hat jedoch festgestellt, dass es für künftige Verbesserungen erforderlich ist, die von Access auferlegte Glasdecke zu durchbrechen - dies kann ein schrittweiser Prozess sein.
MattDavey