Was sind einige gute Techniken eine MS Access-Anwendung auf eine .NET-Anwendung zu konvertieren?

StackOverflow https://stackoverflow.com/questions/105087

  •  01-07-2019
  •  | 
  •  

Frage

Wir haben eine 12-jährige Frau Access-Anwendung, die wir für unser Kerninventar Lager- und Abrechnungssystem verwenden. Es läuft bereits auf einem SQL-Server-Backend, aber alle die „Logik“, Formulare und Berichte sind in Access. Nach der Erfahrung es die massiven Mengen von Wartungs Schlamm nahm Bestandstransaktionen von Nicht-temporal zeitlichen einzuschalten, erkennen ich, dass ich dieses Ding in dem Code einen Tag konvertieren muß, so kann ich besser die Logik in einer viel besser verwaltbar und prüfbar Umgebung verwalten.

Was sind einige Techniken, die mich in eine .Net-Anwendung in einer überschaubaren und effizienten Weise zu konvertieren erlauben würden?

Eine Idee war es, die Anfragen zu gespeicherten Prozeduren zu konvertieren, dann wandeln die App in einer ADV project.But Ich bin immer noch ratlos, wie die Formulare und Berichte zu behandeln.

Auch ich bin der einzige Entwickler für mein Unternehmen, wenn es ankommt.

War es hilfreich?

Lösung

Wie Sie bereits asp.net mit einigen Business-Logik haben könnten Sie diese öffnen, um Zugriff als Webservice (asmx-Dateien). Google für das Microsoft Office Web Services Toolkit für Ihre Version des Zugangs (XP / 2003 etc.) und dieser wird vba Proxy-Klassen schreiben Sie den Web-Service anrufen. Sie können Web-Service-Daten in die Formulare durch Code binden (vba zu den Kontrollen zu lesen und schreiben) oder lokale temporäre Tabellen erstellen mit Daten aus dem Web-Service und regelmäßigen Zugang Bindung verwenden.

Je nachdem, was Sie am bequemsten mit (Code / Tsql) Sie können eine Business-Logik-Schicht oder Hybrid setzen Logik in gespeicherten Prozeduren oder in (beide). Ich finde es einfacher testen Code als gespeicherte Prozeduren und wie nicht zu SQL Server für die Business-Logik gebunden zu sein heißt, wenn Sie die Datenbank ändern mögen oder Komponenten / Test offline ohne eine Datenbank zu entwickeln. Neue .net Features wie LINQ haben ziemlich gute Leistung, so dass Sie nicht für Datenbankaktivitäten auf gespeicherte Prozeduren verlassen müssen.

Halten Sie den Zugang Frontend-Benutzeroberfläche, bis Sie alle Ihre Business-Logik / Datenzugriff auf Web-Services Refactoring haben. Sie können dann eine asp.net app erstellen, die die Web-Services oder eine winform App verbraucht, wenn Sie wollen. (Halten Sie sich von wpf, als ui, für den Augenblick, da es eine steile Lernkurve ist und noch nicht über einen Datagrid, die die Zugriff der Datenblattansicht vergleichen.)

Berichte

Die Zugriffs Berichte können kann SQL Server Reporting Services upsized werden (vba in Berichten upsize nicht, und es ist besser, einige Tsql in gespeicherten Prozeduren zu schreiben). Wenn Sie nicht das vollständige SQL Server-Produkt haben, können Sie immer noch das Reportviewer-Steuerelement verwenden, um Ihnen Berichte zu schreiben (siehe http: // www.gotreportviewer.com/ ) in asp.net (oder winform mit der Standardversion oder aus Visual Studio) Bindung an ado.net Datensätze.

Weitere Optionen: Sie können .net Dlls schreiben und COM-Interop verwenden. Dieser Ansatz ermöglicht es Ihnen, nach und nach dem Schreiben Funktionalität zu starten. verwenden .net ui nicht z.B. ein winform, da es nicht gut mit Zugang ui spielen. Sie könnten die Geschäftslogik oder Datenzugriffslogik schreiben und dann diese Klassen von vba nennen. Anschließend können Sie diesen Code zu asp.net oder Web-Service bewegen, falls erforderlich.

Reise ausschließen:

Ich mag es nicht den Ansatz, eine neue App mit nebeneinander Versionen zu schreiben. Als einzelne Entwickler haben Sie genug zu kümmern. Sie werden wahrscheinlich Funktionen in beiden Versionen und Debuggen von zwei Versionen, anstatt ein Ende hinzufügen.

Die VB6 Formen Interop funktioniert nicht für den Zugriff.

ADP als angegeben ist ziemlich tot. (Ich mochte sie nie, wie ich oft lokale Tabellen verwenden, um Leistung zu optimieren und sie können nur durch den Code und nicht verknüpft genannt werden)

Sie können hier Ihre VBA-Modulen und Klassenmodulen zu vb.net mit dem Visual Basic-Aktualisierungs-Assistent (in Visual Studio) konvertieren, aber es upsize nicht alles (zB dao / ado Code ado.net Code) und erstellt keinen Code, der für .net optimiert und kann nicht einfach sein, Unit-Tests auf je nach Ausführung des VBA-Code zu schreiben. Ich empfehle, den Code umzuschreiben (versuchen Development Test Driven, wenn Sie ernsthaft über die Prüfung, um zu sehen, ob es Ihnen gefällt).

Andere Tipps

Kurze Antwort:. Die Migration scheint nicht, wie etwas leicht automatisiert

Meine Vermutung ist, dass die beste Wahl neu zu schreiben (und Installation) das System ein Stück zu einer Zeit, auch wenn (vielleicht) es Benutzer zwingt den alten und neuen Versionen Side-by-Side für eine Weile laufen zu verwenden verschiedene Bits der Funktionalität. Sie können diesen Aufwand durch eine sorgfältige Prüfung minimieren, von denen gehört zu migrieren und in welcher Reihenfolge.

Zum Beispiel könnten Sie einen Benutzer, dessen Job Rolle verlangt, dass er oder sie nur einen Bildschirm der ganzen Tag zu nutzen. Wenn Sie diesen Bildschirm wandern erste Funktionalität mit begleitender, kann dieser Benutzer auf das neue System sofort und lassen Sie die alte hinter, reduziert die Wartungslast.

Das sind also nur ein paar Ideen auf nicht zu viel Informationen. Ich hoffe, das hilft sowieso.

würde ich prüfen, bei der Suche Interop Toolkit Forms. Wie ich es verstehe, macht dieses Tool es ganz einfach aus VB6 .NET Formulare zu verwenden, so vielleicht kann es auch in Microsoft Access verwendet werden? Wenn ja, kann es Ihnen helfen, die Anwendung auf .NET in einer inkrementellen Art und Weise zu migrieren. eine schnelle Suche zu tun, war ich keine Guides auf der Verwendung mit Microsoft Access finden nicht in der Lage, so dass ich entschuldige mich, wenn dies eine Sackgasse herausstellt.

zu einem adp Konvertieren wird keine gute Lösung auf lange Sicht sein -. Diese Technologie von Microsoft aufgegeben wird,

Wenn Sie möchten, .net wechseln (warum? Sie haben einen Grund .net zu bevorzugen?) Ich schlage vor, Sie etwas zu lesen beginnen, versuchen einige einfache Anwendungen zu erstellen und starten Sie dann die Aufgabe, die Umwandlung dieser Datenbank in eine Anwendung .

Aber ...

Ich glaube, Sie und das Unternehmen müssen über die Risiken an diesem Projekt beteiligt denken. Was passiert, wenn Sie krank werden, nur in der Woche, dass das Management einige Berichte benötigt, die nicht bereits existieren? Ich würde vorschlagen, dass Sie eine kleine lokale Unternehmen für Softwareentwicklung suchen, werden sie froh sein, Ihnen zu helfen. Vielleicht können Sie vereinbaren, dass Sie die ‚Lead-Entwickler‘ sein fortsetzen und sie nur für Back-up verwendet werden.

Ich habe ein ähnliches Problem, und adressierte sie durch ein versioniert Entfaltungssystem in dem Access-Frontend zu schaffen (Greifern und eine CAB-Datei extrahieren), um die erforderliche AppDomain Manipulation herauszufinden Lage sein, die richtige CLR-Version in den Zugang zu laden Prozess, legen Sie eine .config-Datei, und Post-Daten in beiden Richtungen .

Es verwendet Standard-C-DLL aufruft, so dass keine COM-Registrierung erforderlich, aber auch leider keine Unicode-Unterstützung.

Send Command - Generic, ich alles getan, damit haben könnte. Open Form - Beabsichtigte ein „Drop in“ Ersatz für DoCmd.OpenForm zu sein Open Report - soll ein "Drop-in" Ersatz für DoCmd.OpenReport sein

So einen neuen Bericht machen, oder eine bestehenden zu SSRS migrieren, das Format Standard machen, und dann DoCmd.OpenReport zu netDoCmd.OpenReport in Access ändern.

eine Namenskonvention folgen zu wissen, wo die Berichte aus zu laden, und eine Standardmethode für die Daten für den Bericht erforderlichen ziehen.

Jetzt bin ich die Migration ein Formular oder Bericht als Kapazität zulässt, oder wenn eine Änderung wird es angefordert.

Da die Feature-Entwicklung für ein Jahr stoppen kann alles auf einen Schlag zu tun?

MDI nicht richtig funktioniert aber. Ich denke, es gibt einige Arbeit, die ich brauche noch um SetParent und UPDATE_UISTYLE zu tun

All dies macht die Benutzeroberfläche in Prozess und im Fenster mit Access. Ich baue alles in DLLs, und der letzten Schritt wird eine EXE-Datei zu erstellen, die die „erste Form“ lädt und verwenden, die das Access-Frontend zu ersetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top