Top-Themen

Aktuelle Themen (A bis Z)

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
GELÖST

Access 2010 vba Recordset

Frage Entwicklung VB for Applications

Mitglied: EUuser

EUuser (Level 1) - Jetzt verbinden

06.06.2014, aktualisiert 11:18 Uhr, 5036 Aufrufe, 3 Kommentare, 1 Danke

Hallo zusammen,

ich arbeite seit langem mal wieder mit Access und vba:

Ich habe eine Datenbank, zwei Tabellen (identisch aufgebaut) und ein Formular. Über eine Textbox ("SearchBox") und ein AfterUpdate-Ereignis suche ich (je nach Suchbegriff: "If SearchBox.Text Like "1*" Then") in einer der beiden Tabellen.
Wird etwas gefunden, wird ein optisches Feedback gegeben, wenn nicht, dann gibt es eine andere Meldung. Das funktioniert auch schon alles.
Jetzt möchte ich aber den gefundenen Datensatz anzeigen lassen und ein Attribut des Datensatzes ändern (Ja/Nein-Feld). Hier komme ich aber gerade nicht weiter.
Wie gesagt, die beiden Tabellen sind komplett identisch aufgebaut, haben nur unterschiedliche Namen.

Die Formularfelder für die Anzeige heißen: TFID, TFVorname, TFNachname, TFAktien, KKAnwesend (Kontrollkästchen)

Hier mal mein AfterUpdate-Ereignis:

01.
 
02.
Private Sub SearchBox_AfterUpdate() 
03.
    Dim dbs As DAO.Database 
04.
    Dim rst As DAO.Recordset 
05.
    Dim Frm As String 
06.
    Frm = "Formular" 
07.
    Dim Tbl1 As String 
08.
    Tbl1 = "Tabelle1" 
09.
    Dim Tbl2 As String 
10.
    Tbl2 = "Tabelle2" 
11.
         
12.
    Set dbs = CurrentDb 
13.
         
14.
    ' MsgBox FrmName 
15.
         
16.
    If SearchBox.Text Like "1*" Then 
17.
    Set rst = dbs.OpenRecordset(Tbl1, dbOpenDynaset) 
18.
    rst.FindFirst "[ID] = '" & Me!SearchBox & "'" 
19.
        If rst.NoMatch Then 
20.
                Signal1Box.BackColor = vbRed 
21.
                Signal2Box.Value = "Keine Daten in " & Tbl1 & " gefunden!" 
22.
                TFID.Value = "" 
23.
                TFVorname.Value = "" 
24.
                TFNachname = "" 
25.
                TFAktien = "" 
26.
                KKAnwesend.Value = "" 
27.
            Else 
28.
                Form_Formular.RecordSource = Tbl1 
29.
                Set rst = Me.RecordsetClone 
30.
                rst.FindFirst "[ID] = '" & Me!SearchBox & "'" 
31.
                Me.Bookmark = rst.Bookmark 
32.
                TFID.Value = "???" 
33.
                TFVorname.Value = "???" 
34.
                TFNachname = "???" 
35.
                TFAktien = "???" 
36.
                KKAnwesend.Value = ??? 
37.
                Signal1Box.BackColor = vbWhite 
38.
                Signal2Box.Value = "O. K. !" 
39.
                Signal1Box.BackColor = vbGreen 
40.
        End If 
41.
 
42.
' ############################################# 
43.
' Ab hier wird auf die zweite Tabelle verwiesen... wird dann analog wie bei der ersten Tabelle aufgebaut sein 
44.
' ############################################# 
45.
       
46.
         
47.
        Else 
48.
        Set rst = dbs.OpenRecordset(Tbl2, dbOpenDynaset) 
49.
        rst.FindFirst "[ID] = '" & Me!SearchBox & "'" 
50.
        If rst.NoMatch Then 
51.
            MsgBox "Keine Daten in " & Tbl2 & " gefunden!" 
52.
            Else 
53.
            MsgBox "Daten in " & Tbl2 & " gefunden!" 
54.
        End If 
55.
    End If 
56.
     
57.
Cleanup: 
58.
    rst.Close 
59.
    Set rst = Nothing 
60.
    Set dbs = Nothing 
61.
     
62.
End Sub 
63.
 
Ich würde mich sehr über Hilfe, Ideen oder Denkanstöße freuen!

Vielen Dank!

VG
Felix
Mitglied: colinardo
LÖSUNG 06.06.2014, aktualisiert 07.06.2014
Hallo Felix,
also ein Update in einer Spalte des jeweiligen gefundenen Datensatzes kannst du so machen:
01.
'Edit Mode aktivieren (zum Bearbeiten von Feldern muss dieser aktiviert werden) 
02.
rst.Edit 
03.
 
04.
' Wert des Kontrollkästchens setzen 
05.
rst!KKAnwesend = 1 
06.
 
07.
' anderen Wert ändern 
08.
rst!TFNachname = "Meier" 
09.
 
10.
'Datensatz speichern (hiermit wird der Datensatz in der Tabelle mit den neuen Daten aktualisiert) 
11.
rst.Update
Die obige Schreibweise für das Update eines Feldes ist eine mögliche Variante, man kann es alternativ auch so schreiben:
rst.Fields("TFNachname").Value = "Meier"
Jetzt möchte ich aber den gefundenen Datensatz anzeigen lassen
hier gibt es einige Möglichkeiten, das kommt halt darauf an wie dein Formular aufgebaut ist, wo du es anzeigen lassen willst und in welcher Art (gefiltert / extra Dialog / nur Datensatz markieren/ etc.)
Wenn der Datensatz in der Datenquelle des aktuellen Forumlars gesucht werden soll kann man es so machen:
DoCmd.SearchForRecord , , acFirst, "ID = " & rs!ID
Grüße Uwe
Bitte warten ..
Mitglied: EUuser
06.06.2014 um 11:18 Uhr
Hallo Uwe,

vielen Dank für die Hilfe! Das ist genau das, was ich gesucht habe! Danke!
Die Anzeige des gefundenen Datensatzes mache ich dann über die Felder im Formular:
01.
            rst.Edit 
02.
            rst.Fields("Anwesend").Value = 1 
03.
            rst.Update 
04.
            TFID.Value = rst!ID 
05.
            TFVorname.Value = rst!Vorname 
06.
            TFNachname = rst!Nachname 
07.
            TFAktien = rst!Aktien 
08.
            KKAnwesend.Value = rst!Anwesend 
09.
 
Danke und Gruß!
Felix
Bitte warten ..
Mitglied: colinardo
06.06.2014, aktualisiert um 11:29 Uhr
Keine Ursache.
Zur Info, es gibt dafür auch noch eine andere Methode mit DLookup() um einen einzelnen Datensatz bzw. Feld zu suchen. Ein Beispiel dazu findest du gerade beantwortet hier: http://www.administrator.de/contentid/240195

Vielleicht nutzt dir das in Zukunft mal irgendwann

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Datenbanken
Access 2010 VBA - mehrspaltiges Listenfeld über Recordset füllen
gelöst Frage von AndyAhDatenbanken2 Kommentare

Hi NG, ich bin's schon wieder ;). Wie kann ich ein Listenfeld mit Recordsets mehrspaltig füllen? Folgenden Code habe ...

VB for Applications
VBA Access: Synchronisation zwischen Recordset und Access Tabelle
Frage von qwertz1VB for Applications2 Kommentare

Hallo, Ich habe in Access ein VBA-Skript programmiert. Das Skript holt sich Daten von einer MySQL Server. Das geht ...

Datenbanken
Access 2010 - Listenfeld an ADO-Recordset knüpfen
gelöst Frage von AndyAhDatenbanken9 Kommentare

Hi NG, wie kann ich ein Listenfeld an ein ADO-Recordset knüpfen. Die zugrundeliegende Datenquelle ist keine mit Access verknüpfte ...

Datenbanken
ACCESS 2010 Datum über vba
gelöst Frage von CrashOverDatenbanken4 Kommentare

Hallo an Alle, ich habe da eine Frage, ich habe eine Access Datenbank einwickelt, und bin an einem Phänomen ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 4 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 9 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 9 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 21 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Windows Server
Remotesteuerung der Sitzung (Kennung XX) fehlgeschlagen
gelöst Frage von Stefan91Windows Server14 Kommentare

Hallo Zusammen, seit kurzem bekomme ich oben genannte Fehlermeldung, wenn ich versuche eine Remotesitzung über den Taskmanager fernzusteuern (Rechtsklick ...