none
aus VB 2008 in Access mdb schreiben RRS feed

  • Frage

  • Guten Morgen,

    ich habe eine mdb datenbank diese lade ich mit

    Me

     

    .SerienbriefTableAdapter.Fill(Me.SerieDataSet.Serienbrief)

    in mein Formular. Jetzt versuche ich schon die ganze Zeit änderungen in meiner Datenbank zu speichern es geht aber nicht. habe dazu einen BindingNavigator und dort das saveitem der code zum speichern lautet so

    Private

     

    Sub SerienbriefBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SerienbriefBindingNavigatorSaveItem.Click

     

    Me.Validate()
    Me.MEINEBindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.MEINDataSet)

     

    End Sub

    Montag, 28. September 2009 05:25

Antworten

  • Schau dir mal den Rückkehrcode vom Update an. Wenn kein Fehler angezeigt wird, dann funktioniert das Speichern auch.

    Ich vermute, dass du in der IDE mit einer im Projekt enthaltenen mdb arbeitest. Mit dem Build wird die Datei jedes mal neu ins Ausführungsverzeichnis kopiert, so dass immer der Ausgangszustand vorliegt. Ob das so ist, kannst du einfach prüfen, indem du das Programm mehrmals außerhalb der IDE startest oder dir die Änderungen mkittesl Acces in der Kopie, in der geändert wurde, anschaust.

    --
    Peter
    Montag, 28. September 2009 06:46
  • Ich hatte dir doch schon geschrieben, dass der zu verändernde Datensatz für das Rückschreiben in die Datenbank identifziert werden können muss. Dazu dient dem Designer die Primärschlüsselspalte, die bei dir vermutlich nicht vorhanden ist.

    --
    Peter

    Dienstag, 29. September 2009 11:09

Alle Antworten

  • Schau dir mal den Rückkehrcode vom Update an. Wenn kein Fehler angezeigt wird, dann funktioniert das Speichern auch.

    Ich vermute, dass du in der IDE mit einer im Projekt enthaltenen mdb arbeitest. Mit dem Build wird die Datei jedes mal neu ins Ausführungsverzeichnis kopiert, so dass immer der Ausgangszustand vorliegt. Ob das so ist, kannst du einfach prüfen, indem du das Programm mehrmals außerhalb der IDE startest oder dir die Änderungen mkittesl Acces in der Kopie, in der geändert wurde, anschaust.

    --
    Peter
    Montag, 28. September 2009 06:46
  • Danke das ging ja schnell.

    Hat wunderbar funktioniert.

    Jetzt habe ich meine datenban kaber von einer lokalen access mdb auf unseren sql server umgeschrieben.

    wenn ich jetzt mein speicher button drücken kommt

    --Aktualisieren erfordert einen gültigen UpdateCommand, wenn eine DataRow-Auflistung mit modifizierten Zeilen weitergegeben wird.--

    woran liegt das. hier der code hinterm button

    Private

    Sub SpeichernToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SpeichernToolStripButton.Click

     

    Try
    Me.Validate()
    Me.AlleBindingSource1.EndEdit()
    Me.TableAdapterManager1.UpdateAll(Me._Z3_KontakteDataSet)
    MsgBox(
    "Update successful")

     

    Catch ex As Exception
    MsgBox(
    "Update failed")
    End Try
    End Sub

     

     

    Dienstag, 29. September 2009 07:49
  • Wenn du den Designer genutzt hast, dann fehlt das Häkchen für Update. Wenn eine Primärschlüsselspalte fehlt, dann ist die Fläche für das Häkchen ausgegraut und das Häkchen kann nicht gesetzt werden. Der Designer nutzt die Primärschlüsselspalte, um bei einem Update jeden zu aktualisierenden Datensatz eindeutigt identifizieren zu können.

    --
    Peter
    Dienstag, 29. September 2009 08:20
  • Hallo Peter,

    wo muss ich das häkchen fürs update setzten, find es nicht

    danke profimong
    Dienstag, 29. September 2009 08:39
  • Schau dir mal alle Menüs des Designers an: im Formular Advanced Options, welches über das erste Formular links unten direkt beim Aufruf von Configure der Basis-Abfrage angezeigt werden kann.

    --
    Peter
    Dienstag, 29. September 2009 09:01
  • Hallo

    ich habe leider die dt. Version.

    meinst du mit Menüs oben wo steht Datei - Bearbeiten - Ansicht - Erstellen - Debuggen - .......

    oder die eigenschaften meiner Datenbank oder die Eigenschaften meines Forms

    und was meinst du mit basis-abfrage
    Dienstag, 29. September 2009 09:16
  • Ich nutze keine deutsche Version, da die vollständige Hilfe auch nur in englisch verfügbar ist und die Übersetzung nicht immer einen eindeutigen Rückschluss auf den englischspachigen Begriff zulässt. Auch ist in der deutschen Version die Sprachsyntax nur in englisch verfügbar (z.B. If statt Wenn), gliechfalls die Glieder (member) der Klassen (z.B. Load statt Laden).

    Advanced Options - erweiteret Optionen

    Configure - Konfugieren (im Kontextmenü beim Rechtsklick auf die erste Abfrage im TableAdapter)

    --
    Peter
    Dienstag, 29. September 2009 10:15
  • Danke habs gefunden

    habe in der konfiguration drei möglichkeiten für häkchen

    - insert-, Update-, und Delete-Anwesiungen generieren
    - Vollständige Parallelität verwenden
    - Datentabelle aktualisieren

    alle drei sind angehakt

    dann auf weiter wieder drei möglichkleiten

    -DataTable füllen -> Methodenname Fill
    -DataTable zurückgeben ->Methodenname GetData
    - Methoden erstellen, um Updates direkt an die Tabelle zu senden

    alle drei sind angehakt

    dann wieder auf weiter

    er sagt mir mit blauen Haken das alle SELECT INSERT Anweisungen sowie die Fill Get und Update Methoden generiert sind

    mit fertigstellen sagt er wird alles übernommen

    auch gemacht

    wenn ich jetzt mein update kommando ausführe

    Private Sub ButtonSpeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonFertig.Click
     Try
       Me.Validate()
       Me.AlleBindingSource1.EndEdit()
       Me.TableAdapterManager1.UpdateAll(Me._Z3_KontakteDataSet)
       MsgBox("Update successful")
     Catch ex As Exception
       MsgBox("Update failed")
     End
    Try
    End
    Sub

    sagt er mir wieder:

    Aktualisieren erfordert einen gültigen UpdateCommand, wenn eine DataRow-Auflistung mit modifizierten Zeilen weitergegeben wird.

    gehe ich jetzt wieder in die TableAdapter Konfiguration ist der Haken bei Datentabelle aktualisieren wieder drausen.

    Woran könnte es noch liegen.

    Was mir noch aufgefallen ist ich kann ohne Probleme neue Datensätze in meine Datenbank einfügen kan aber dies neuen weder löschen noch ändern. 

     



    Dienstag, 29. September 2009 10:45
  • Ich hatte dir doch schon geschrieben, dass der zu verändernde Datensatz für das Rückschreiben in die Datenbank identifziert werden können muss. Dazu dient dem Designer die Primärschlüsselspalte, die bei dir vermutlich nicht vorhanden ist.

    --
    Peter

    Dienstag, 29. September 2009 11:09
  • im desingner  kann ich in der DataSet.xsd in meiner tabelle eine spalte als primärschlüssel auswählen das ist bei mir nummer welche einmalig ist und automatisch vergeben wird. vor dieser spalte ist auch ein kleiner schlüssel ist das nicht richtig? und wenn nein wie und wo lege ich im designer den ps an
    Dienstag, 29. September 2009 12:29
  • Der Designer holt sich die Information aus der Datenbank. Dort muss alles passend angelegt sein. Wenn nicht, dann kannst du den Designer nicht nutzen und musst selbst Hand anlegen.

    --
    Peter
    Dienstag, 29. September 2009 12:51
  • danke peter für deine gedult.

    habe jetzt meine sql datenbank neu importiert und dann in vb neu eingebunden jetzt geht es wunderbar vielen dank.
    Mittwoch, 30. September 2009 04:56
  • Daraus schlussfolgere ich, dass du die Datenbank vorher nicht richtig aufgebaut hattest und erst späten den Primärschlüssel eingefügt hast.

    --
    Peter
    Mittwoch, 30. September 2009 05:20
  • Hallo Peter,

    habe das gleiche Problem. Wo und wie finde ich das Menü: erweiterte Optionen? 
    Donnerstag, 21. Januar 2010 11:25
  • Hallo Pirelli007,

    Also Du hast unter Deiner Form den z.B. EmployeesTableAdapter. Hier Rechstklick à Edit Queries in DataSet Designer. Der DataSetDesigner springt auf und hier wieder Rechtsklick auf EmployeesTableAdapter à Configure à Advanced Options.

     





    Grüße,

    Robert

    Donnerstag, 21. Januar 2010 12:49
    Moderator
  • Hallo Robert,

    Danke; das hab ich nun gefunden. Bei Datentabelle ist kein Haken und ich kann dem nicht setzen, da es hellgrau ist und nicht anklickbar. Was hab ich noch falsch?

    Gruß

    Edgard
    Freitag, 22. Januar 2010 12:09