Syntax Umstellung VB6 Vb.NET 2019

  • VB.NET
  • .NET 6

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von -Franky-.

    Syntax Umstellung VB6 Vb.NET 2019

    Guten Abend Gemeine,
    ich hoffe ich werde nicht gleich gesteinigt. Habt bitte Nachsicht mit einem Neueinsteiger.
    Ich bin rechts gut zu Fuß mit VF6.
    Möchte jetzt umsteigen auf VB.NET.
    Meine erste Schwierigkeit siehe VB6 Code (funzt super)
    Das hätte ich gerne in VB.NET.
    Habe mir schon den A..... blutig gesucht. Leider ohne Erfolg.
    Aber wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht.
    Bin aber zuversichtlich, dass ich hier bei den eingefleischten Profis Unterstützung erfahre.
    Schon mal 1000 Dank.

    Ein einfacher VB6 Code:

    Visual Basic-Quellcode

    1. 'Access Datenbank--------------------------------------------------------------
    2. Public dbAccessintersoft As Database
    3. Public rstAccessAdressen As Recordset
    4. Public rstAccessFahrtenbuch As Recordset
    5. Public rstAccessKonten As Recordset
    6. Public rstAccessKontoNummern As Recordset
    7. Public rstAccessTan As Recordset
    8. Public rstAccessUmsatz As Recordset
    9. '------------------------------------------------------------------------------
    10. Dim vDatenbank
    11. vDatenbank = "fibu.mdb"
    12. Set dbAccessintersoft = OpenDatabase(vDatenbank)
    13. Set rstAccessAdressen = dbAccessintersoft.OpenRecordset("select * from adressen order by Firma", dbOpenDynaset)
    14. Set rstAccessFahrtenbuch = dbAccessintersoft.OpenRecordset("select * from fahrtenbuch", dbOpenDynaset)
    15. Set rstAccessKonten = dbAccessintersoft.OpenRecordset("select * from konten", dbOpenDynaset)
    16. Set rstAccessKontoNummern = dbAccessintersoft.OpenRecordset("select * from kontonummern", dbOpenDynaset)
    17. Set rstAccessTan = dbAccessintersoft.OpenRecordset("select * from tancodes", dbOpenDynaset)
    18. Set rstAccessUmsatz = dbAccessintersoft.OpenRecordset("select * from umsaetze", dbOpenDynaset)
    19. Als Beispiel ein einfacher Code:
    20. List1.Clear
    21. With rstAccessUmsatz
    22. .MoveFirst
    23. If .EOF Then Exit Sub
    24. Do While Not .EOF
    25. List1.AddItem !Beschreibung
    26. .MoveNext
    27. Loop
    28. .MoveFirst
    29. End With

    Wenn ich das in VB.NET hätte, wäre ich erstmal glücklich.
    Dann sehen wir weiter.
    Kommen bestimmt noch etliche Schwierigkeiten, aber hiermit könnte ich mich schonmal weiterentwickeln.
    Danke und noch einen schönen Abend aus Hessen....

    Und falls es jemanden interessiert.
    Mich haben die langweiligen Buttons schon immer nicht gefallen.
    Habe mir mal einen zurechtgeschneidert, den man im Aussehen, Farbe, Funktionen etc nach belieben ändern kann.
    Wenn Euch das gefällt, bin für jedes Feedback (positiv oder negativ) dankbar.
    Der funzt auch in VB.NET. Euer Feedback würde mich sehr interessieren, danke.

    Liebe Grüße Domainix

    Schrift normalisiert und CodeTags gesetzt ~VaporiZed
    Dateien
    • Cmd3DButton.ocx

      (49,15 kB, 17 mal heruntergeladen, zuletzt: )
    Computer sind auch nur Menschen....

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „domainix“ ()

    So quick & dirty würde ich folgenden Vorschlag in den Ring werfen:

    VB.NET-Quellcode

    1. Imports System.Data.OleDb
    2. Public Class Form1
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. Dim ds As DataSet = GetRecordset("select * from adressen order by Firma")
    5. ListBox1.DataSource = ds.Tables(0)
    6. End Sub
    7. Private Function GetRecordset(command As String) As DataSet
    8. Dim ret As New DataSet
    9. Dim connStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Temp\firma.accdb"
    10. 'Connectionstrings zu finden unter: https://www.connectionstrings.com/access/
    11. Using conn As New OleDbConnection With {.ConnectionString = connStr}
    12. Try
    13. conn.Open()
    14. Using adapter As New OleDbDataAdapter
    15. Using cmd As New OleDbCommand With {.Connection = conn}
    16. cmd.CommandText = command
    17. adapter.SelectCommand = cmd
    18. adapter.Fill(ret)
    19. End Using
    20. End Using
    21. Catch ex As Exception
    22. Finally
    23. conn.Close()
    24. End Try
    25. End Using
    26. Return ret
    27. End Function
    28. End Class​


    Gruß
    Vollzitat eines Vorposts an dieser Stelle entfernt ~VaporiZed
    @INOPIAE
    Das Eine geht nicht ohne das Andere. Aber eins nach dem anderen. Mich jagt keiner. Habe alle Zeit der Welt 78 J.
    Computer sind auch nur Menschen....

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Danke für den Code.
    Werde ihn mal auseinander nehmen und versuchen ihn nachzuvollziehen und zu verstehen.
    ... und wie gesagt. Habe alle Zeit der Welt (78 J).

    Der Cmd3DButton.ocx wurde bisher 13 x downgeloadet.
    Würde gerne ein Feedback, Beurteilung, Anmerkung bekommen.
    Wenn er gefällt, ist das zumindest eine Bestätigung, das die Arbeit nicht sinnlos war.
    Danke.

    Computer sind auch nur Menschen....

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „domainix“ ()

    Hallo zusammen,
    nach allem, was ich bis jetzt in VB.NET gelesen, getestet habe, komme ich zu folgender Erkenntnis:
    Ich habe NNICHTS gefunden, was sich nicht mit VB 6 realisieren ließe.

    Mein Fazit:
    Da ich in VB 6 fit bin wie Turnschuh. werde ich wohl bei meinem beliebte VB 6 bleiben.
    Bin aber empfänglich für Gegenargument.
    Schönen Abend noch...
    Computer sind auch nur Menschen....

    domainix schrieb:

    (...) Bin aber empfänglich für Gegenargument (...)

    Diese Arbeit muss man schon selbst erledigen und sich nicht immer der anderen bedienen oder es von ihnen fordern, wenn man irgendeine Änderung bei sich selbst herbeiführen möchte. Die Gründe und Argumente – was auch immer das sein soll oder heißen mag – für dieses oder jenes muss man auch selbst finden. Darüberhinaus ist möglicherweise der Ansatz, irgendetwas „wechseln zu wollen oder zu müssen” nicht optimal oder gar suboptimal, denn dieser impliziert ein Paradigma mit Entweder/Oder-Lage, also entweder das eine oder das andere, nichts dazwischen, dabei ist jede neue Sprache – egal welcher Art, d.h. auch so eine gesprochene – in erster Linie eine Horizonterweiterung, sie eröffnet eine neue Welt, zu der man vorher keinen Zugang hatte, aber wie schon gesagt, das muss man alles selbst wollen und die damit verbundene Anstrengung und Arbeit selbst verrichten. Und umgekehrt auch – wenn man mit dem, was man hat, glücklich und zufrieden ist, und keinen Drang verspürt, etwas Neues kennenzulernen, dann ist die Welt für einen auch in Ordnung.
    Meine Erfahrung mit meinem eigenen Code, den ich vor 5 Jahren in meiner Anwendung geschrieben habe ist, wenn ich mich genötigt sehe mich intensiv damit zu beschäftigen: neu schreiben.
    Ich entwickle unter C# und bin immer noch (leider geht nicht anders) bei .Net Framework 4.8
    Was ich damit sagen will ist, dass man Code oft nur schwer oder gar nicht "portieren" kann. Das hat mit der Technik zu tun, die man verwendet hatte, was heute möglich ist und wo der eigene Erfahrungsstand liegt.
    Ich würde immer von dem Ausgehen was die Aufgabe des Codes ist oder einer langjährig vernachläßigten Funktion, sofern diese denn immer noch wichtig ist. Ist sie es, neu schreiben. Ich habe auf diese Weise teils Tonnen von Code entdeckt, die Obsolet waren bzw. wurden.
    VB5/6 Code und VB.Net sind beides natürlich Visual Basic Sprachen, aber die eine hat mit der anderen eigentlich nicht mehr viel zu tun. Dazwischen liegen ja auch gute 25 Jahre Entwicklung.
    Ich weiß nicht, was leichter ist, von VB6 auf vb.NET oder von WinForms auf WPF etwas zu portieren – ich schreibe gerade „nur” 12.000 selbstgeschriebene Zeilen von WinForms auf WPF um und es kommt mir teileweise so vor, als wenn ich es neu schreiben müsste/würde. Dabei ist das eh nur ein Bruchteil dessen, was man später als ein ganzes Programm nennen kann, weil ich in WinForms mit der Grafik mit normalen Mitteln nicht mehr rauskitzeln konnte – PictureBoxen haben zwei Schichten, wenn man damit auskommt, passt es einigermaßen, sofern man mehrere PictureBoxen natürlich nicht wieder übereinander legen muss, denn dann stimmt alles wieder nicht; braucht man allerdings mehr Layer und möchte vernünftige Transparenz haben, kann man das vergessen, man muss die BitBlt-Grafikroutinen mit Masken, anden und xoren dann selbst schreiben. Ich war schon kurz davor, das zu machen, dann fiel aber die Entscheidung, alles bis dato Geschriebene lieber gleich für WPF umzuschreiben und dann einfach dort weitermachen, denn die nächste Sackgasse in puncto Grafik in WinForms wäre bestimmt wieder gekommen – das ganze soll ja auch einigermaßen schnell als eine Animation agieren. Dabei habe ich ja noch gar nichts von DPI-Skalierung und der sagenumwobenen „Unschärferelation” in WinForms erwähnt – heh ; ) Na jedenfalls für eine blöde Markierung-Zeichnen-Routine muss man in WinForms zur „Schatzkiste” namens DrawReversibleFrame von Microsoft greifen, sonst wird das alles eine lange Odyssee; und wenn dann noch Scrollen im Fenster dazukommen soll, wo sich alles mitbewegt, relativ zueinander wird und die kleinen, immer noch vorhandenen Bugs im Framework zum Vorschein kommen und merkwürdige kleine Artefakte gezeichnet werden, dann gute Nacht Thaddäus!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Gregor Jasinski“ ()

    also es gibt 2 Fälle zu betrachten vor dem portieren: der alte Code ist gut: Portieren einfach, aber sinnlos weil nutzlos. Alter Code ist schlecht: portieren wird zu einem Horror und mittendrin wird klar: neuschreiben wäre klüger gewesen.
    Also ein vb6-Code, den ich pflege (n-ter Nachfolger), hat das Problem, dass der Installer einer Komponente in 16-bit geschriebn ist, das ist jetzt neuerdings nicht mehr hipp genug. Aber die ddll ist 32 bit und läßt sich problemlos einbinden. Puh.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Coldfire“ ()

    Ich habe das auch versucht mit vielen meiner alten VB6 Programme und kann mich den Vorschreibern nur anschließen.
    Eine Portierung von VB6 auf VB.Net ist nicht zielführend.

    Es ist meistens so viel was man nachträglich nacharbeiten muss. Bei kleinen Projekten ist man oft schneller diese neu zu schreiben.
    Und große, umfangreiche Projekte werden durch die Portierung so inkonsistent das man die fast nicht mehr ans Laufen bekommt.

    Getreu Bill Gates: "Never touch a running system". Wenn man das VB6 Progamm noch einsetzt, lässt man es einfach so.
    Muss es erweitert werden, ist neu erstellen meistens die bessere Wahl.
    Da lage ich mit meiner Entscheidung nicht so ganz daneben.
    Ich bleibe bei meinem geliebten VB6 (weil fit wie Turnschuh).
    ...und wie bereits erwähnt: Es gibt absolut NICHTS in VB.NET, was in VB6 nicht zu realisieren wäre.
    Und so nebenbei: Mein neuer Button erfreut sich über immer mehr Beliebtheit. Ein Feedback würde mich freuen.
    Computer sind auch nur Menschen....

    domainix schrieb:

    Es gibt absolut NICHTS in VB.NET, was in VB6 nicht zu realisieren wäre.

    Naja, da du das jetzt schon 2 Mal so prominent geschrieben hast. Das neue .NET ist plattformunabhängig, läuft auch auf Mac und Linux. Wir haben einen Server geschrieben, der läuft lokal und in der Cloud auf einem Linux-Docker Container. Glaub nicht, dass du das mit VB6 hinbekommst. Aber wenn du eh nur auf Windows unterwegs bist, ist das ja egal.

    Bluespide schrieb:

    Aber wenn du eh nur auf Windows unterwegs bist, ist das ja egal.

    So ist es, und ich bin glücklich damit.
    Und für alles die es interessiert und bevor Fragen kommen:
    Ich bin 78 Jahre alt und programmiere als die meisten Menschen nicht wussten, wie man Computer schreibt, geschweige denn was ein Computer ist.
    Und alles fing mit Basic, Cobol und DBase an.... usw....
    Bei VB6 bin ich dann irgendwann hängengeblieben.
    und happy...
    Computer sind auch nur Menschen....

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „domainix“ ()

    domainix schrieb:

    (...) Es gibt absolut NICHTS in VB.NET, was in VB6 nicht zu realisieren wäre (...)
    Wenn diese Behauptung mit einer entsprechenden Zusatzinformation so wie im Beispiel unten ausgestattet worden wäre, wäre es deutlich stimmiger, so kann man höchstens nur darüber schmunzeln. Wenn das so eine Art Provokation oder Aufmischen der vb.NET-Gemeinschaft sein sollte, dann muss ich leider feststellen, dass sie... nicht wie eine Bombe eingeschlagen hat : )
    Das Beispiel: „[Von dem, was ich mache], gibt es absolut NICHTS in VB.NET, was in VB6 nicht zu realisieren wäre”
    ___
    (...) Mein neuer Button erfreut sich über immer mehr Beliebtheit. Ein Feedback würde mich freuen (...)
    Man sollte Herunterladen nicht mit Beliebtheit verwechseln, das Herunterladen wird vermutlich nicht einmal mit „Angeschaut” gleichzusetzen sein, denn – wie schon jemand hier im Topic erwähnt hat – in diesem Format möchte man das auf dem eigenen PC nicht haben und die spezifische Datei landet dann im Papierkorb – ein Bild, Screenshots, GIF oder Verweis auf ein kurzes Video, das zeigt, was der Super_Button so kann, wäre von Vorteil oder zumindest ein Anfang, um mit ihm in die Annalen der Menschheit einzugehen ; )

    (...) Ich bleibe bei meinem geliebten VB6 (weil fit wie Turnschuh) (...)
    Es tut dem Menschen nicht gut, wenn er sich mit Schuhen vergleicht. Wenn man noch 20 Jahre lebt, wird man explizit eine Virtual Machine brauchen, um diese Relikte aus der Vergangenheit noch zum Laufen zu bringen – ist ein bisschen aufwendig, aber wenn man etwas liebt, muss man manchmal auch mal in diesem Kontext dafür leiden. Auf jeden Fall ist es besser, mit VB6 zu programmieren und Hirnschmalz zu trainieren als auf der Kautsch zu sitzen und ständig über eigene Krankheiten und Gebrechen mit dem Umfeld zu plaudern. Wenn man das mit einer entsprechenden Dosis Sport verknüpft, kann man das eigene Leben womöglich tatsächlich etwas verlängern, um die eigenen Programme in einer Virtual Machine erleben zu können – es ist, wie so oft, alles nur eine Frage der Zeit, die zum Erstaunen der Beteiligten obendrein auch noch relativ in jeder Sandbox zu verlaufen scheint.

    Neu

    Gregor Jasinski schrieb:

    ein Bild, Screenshots, GIF oder Verweis auf ein kurzes Video, das zeigt, was der Super_Button so kann


    Bringt vielleicht ein bisschen Licht ins Dunkel...
    Bilder
    • B1.jpg

      30,31 kB, 207×515, 38 mal angesehen
    • B2.jpg

      49,37 kB, 527×491, 32 mal angesehen
    Computer sind auch nur Menschen....

    Neu

    Rotieren in Echtzeit unter Beachtung des Hintergrundes, der Transparenz und Reihenfolge in der Z-Achse aller anderen Objekte auf dem Tisch und mit einer freigewählten mathematischen Formel – wie beispielsweise Beschleunigung, Abbremsung oder Oszillation – kann das Ding mit geschriebenen 10-15 Zeilen Code aber nicht, wenn man draufklickt? Genau in solchen Momenten, in denen man solche Sachen selbst zum Laufen und Bewegen bringen kann, weiß man, was einem entgeht oder entgangen wäre, wenn man in alter Technologie mental steckenbliebe. Ferner hoffe ich, dass man wisse, dass es sich bei solchen Projekten nur um ideelle, persönliche Werte, die sonst keine weitere Bedeutung haben können, handele – es wird schwierig sein, dafür einen Orden oder Oscar zu bekommen, ja, es wird sogar schwierig sein, einem Freund oder Bekannten zu „verklickern” oder zu vermitteln, dass es sich hierbei um etwas besonderes handelt, selbstverständlich nur aus Sicht des Erfinders etwas besonderes : )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gregor Jasinski“ ()