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

Datensatzwechsel im Ufo auf Hfo anwenden

Frage Microsoft Microsoft Office

Mitglied: Janni

Janni (Level 2) - Jetzt verbinden

07.12.2010, aktualisiert 12:05 Uhr, 6664 Aufrufe, 5 Kommentare

Moin,

komme nicht so recht weiter, folgendes Problem: Ich habe ein Formular mit einem Unterformular (Ufo) in Datenblattansicht. Bei einem Datensatzwechsel im Ufo (der Benutzer klickt in einen anderen Satz) soll dieser neu ausgewählte Datensatz auch im Hfo angezeigt werden. Leider funktionieren die ganzen Ereignisse irgendwie im Ufo nicht (Form_Current, Click, etc.) und der Satz im Hfo wird nicht gewechselt. Dabei ist es egal, ob das Ufo verknüpft oder nicht verknüpft ist
Habe auch schon versucht über ein Textfeld im Hfo die Datensatznummer anzeigen zu lassen. Dies geht auch wunderbar, aber die normalen Ereignisse greifen nicht, da der Inhalt selbst ja nicht geändert wird (=me!Ufo!Steuerelement).

Kennt Jemand ein Ereignis was bei dem Textfeld greifen würde, bzw. eine andere Lösung um den Datensatz im Hfo zu wechseln ?

Das ganze ist noch in einer mdb-DB realisiert (Access 2003).

Danke schon einmal
Janni
Mitglied: jhinrichs
07.12.2010 um 14:24 Uhr
Hallo,

eine Lösung (ich weiß nicht, ob es die eleganteste ist), ist folgende:

Im Unterformular definierst Du folgende Prozedur, wobei "Key" der Primärschlüssel oder zumindest ein eindeutiger Schlüssel ist:
01.
Private Sub Form_Click() 
02.
    Rem Prozedur OpRecord des Hauptformulars mit dem Schlüssel des angeklickten Datensatzes als Argument aufrufen 
03.
    Form_frmHfo.OpRecord(Me.Key)  
04.
End Sub
Damit schaltet das Hauptformular um, wenn Du auf den "Datensatzbezeichner" klickst. Wenn das Hauptformular auch bei jedem Klick in ein Datenfeld umschalten soll, musst Du die Zeile
01.
Form_frmHfo.OpRecord(Me.Key) 
in die "Beim Klicken"-Ereignisprozedur jedes Datenfeldes schreiben.

Im Code des Hauptformulars (frmHfo) wir dann die Prozedur OpRecord definiert:

01.
Public Sub OpRecord(Key As Long) 
02.
 
03.
    Dim rst As DAO.Recordset 
04.
    Dim stcond As String 
05.
     
06.
    Set rst = Me.Recordset 
07.
    Rem Bedingung formulieren 
08.
    stcond = "Key=" & Key    
09.
    Rem Ersten passenden Datensatz suchen, da Schlüssel eindeutig, braucht man keine weiteren zu suchen 
10.
    rst.FindFirst (stcond) 
11.
        
12.
End Sub
Das ist jetzt alles natürlich nur ein Grundgerüst ohne Fehlerbehandlung etc. Wenn man das Ganze in der Entwurfsansicht von Access erstellt, muss man ziemlich aufpassen, beim Schreiben der Ereignisprozeduren auch das richtige Objekt ausgewählt zu haben. Es empfiehlt sich auf jeden Fall im VBA-Editor eine Kontrolle, dass die Form_Click() und FeldXY_Click()-Prozeduren auch dem Unterformular und die OpRecord-Prozedur dem Hauptformular zugeordnet sind bzw. ist.

Grüße
Bitte warten ..
Mitglied: Janni
07.12.2010 um 17:09 Uhr
Vielen Dank, funktioniert super.

Allerdings mit einer kleinen Einschränkung, das Ereignis Click funktioniert in einem Kombinationsfeld nicht. Hast Du eine Idee warum ?
Wenn ich das ganze über ein weiteres Textfeld mit Verweis auf die richtige Spalte des Kombinationsfeldes realisiere, dann aktualisiert er zwar das Hfo, aber er aktualisiert alle Felder dieses Textfeldes. Das sieht nicht wirklich schön aus.
Bitte warten ..
Mitglied: jhinrichs
08.12.2010 um 10:47 Uhr
Hallo,

beim Kombinationsfeld wird das Ereignis "Click" offenbar erst ausgelöst, wenn ein Wert aus der Liste angeklickt wird. Daher braucht man zusätzlich den Aufruf der OpRecord-Prozedur beim Fokuserhalt oder Hingehen, also Ereignis "GotFocus" oder "Enter". Bei "Click" muss der Aufruf aber bleiben, da sonst das Hfo nach der Auswahl aus der Liste nicht sofort, sondern erst bei der nächsten Auswahl aktualisiert wird. Auch im Tectfeld kann man statt Click natürlich Enter oder GotFocus wählen, was sogar geschickter ist, da dann das Hfo auch aktualisiert wird, wenn man das Textfeld nicht mit der Maus, sondern per Tab-Taste auswählt.
Der Gesamtcode im sieht dann so aus:
01.
Private Sub Form_Click() 
02.
    Form_frmHfo.OpRecord (Me.Key) 
03.
End Sub 
04.
 
05.
Private Sub Kombinationsfeld_Click() 
06.
    Form_frmHfo.OpRecord (Me.Key) 
07.
End Sub 
08.
 
09.
Private Sub Kombinationsfeld_Enter() 
10.
    Form_frmHfo.OpRecord (Me.Key) 
11.
End Sub 
12.
 
13.
Private Sub Textfeld_Enter() 
14.
    Form_frmHfo.OpRecord (Me.Key) 
15.
End Sub
Das Neu-Hinzufügen von Datensätzen über das Ufo muss auch noch extra abgefangen werden.
Grüße
Bitte warten ..
Mitglied: Janni
08.12.2010 um 12:50 Uhr
Moin,

bei Enter oder GotFocus bekomme ich den Fehler 32502: Der Wert, den Sie für das Feld \"|\" eingegeben haben, ist ungültig.
Dabei ist es egal, ob ich das Enter auf das Kombifeld oder ein Textfeld definiere.
Dieses Feld existiert aber gar nicht und mit der Nummer kann sogar Google nicht so recht etwas in Verbindung mit Access anfangen.
Bitte warten ..
Mitglied: jhinrichs
09.12.2010 um 10:09 Uhr
Moin,
komisch, meine Antwort von gestern ist irgendwie "wech"...
Also nochmal:
Wann genau kommt die Fehlermeldung? Was ist markiert, wenn Du dann auf "Debuggen" klickst? Was für Code entsteht denn, wenn Du im Eigenschaftenfenster des Steuerelements beim Ereignis "Hingehen" dann "Code" auswählst?
Vielleicht postest Du hier einmal Deinen Code, bei mir funktioniert das nämlich (getestet unter Access 2010, 2007 und 2002).
Grüße
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Netzwerk
gelöst GPO auf alle PCs mit bestimmtes Computernamen Schema anwenden lassen (5)

Frage von Michael-ITler zum Thema Windows Netzwerk ...

Visual Studio
gelöst Ein VBScript in Visual Studio 2013 als Windows Forms Anwendung anwenden (2)

Frage von Knuefi zum Thema Visual Studio ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...