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

Mitglied: EUuser

EUuser (Level 1) - Jetzt verbinden

06.06.2014, aktualisiert 11:18 Uhr, 5133 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: https://www.administrator.de/contentid/240195

Vielleicht nutzt dir das in Zukunft mal irgendwann

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
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 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 ...

Datenbanken

Syntaxfehler VBA Access 2010

gelöst Frage von Dr.CornwallisDatenbanken6 Kommentare

Liebe Gemeinde, ich habe (schon wieder) einen Fehler im Code und ich komm einfach nicht drauf warum es nicht ...

VB for Applications

VBA Code Änderung Access 2010

gelöst Frage von Dr.CornwallisVB for Applications6 Kommentare

Liebe Gemeinde, ein Kollege hat mir einmal einen VBA Code zur Ermittlung des 1. und 5. Arbeitstags eines Monats ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein interessanter Beitrag dazu: Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10 Anscheinend ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL14 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1011 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)11 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs11 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...