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, 4702 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Datenbanken
gelöst Syntaxfehler VBA Access 2010 (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Access 2010 Abfrage erster Werktag (10)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Access 2010 komplizierte Abfrage (3)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Hilfe bei "Distinct" Befehl in Access 2010 (3)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...