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, 5951 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 ..
Ähnliche Inhalte
Windows Server
SimpleHelp - Problem (4)

Frage von ArnoNymous zum Thema Windows Server ...

Microsoft
Problem mit meinem PC (24)

Frage von AaronH96 zum Thema Microsoft ...

Windows Update
gelöst WPP Problem (7)

Frage von Judgelg zum Thema Windows Update ...

DNS
gelöst Wieder ein Problem mit der ASA (4)

Frage von Yannosch zum Thema DNS ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 im Unternehmen? (26)

Frage von zorlayan zum Thema Windows 10 ...

LAN, WAN, Wireless
Ping u. DNS geht am Rechner nicht mehr (21)

Frage von Kuemmel zum Thema LAN, WAN, Wireless ...

Festplatten, SSD, Raid
Raid 1 2 SSD mit Windows Server 2016 (17)

Frage von jaywee zum Thema Festplatten, SSD, Raid ...