Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Problem mit Recordset.Update

Frage Microsoft Microsoft Office

Mitglied: Lord-X

Lord-X (Level 1) - Jetzt verbinden

27.07.2007, aktualisiert 30.07.2007, 5823 Aufrufe, 8 Kommentare

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:

http://img514.imageshack.us/img514/2158/3022em0.png

.
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("ID") = Me!txtID
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
Mitglied: verkehrsberuhigt
27.07.2007 um 14:13 Uhr
Ich sehe offengestanden gar nicht, wie du das Recordset auf den von dir gewünschten Datensatz eingrenzt.
Falls ich das Script richtig lese, wird der erste (?) oder ein beliebiger (?) Datensatz geändert...
Und beim Speichern kommt es natürlich zu einem Indexkonflikt weil die Kundennummer bereits vorhanden ist.

Wenn du dir unsicher bist: warum lässt du die User nicht direkt im Formular die Daten ändern? Wofür soll ddieser Umweg über eine Schaltfläche gut sein?
Bitte warten ..
Mitglied: Lord-X
27.07.2007 um 14:44 Uhr
Wenn du dir unsicher bist: warum lässt
du die User nicht direkt im Formular die
Daten ändern?


erstmal danke für die Antwort.

Wie meinst du das???

Ich bin ein Anfänger in diesen Sachen. Ob du das Noob-verständlich erklären könntest.
Bitte warten ..
Mitglied: Lord-X
27.07.2007 um 14:46 Uhr
Ich sehe offengestanden gar nicht, wie du das
Recordset auf den von dir gewünschten
Datensatz eingrenzt.
Falls ich das Script richtig lese, wird der
erste (?) oder ein beliebiger (?) Datensatz
geändert...
Und beim Speichern kommt es natürlich
zu einem Indexkonflikt weil die Kundennummer
bereits vorhanden ist.

Wie kann ich das mit dem Eingränzen machen?
Und wie könnte ich den Konflikt mit der bereits vorhandenen KD.Nr. am Besten lösen?
Bitte warten ..
Mitglied: verkehrsberuhigt
27.07.2007 um 14:49 Uhr
a) Versuche mir zu erklären was Dein Script bewirken soll.

b) Du kannst Tabellen mit Hilfe von Formularen direkt bearbeiten. Bei Access wird jede Änderung, die du in einem Formular vornimmst, dass direkt mit einer Tabelle verknüpft ist, sofort bei der Eingabe (präziser beim Verlassen des Feldes oder des Datensatzes) gespeichert. Hast Du schon einmal den Formularassistenten ausprobiert?
Bitte warten ..
Mitglied: Lord-X
27.07.2007 um 17:31 Uhr
Zu a)

Mein Script soll bewirken, dass die Eingaben, die in die Felder (z.B. txtAnsprechpartner, txtTelefonnummer und txtGeburtstag) eingegeben worden sind, nach dem ButtonClick unter der dazugehörigen Kundennummer (die unter "lstKD" steht) gespeichert werden.

Also:

Es sind nur die Textboxen txtAnsprechpartner, txtTelefonnummer, txtGeburtstag für die Bearbeitung freigegeben. Andere Felder kann man in diesem Formular nicht verändern.



Zu b)

Wie kann ich es dann so einrichten, dass der User die Kundennummer eingeben kann und dazu gehörigen Daten in den entsprechenden Felden angezeigen lassen kann (z.B. Firmenname in "txtFirma", Telefonnummer in "txtTelefonnummer" usw.) ohne die Leiste am unteren Rand des Formular (die mit DS-Nummer) zu verwenden (diese wollte ich dann sowieso ausblenden).
Bitte warten ..
Mitglied: jato11
27.07.2007 um 20:02 Uhr
Wie kann ich es dann so einrichten, dass der
User die Kundennummer eingeben kann und dazu
gehörigen Daten in den entsprechenden
Felden angezeigen lassen kann (z.B.
Firmenname in "txtFirma",
Telefonnummer in "txtTelefonnummer"
usw.) ohne die Leiste am unteren Rand des
Formular (die mit DS-Nummer) zu verwenden
(diese wollte ich dann sowieso ausblenden).
Hallo Lord-X,
ich nutze dafür ein Suchfeld in meinem Formular.
Nach verlassen des Feldes wird ein Makro ausgeführt.
Meistens in der Art:
Gehe zu Steuerelement Kundennummer, Suchen Datensatz = Suchfeld

Viele Grüße
Torsten
Bitte warten ..
Mitglied: Lord-X
30.07.2007 um 10:58 Uhr
@jato11

hast du da vlt. einen BeispielCode ??
Bitte warten ..
Mitglied: jato11
30.07.2007 um 13:57 Uhr
Einen Code kann ich Dir leider nicht geben, da ich kein Programmierer bin.
Es gibt folgende Möglichkeit:

Im Formular erstelle ein Textfeld, das bekommt den Namen "Suchen".

In den Eigenschaften des Feldes wird bei "Nach Aktualisierung" das Makro aufgerufen.
Trage hier den Namen des Makros ein z.B. "NameSuchen"

Erstelle ein Makro.
Bei Aktion wähle "Gehe zu Steuerelement" aus.
Trage unten bei "Steuerelemtname" "Name" ein (ohne Anführungszeichen)

Nächste Aktion "Suchen Datensatz"
Trage unten bei "Suchen nach" "[Suchen]" ein (ohne Anführungszeichen mit Klammer)
Wähle unten bei "Vergleichen" "Teil des Feldinhaltes" aus
Wähle unten bei "Groß u Kleinschreibung" "Nein" aus
Wähle unten bei "Suchen" "Alles" aus
Wähle unten bei "Wie formatiert" "Nein" aus
Wähle unten bei "Nur aktuelles Feld" "Ja" aus
Wähle unten bei "Am Anang beginnen" "Ja" aus

Nächste Aktion "Tastaturbefehle"
Trage unten bei "Suchen nach" "{F9}" ein (ohne Anführungszeichen mit Klammer)
Trage unten bei "Warten" "Nein" ein (ohne Anführungszeichen)

Makro speichern als "NameSuchen" (ohne Anführungszeichen)

Wenn Du jetzt einen Namen oder den Teil eines Namens im Feld Suchen eingibst sollte
der entsprechende Kunde aufgerufen werden.

Achtung! Ich verwende Access 2000 bei Access 2003 könten die Bezeichnungen etwas
anders aussehen.

Viele Grüße
Torsten
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Windows Server
gelöst WSUS Update Download-Problem (7)

Frage von WinWord zum Thema Windows Server ...

Firewall
gelöst Pfsense squidguard - Problem mit Windows Update (5)

Frage von Fenris14 zum Thema Firewall ...

Windows Server
gelöst Clients Win Update Problem no Download (18)

Frage von winlin zum Thema Windows Server ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...