Zugriff Vergleichsdatenbank

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Zugriff Vergleichsdatenbank

    Hallo zusammen
    Habe leider noch nicht viel VB-Erfahrung und möchte folgenden DB Zugriff realisieren.
    In einer Accses-DB sind folgende Spalten belegt:

    1.Alte Art.-Nummer / 2. Neue Art.-Nummer / 3. Bis 5.Hinweise für die neue Art.-Nummer

    Prozess :
    Eingabe „Alte Art.-Nummer“ > Vergleich Spalte 1
    Vorhanden NEIN > Ausgabefenster [Alte Art.-Nummer] „Kein Eintrag“
    Vorhanden JA > Vergleichen ob ein Eintrag in der gleichen Zeile bei der Spalte 2 vorhanden ist
    NEIN > Ausgabefenster [Neue Art.-Nummer] „Kein Eintrag“
    JA > Ausgabe des neuen Art.-Nummer inkl. (wenn vorhanden) Hinweise in Spalten 3 bis 5.

    Kann mir da jemand helfen?

    Vielen Dank und Gruss
    paul
    Hi paul!

    die Anbindung an die mbd läuft?
    Hier möchte ich noch auf den ErfinderDesRades verweisen; hier seine Tips - schau unter DatasetOnly & Buch lesen (hier geht es auch um MS Visual Basic 2008, dies gibt es in 2 Teilen kostenlos zum Download ).
    Du könntest die Tabelle (DataTable) mit einer For-Schleife durchlaufen:

    VB.NET-Quellcode

    1. For i = 0 To DataTable.Rows.Count - 1
    2. If TextBox.Text = CStr(DataTable.Rows.Item(i).Item(IndexColumnAlteArtNummer)) Then 'CStr sofern die Spalte in der DB nicht als String definiert
    3. If CStr(DataTable.Rows.Item(i).Item(IndexColumnNeueArtNummer)) = String.Empty Then
    4. MsgBox("Kein Eintrag in NeueArtNummer gefunden")
    5. Else
    6. 'Hier jetzt Deine Ausgabe
    7. End If
    8. Else
    9. MsgBox("Kein Eintrag gefunden")
    10. End If
    11. Next


    so, wenn ich mich nicht verguckt habe, dann sollte dies so möglich sein.
    Gruß & ...
    Lächle heut, morgen wird's schlimmer !!!

    Buch lesen | Bitte VB Tags benutzen - was ist damit gemeint? |
    Hallo dolce

    Super Sache vielen Dank für die Hilfe, schaue mir die Tutorials gleich mal an!
    Der Source für die Buttons und Layers ist erstellt, aber die Anbindung an die Mdb läuft leider noch nicht.
    Bin noch mit den theoretischen Grundlagen beschäftigt..Wie ...Was..Wann...:wacko:
    Habe da mal was Zusammengedichtet. Ist noch voller Fehler und läuft nicht. Als Newbie sehe ich leider nur gewisse Code-Blöcke, aber die Zusammenhänge machen mir noch zu schaffen..

    Quellcode

    1. Public Class Form1
    2. ' Methoden & Funktion des Suchbuttons (cmdSuche)
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSuche.Click
    4. ' Überprüfen, ob in das Suchfeld einen Suchwert eingetippt wurde
    5. If TextBox.Text = "" Then
    6. ' Wenn kein Suchwert eingegeben worden ist erscheint eine Fehlermeldung(MsgBox)
    7. MsgBox("Bitte einen Suchbegriff eingeben")
    8. Else
    9. Dim con As New OleDbConnection
    10. Dim cmd As New OleDbCommand
    11. con.ConnectionString =
    12. "Provider=Microsoft.Jet.OLEDB.4.0;" &
    13. "Data Source=C:\Temp\datenbank.mdb"
    14. cmd.Connection = con
    15. Try
    16. con.Open()
    17. For i = 0 To DataTable.Rows.Count - 1
    18. If TextBox.Text = CStr(DataTable.Rows.Item(i).Item(IndexColumnAlteArtNummer)) Then 'CStr sofern die Spalte in der DB nicht als String definiert
    19. If CStr(DataTable.Rows.Item(i).Item(IndexColumnNeueArtNummer)) = String.Empty Then
    20. MsgBox("Kein Eintrag in NeueArtNummer gefunden")
    21. Else
    22. AusgabeBox.Text = " " 'Bin mir nicht sicher, wie das definiert werden muss??
    23. End If
    24. Else
    25. MsgBox("Kein Eintrag gefunden")
    26. End If
    27. Next
    28. con.Close()
    29. End Try
    30. End Sub
    31. Private Sub cmdBeende_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBeende.Click
    32. Me.Close()
    33. End Sub
    34. Private Sub cmdLösche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLösche.Click
    35. Dim a As String
    36. a = ""
    37. lblEingabe.Text = a
    38. End Sub
    39. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    40. End Sub
    41. End Class
    Hallo paul,

    seehr kompliziert dein Konzept. Darf ich einen Alternativvorschlag machen?

    1. Erstelle ein typisiertes DataSet zu deiner AccessDB

    2. Mach dir eine WinForm und zieh das DataSet aus dem Datenquellendesigner drauf (als DataGridView)

    Es passiert folgendes: VB puzzelt dir ALLE notwendigen Datenverbindungen zurecht und zeigt dir im DGV alle Spalten an. Dann brauchste auch nicht den ganzen Suchkram, sondern wenn eine Alte Artikelnummer nicht vorhanden ist, dann ist sie auch nicht da (am besten Sortierung nach Alter Artikelnummer machen). Wenn die alte ArtNr da ist, steheh in den Spalten daneben gleich die neue Nummer und die Details.

    Falls du sehr viele Artikel hast, dann kannste der Form noch eine Textbox spendieren, wo du die Alte ArtNr als Suchbegriff einstellen kannst. Der Suchbegriff wird als Filter der BindingSource deiner DGV übergeben und entweder die DGV zeigt danach noch eine Spalte an (der gesuchte Artikel) oder ist leer (die Artikelnummer gibt's nicht).

    So jedenfalls würde ich da rangehen.
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D
    Hallo marsianer und Danke für den Typ.
    Ist dies die gleiche Vorgehensweise, wie bei der in "Datenbank in 10min" beschrieben?
    Die Beispiele laufen irgendwie nicht. Kommt die Fehlermeldung:Der Microsoft Jet OLEDB 4.0 Provierde sei nicht registriert???
    Kommt gerade viel neues und unterschiedliche Lösungs-Wege auf mich zu. Bin da etwas verwirrt, welchen ich einschlagen soll.
    Dolce hat da auch gute Vorarbeit mit dem Quellcode geleistet, bei dem ich mir aber nicht sicher bin, wie ich das ganze in meinen Code implementieren soll?

    paul schrieb:

    Kommt die Fehlermeldung:Der Microsoft Jet OLEDB 4.0 Provierde sei nicht registriert

    hast du einen server-Explorer in deim VisualStudio (Menü-Ansicht-ServerExplorer)? da kannste per KontextMenü auf Verbindung hinzufügen klicksen, und dann "Access" anwählen. Dann solltedir dein OLEDB-Treiber angezeigt werden, der vlt. eine niedrigere VersionsNummer hat als 4.0.

    Das Verbindung Hinzufügen dann abbrechen, denn das dient nur, die Version des installierten Jet OLEDB-Treibers rauszukriegen.

    Dann in den Projekteigenschaften, bei den Settings den ConnectionString editieren, und die korrekte VersionsNummer da reinfrickeln.

    Es kann natürlich sein, dass du garkein Access-Treiber installiert hast, dann hassePech.

    Aber eiglich, wenn du eine AccessDB hast, die du iwie öffnen kannst, dann sollteste auch einen geeigneten Treiber haben - vlt. ist bei dir ja auch eine höhere VersionsNummer installiert.

    (vlt. gibts auch weniger umständliche Wege, seinen installierten Treiber rauszukriegen - weißichnurnich)

    paul schrieb:

    Ist dies die gleiche Vorgehensweise, wie bei der in "Datenbank in 10min" beschrieben?

    Im Prinzip ja. Und da ich auch nicht der DB-Crack in VB bin kann ich nur sagen, damit haste die besten Chancen, die Sache zum Laufen zu kriegen.
    Dass VB den Accesstreiber nicht kennt, ist mir neu, hier wird unheimlich viel damit rumgemacht. Aber das ist ne Settingssache, mit der ich mich leider nicht auskenne (Fachleute bitte vortreten!).
    Verwirren wollte ich dich eigentlich nicht, eher das Gegenteil :whistling: . Sorry deswegen. Nimms einfach als eine Anregung, der du mal nachgehen solltest.
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D
    Habe mich definitiv vom DataSet zurückgezogen und versuche den OleDB-Weg zu gehen. @Marsianer: Besten Dank trotzdem :D
    Möchte an dieser Stelle noch ich ein grosses Lob aussprechen für die zahlreichen Hilfsangebote :thumbsup:
    Betr. JET ist klar, habe ein 64bit System.

    paul schrieb:

    Habe mich definitiv vom DataSet zurückgezogen und versuche den OleDB-Weg zu gehen.

    naja - vlt. kommst du ja nochmal drauf zurück.
    ich jdfs. wüsste nicht, wie man ohne Databinding mit vertretbaren Aufwand auch nur geringfügig komplexe Oberflächen gestalten könnte. Und ohne Dataset oder OR-Mapper kannmanhalt kein komplexes Databinding einsetzen.
    Und hat folglich keine Möglichkeit, mit vertretbarem Aufwand auch nur eines der von mir als die vier Views bezeichneten Gestaltungs-Prinzipien einer Anwendungsoberfläche umzusetzen.