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
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, 4850 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
VB for Applications
gelöst VBA Code Änderung Access 2010 (6)

Frage von Dr.Cornwallis zum Thema VB for Applications ...

Datenbanken
Access 2010 - Filter für Datum funkioniert nicht VBA (4)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Syntaxfehler VBA Access 2010 (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Access 2010 UnterFormular filtern bzw. aktualisieren (2)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (51)

Frage von sabines zum Thema Internet ...

Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (24)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
gelöst Windows 2016 Hyper-V und VHDS (19)

Frage von emeriks zum Thema Windows Server ...