Office: Problem beim "Recordset.Update"

Helfe beim Thema Problem beim "Recordset.Update" in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo Leute. Folgendes Problem: Ich möchte über ein Formular Daten in einer Tabelle ändern. Dabei soll der Formular nach einer... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Lord-X, 27. Juli 2007.

  1. Lord-X User

    Problem beim "Recordset.Update"


    Hallo Leute.

    Folgendes Problem:

    Ich möchte über ein Formular Daten in einer Tabelle ändern.
    Dabei soll der Formular nach einer benutzerdefinierten Kundennummer suchen ( das klappt bestens). Dann kann der Benutzer z.B. "Anmerkungen" ändern und mit Klick auf den Button "Speichern" die Änderung in Tabelle übernehmen (bzw. die Anmerkung bei dem jeweiligen Kunden ändern).

    Es kommt jedoch zu einer Fehlermeldung:

    Problem beim "Recordset.Update" [​IMG]

    .
    Wobei in meiner Tabelle "Kundenstamm" nur die Kundennummer auf Index "Ja (ohne Duplikate)" gesetzt ist.
    Primärschlüssel ist nicht definiert.

    Mein Code für den "Speichern"-Button sieht wie folgt aus:


    Private Sub btnKDedit_Click()
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("Kundenstamm", dbOpenDynaset)

    rs.Edit
    rs("Kundennr") = Me!lstKD
    rs("Firma") = Me!txtFirma
    rs("Firma2") = Me!txtFirma2
    rs("Ansprechpartner") = Me!txtAnsprechpartner
    rs("Telefonnummer") = Me!txtTelefonnummer
    rs("Strasse") = Me!txtStrasse
    rs("PLZOrt") = Me!txtPLZOrt
    rs("Tour") = Me!txtTour
    rs("Wochentag") = Me!txtWochentag
    rs("SelectDoc") = Me!chkSD
    rs("Autoteilepilot") = Me!chkATP
    rs("Geburtstag") = Me!txtGeburtstag
    rs("Anmerkungen") = Me!txtAnmerkungen
    rs.Update
    rs.Close
    Set rs = Nothing

    MsgBox "Die Änderung wurde gespeichert.", vbOKOnly, "Datensatzänderung"

    End Sub


    Ich benutze Access2003, falls das weiterhilft.

    Bitte helft mir.
    Da ich eine Noob in Sachen OfficeVBA bin, komme ich da ech nincht weiter.


    Danke im Vorraus
     
    Lord-X, 27. Juli 2007
    #1
  2. freaky
    freaky Erfahrener User
    Hi,

    Du kannst nicht einen IndexFekd einen Wert zuweisen und speichern! Der Index wird mit diesen Einstellungen automatisch von Access erstellt - daher auch die Fehlermeldung.

    Nimm die Zeile einfach raus:

    rs("Kundennr") = Me!lstKD

    Damit sollte es dann gehen....
     
    freaky, 27. Juli 2007
    #2
  3. Lord-X User
    Habe ich gerade ausprobiert.

    Wenn ich die Zeile mit "rs("Kundennr")=Me!lstKD" rausnehme, dann werden die Daten nicht bei der jeweiligen Kundennummer geändert sondern bei dem ersten Datensatz in der Tabelle. ..und das ist nicht erwünscht.


    Gibt es vlt. eine Möglichkeit um diesen Konflikt mit der vorhandenen Kundennummer in Tabelle zu lösen?
     
    Lord-X, 27. Juli 2007
    #3
  4. freaky
    freaky Erfahrener User

    Problem beim "Recordset.Update"

    Hi,

    sorry - Du willst ja ändern udn nciht neu speichern...

    Du musst natürlich Dein Recordset filtern nach der ID. Z.B. mit SQL:

    Dim strSQL as String
    strSQL = "SELECT * FROM Kundenstamm WHERE [Kundennr] = " & Me!lstKD

    Set rs = CurrentDb.OpenRecordset(strSQL)


    Oder schau mal nach rs.FindFirst.....:
    Dim strKrit as String

    strKrit = "[Kundennr] = " & Me!lstKD
    rs.FindFirst strKrit


    Die besagte Zeile musst Du aber imemr weglassen...

    Vor der Zuweisung der Werte solltest du überprüfen, ob es einen DS gibt:

    If rs.EOF And rs.BOF Then Exit Sub
     
    freaky, 27. Juli 2007
    #4
  5. miriki Erfahrener User
    Lord-X:

    Code:
    Private Sub btnKDedit_Click()
      Set rs = CurrentDb.OpenRecordset("Kundenstamm", dbOpenDynaset)
      rs.Edit
      [...]
      rs.Update
      rs.Close
      Set rs = Nothing
    Bingo! Du öffnest die Tabelle und editierst gleich munter den ersten Datensatz, der nicht schnell genug auf die Bäume kam. ;-)

    Freaky schrieb es ja schon und ich empfehle ebenfalls dringendst das "FindFirst" zu verwenden. Finde ich persönlich zumindest eine ganze Ecke übersichtlicher, als SQL-Eingrenzungen. Aber in jedem Fall auf nicht-leeres Ergebnis prüfen!

    Und ich bin mir nicht mal sicher, ob es eine Fehlermeldung produziert, wenn man Autowert-Feldern mit "Update" einen neuen Wert zuweisen will. Ich glaube, das ignoriert Access dann einfach. Aber stilvollerweise macht man das natürlich sowieso nicht... ;-)

    Gruß, Michael
     
    miriki, 30. Juli 2007
    #5
  6. freaky
    freaky Erfahrener User
    Hallo Michael,

    ich empfehle den SQL-String beiets beim laden der Tabelle auszuführen. Das wird schneller sien, als später nochmal mit FindFirst zu suchen. Denn es wird bewreits beim laden des Recordsets "gefiltert".

    Autowert-Felder, die indiziert sind und entsprechende Eigenschaften aufweisen, können nicht beasrbeitet werden und produzieren immer eine Fehlermeldung...
     
    freaky, 30. Juli 2007
    #6
  7. Lord-X User
    Habe das mit dem FindFirst Probiert und sieht dann so aus

    Problem beim "Recordset.Update" [​IMG]
    .
    Problem beim "Recordset.Update" [​IMG]

    komme da nicht weiter.
     
    Lord-X, 30. Juli 2007
    #7
  8. freaky
    freaky Erfahrener User

    Problem beim "Recordset.Update"

    Hi,

    nimm die 1. Lösung - die ist besser...
     
    freaky, 30. Juli 2007
    #8
  9. miriki Erfahrener User
    Lord-X:
    > komme da nicht weiter.

    In dem Beispiel zum FindFirst in der OH finden sich u.a. folgende Zeilen:

    Code:
    strCountry = "Country = '" & strCountry & "'"
    .FindFirst strCountry
    Wenn Dein Feld "Kundennr" nicht numerisch, sondern alphanumerisch, ist, dann muß der gesuchte Wert in ' eingefaßt werden.

    Ist es vielleicht das?

    Ah, ne, halt, ich hab's, glaube ich:

    Code:
    strKrit = "[Kundennr] = " & Me!lstKD
    Mach mal ein "Me!lstKD.Text" (oder war's .Value?) daraus.

    Gruß, Michael
     
    miriki, 30. Juli 2007
    #9
  10. freaky
    freaky Erfahrener User
    Hi,

    nein - die "Datentypenunverträglichkeit" bezieht sich auf die Variable "strKrit" - die musst Du als "String" definieren. Du hast "Variant" genommen.... Aber FindFirst will einen "String" haben...

    Sehe ich jetzt erst....!

    Die Feldbezeichnungen sind ok. Das muss nicht unbedingt ein Steuerleement auf dem Formular sein...daher geht es auch ohne Value.
     
    freaky, 30. Juli 2007
    #10
  11. Lord-X User
    Moin Leute. Sorry, dass ich mich so lange nicht gemeldet hatte.
    Habe anderweitig zu tun gehabt.

    Ich glaube langsam, dass ich doof bin :) aber Access macht einfach nicht das, was ich will.

    Bei "rs.FindFirst strKrit" (rot markiert) zeigt Access mir eine Fehlermeldung obwohl alles richtig ist (lt. Access-Hilfe):
    "Laufzeitfehler 3464: Datentypen in Kriterienausdruck unverträglich."

    Private Sub btnEditSave_Click()
    Dim rs As DAO.Recordset
    Dim strKrit As String

    Set rs = CurrentDb.OpenRecordset("Kundenstamm", dbOpenDynaset)
    strKrit = "[Kundennr]=" & Me!lstKD

    rs.FindFirst strKrit
    If rs.EOF And rs.BOF Then Exit Sub

    rs.Edit
    [ .... ]
    rs.Update
    rs.Close
    Set rs = Nothing

    MsgBox "Die Änderung wurde gespeichert.", vbOKOnly, "Datensatzänderung"

    End Sub


    Kennt da vlt. jemand ein Rat??
     
  12. freaky
    freaky Erfahrener User
    Hi,

    versuch mal den Datentyp zu verändern - das funktioniert mit

    cLng(DeinWert) ==> für Typ Long

    cStr(DeinWert) ==> für den Typ String

    Es kommt halt darauf an, wie Du das Datenfeld in der Tabelle formatiert hast....
     
  13. Lord-X User

    Problem beim "Recordset.Update"

    SUPER !!

    hab's jetzt gemacht.
    strKrit =cStr("[Kundennr]=" & Me!lstKD)

    Jetzt funzt alle wie ich es wollte. Super ge*l.

    Danke allen für die Hilfe.


    P.S.: Die Anmeldung hier im Forum hat sich gelohnt ;)
    Werde euch auf jeden Fall weiterempfehlen. TOP!!!
     
Thema:

Problem beim "Recordset.Update"

Die Seite wird geladen...
  1. Problem beim "Recordset.Update" - Similar Threads - Problem Recordset Update

  2. Outlook Problem

    in Microsoft Outlook Hilfe
    Outlook Problem: Hallo zusammen, ich brauche Hilfe bei folgendem Problem. Ich bekomme pro Woche ca. 44 Mails vom immer gleichen Absender, no-reply@deutschepost.de mit immer dem gleichen PDF-Anhang. Die...
  3. Problem bei Fußnote

    in Microsoft Word Hilfe
    Problem bei Fußnote: Hallo zusammen, habe folgendes Problem. Sobald ich eine Fußnote einfüge, erscheint automatisch am Ende der Seite eine Art Überschrift mit der Zahl 1. Hier der Screenshot. Habe schon alles...
  4. Excel found a problem with one or more formula references in this worksheet

    in Microsoft Excel Hilfe
    Excel found a problem with one or more formula references in this worksheet: Liebes Forum, ich habe ein Problem, das viel durch das Internet geistert, aber nirgendwo gibt es eine erfolgreiche Lösung für: "Excel found a problem with one or more formula references in this...
  5. Zählenwenns Problem

    in Microsoft Excel Hilfe
    Zählenwenns Problem: Hallo. Ich möchte zählen wie oft der Name Person 2 vorkommt aber nur dann wenn darüber ein anderer Name steht. Also in C3 sollte 5 mal stehen aber in C4 nichts bzw. 0 Dann in C8 die 2 und in C9...
  6. Problem mit Seitenzahlen/Seitenbeschriftung

    in Microsoft Word Hilfe
    Problem mit Seitenzahlen/Seitenbeschriftung: Hallo, ich schreibe gerade meine Masterarbeit und habe ein kurioses Problem, bei dem ich nicht weiterkomme. Ich habe eine "beidseitige" Vorlage für die Masterarbeit der Universität verwendet. Da...
  7. Data Transform, Problem with delimiter

    in Microsoft Excel Hilfe
    Data Transform, Problem with delimiter: Hello Community, I encounter one problem with excel. When I export table from csv I have a delimiter semicolon, but it doesn't work. I found solution. If I would go to Power Query Editor - Split...
  8. Problem Datenstruktur Mitglieds-Datenbank

    in Microsoft Access Hilfe
    Problem Datenstruktur Mitglieds-Datenbank: Hallo Leute, Ich habe eine Frage zu einer Vereins-Mitglieder-Datenbank, die ich erstelle. Die Vereinsmitglieder sind in einer Tabelle erfasst, also Nachname, Vorname, usw. Und es gibt einen...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden