Access DB

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von mattes80.

    Hallo

    Ich hab mir mit ACCESS eine DB erstellt und dann in VB 2010 Express eingebunden

    Bin bei Datenquellen auf Neue Datenquelle hinzufügen und dann ACCESS DB einfügen.

    dann wurde mit eine DataSet mit der Tabelle erstellt

    ich hab einen Textbox eingefügt und bei Eigenschaften auf DataBindings auf Text und die Spalte ausgewählt

    jetzt wird meine DB in Textbox geladen das geht auch ohne probleme

    dann hab ich Button hinzugefügt

    1 Button Weiter da hab ich diesen Code drin

    Quellcode

    1. PersonenBindingSource.MoveNext()

    1 Button zurück da hab ich diesen Code drin

    Quellcode

    1. PersonenBindingSource.MovePrevious()

    1 Button Speichern da hab ich diesen Codes drin

    Quellcode

    1. Try Me.ValidateChildren() PersonenBindingSource.EndEdit() PersonenTableAdapter.Update(Me.FirmaDataSet.personen)
    2. Catch ex As Exception
    3. MessageBox.Show(ex.Message.ToString, "Error!")
    4. End Try

    1 Button Neu da hab ich diesen Code drin

    Quellcode

    1. PersonenBindingSource.AddNew()


    Bis hierher geht das ohne probleme

    Jetzt komm ich zu mein Problem

    ich hab jetzt noch ein Button Löschen

    nur Leiter geht das nicht

    Quellcode

    1. Me.PersonenTableAdapter.Delete(Me.FirmaDataSet.personen)
    Leider geht das nicht.


    Wie muss mein Code für Löschen sein?

    Wie kann ich in meine DB dann suchen?

    Gruß

    Mattes
    Ado.Net ist eine von der DB abgekoppelte Bearbeitungsschicht.
    So gut es geht, suche in deinem Dataset, nicht in der DB.
    Man kann sowohl die BindingSource durchsuchen als auch die darunter liegende Tabelle.
    Kommt drauf an, wie die Bs verstöpselt ist: eine an eine annere Bs angeschlossene Bs repräsentiert üblicherweise eine Art Filter - daher kann man bei dieser Verstöpselung in der Bs natürlich weniger finden, als direkt in der DataTable.
    Mein wichtigster Tipp ist immer: Vergiss zunächst die DB, sondern lerne erstmal Databinding und Datenmodellierung.
    In beides kann man sich leidlich vollständig mit typDatasets einarbeiten.
    Das gelernte ist zu 100% auch dann noch erforderlich, wenn man sich später in die "richtige" Datenbänkerei stürzt.
    Tatsächlich empfehle ich, DB-Anwendungen immer ohne DB zu entwickeln, und erst nachträglich eine DB zu hinterlegen.

    Aber die Leuts wollen immer gleich DB, also geben wir ihnen DB: "Datenbank in 10 Minuten" auf Movie-Tuts

    Wie gesagt: die eigentlichen Vorraussetzungen lernt man besser über DB-Programmierung ohne Datenbank

    Oder als Tut zum sich durchklicksen: "DatasetOnly" auf Movie-Tuts

    Das mit den vier Views habe ich dir ja schon genannt - typDataset, Databinding und Datenmodellierung ist halt das Instrumentarium, mit dem man auf seine Daten rumorgeln kann, ob da nun eine DB hinter liegt oder auch nicht.

    Ups - die eigentliche die relationale GrundIdee nicht vergessen - das ist der Versuch, die Grundidee der Datenmodellierung ohne Fachchinesisch verständlich zu machen - aber ist auch bisserl abstrakt - Datenmodellierung ist halt eine Denkweise, die nicht an VB.Net gebunden ist.
    Nur umsetzen kann mans ideal einfach im typDataset.
    Ich hab noch eine frage

    Kann ich mit Tabelle1BindingSource.find in der Tabelle suchen?

    wenn ja wie kann ich das genau machen?

    Ich habe eine Access Tabelle mit dem inhalt

    ID | Name | Straße | Ort

    und ich möchte z.b. Name durchsuchen oder Straße oder Ort die ich vorher in Combobox auswähle

    Groß und Kleinschreibung soll egal sein und er soll z.b. auch das finden wenn in der DB der Name "Matthias" so geschrieben ist und man sucht z.b. "Mathias" dann sollte er das auch finden.


    Würde das mit dem Befehl
    Tabelle1BindingSource.find() gehen?

    Hoffe das mir jemand weiter helfen kann und mir ein Beispiel geben kann.


    gruß

    Mattes

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

    Ich hab schon geschaut

    social.msdn.microsoft.com/Foru…11-42b8-9c18-0a27b3f594de


    ich hab den code so geschrieben

    Quellcode

    1. Dim spalten As String() = {"Name"} Dim position As Integer For Each spalte As String In spalten position = Me.Tabelle1BindingSource.Find(spalte, Me.TextBox4.Text) If position >= 0 Then Exit For End If Next If position >= 0 Then
    2. Me.Tabelle1BindingSource.Position = position
    3. End If



    Die suche geht. aber nur wenn man genau danach sucht

    wenn man jetzt z.b. nur 3 buchstaben sucht z.b. Mat dann soll er die einträge auch finden

    wie macht man das?

    gruß

    Mattes

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

    Danke für die Info ich teste es gleich mal.

    Also ich hab meine suche jetzt so gestaltet,

    1 Textbox für Suche eingabe und 1 Button mit diesem Inhalt

    VB.NET-Quellcode

    1. Dim spalten As String() = {"Name"} Dim position As Integer
    2. For Each spalte As String In spalten
    3. position = Me.Tabelle1BindingSource.Find(spalte, Me.TextBox4.Text)
    4. If position >= 0 Then
    5. Exit For End If Next If position >= 0 Then Me.Tabelle1BindingSource.Position = position
    6. End If



    Jetzt ist es so das er nur das findet was auch genau gleich eingetragen ist.

    wenn ich jetzt z.b. in der DB eingetragen habe

    Test 1
    Test 2
    test 3
    test 4

    usw.

    und ich will such nach "Test" dann findet er mir nix nur wenn ich in dem Suchtext "Test 1" eingebe dann findet er was.

    Was muss ich tun

    Gruß

    Mattes

    VB.NET-Quellcode

    1. Dim spalten As String() = {"Name"}
    2. Dim position As Integer
    3. For Each spalte As String In spalten
    4. position = Me.Tabelle1BindingSource.Find(spalte, Me.TextBox4.Text)
    5. If position >= 0 Then
    6. Exit For
    7. End If
    8. Next
    9. If position >= 0 Then
    10. Me.Tabelle1BindingSource.Position = position
    11. End If


    Hab es grad mit Firefox gemacht da geht es. mit Google Browser geht das mit dem Code nicht richtig

    Ich hoffe du kannst das jetzt lesen
    es liegt nicht am Browser, sondern am Post-Editor, den du verwendest: Bitte VB-Tag benutzen - aber richtig

    @Topic: man kann einfach einen BindingSource.Filter setzen - der unterstützt auch den Like-Operator: DataExpressions

    Oder du nudelst halt alle Elemente der BindingSource mit ForEach durch, und füllst die Treffer in eine Liste. Dassis bisser umständlich, aber sone händische Suche kann halt alles, was VB ühaupt kann.
    Kannst du mir ein beispiel code geben mit BindingSource mit ForEach


    VB.NET-Quellcode

    1. Dim spalten As String() = {"Name"}
    2. Dim position As Integer
    3. For Each spalte As String In spalten
    4. position = Me.Tabelle1BindingSource.Find(spalte, Me.TextBox4.Text)
    5. If position <> 0 Then
    6. Exit For
    7. End If
    8. Next
    9. If position >= 0 Then
    10. Me.Tabelle1BindingSource.Position = position
    11. End If


    Hier wird ja schon die Spalte Name durchgesucht.

    Ich hab in einer Spalte das drin stehen. "test2 eintrag"

    Jetzt wenn ich das "test2" suche findet er mir das nicht obwohl es ja drin steht "test2 eintrag" wenn ich das Position in Label anzeigen lass gibt er mir das ergebniss "-1"

    ErfinderDesRades schrieb:

    man kann einfach einen BindingSource.Filter setzen - der unterstützt auch den Like-Operator:

    und ist auch einfacher zu handeln als dein Gedöhns:

    VB.NET-Quellcode

    1. Tabelle1BindingSource.Filter = "Name like ' " & Textbox4.Text & " ' "
    Bereits das Eingeben von "T" sollte nun reichen. Da kanst du sogar mit Platzhaltern arbeiten (* ? usw.)

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Hallo Vatter

    Danke für deine Antwort aber das geht leiter nicht das hatte ich auch schon mal.

    Hab jetzt ein Datagritt in Form eingefügt und mit DB verbunden.

    ein Textbox für die Suche und ein Button mit dem code

    VB.NET-Quellcode

    1. Dim spalten As String() = {"Name"}
    2. For Each spalte As String In spalten
    3. Tabelle1BindingSource.Filter = "Name like ' " & TextBox1.Text & " ' "
    4. Next


    jetzt wenn ich in der suche was eingebe und auf den Button klicke wird von meiner DB nix mehr angezeigt es kommen keiner ergebnisse

    was mach ich da falsch?