Access

Liebe/-r Experte/-in,
ich bin Anfänger und habe nur Access 2003
Betr.: Unterformulare Synchronisieren

Ich habe in einem Hauptformular (frmLabor_HF_Frei)

Zwei Unterformulare eingebunden.
frmLabor_UF_Detail
frmLabor_UF_List
Verknüpfen von Parameter;Freigabestufe
Verknüpfen nach Parameter;Freigabestufe

IM HF befindet sich unter den UF List ein ParameterFilter (list Box)
Alle Informationen beziehen sich auf die Tabelle Labor_Messwert
Ebenfalls im HF befindet sich die Optionsgruppe FilterOptionen
Für jede Option habe ich
Private Sub Option56_GotFocus() ‚ Toxikologie
Private Sub Option58_GotFocus() ‚ Allergologie
Private Sub Option58_GotFocus() ‚ offen
Private Sub Option58_GotFocus() ‚ bestätigt

Private Sub FilterOptionen_AfterUpdate()
’ Filter für die gewünschte Option anwenden oder löschen
If FilterOptionen = 1 Then
Me.Filter = „CAP = 0 AND Parameter = '“ & ParameterFilter.Value & „’“ 'Toxikologie = 0
Me.FilterOn = True ‚Filter anwenden
ElseIf FilterOptionen = 2 Then Me.Filter = „CAP = 1 AND Parameter = '“ & ParameterFilter.Value & "‘" 'Allergologie = 1
Me.FilterOn = True ‚Filter anwenden
ElseIf FilterOptionen = 3 Then Me.Filter = „Freigabestufe = 0 AND Parameter = '“ & ParameterFilter.Value & "‘" 'offen = 0
Me.FilterOn = True ‚Filter anwenden
ElseIf FilterOptionen = 4 Then Me.Filter = „Freigabestufe = 1 AND Parameter = '“ & ParameterFilter.Value & "‘" 'bestätigt = 1
Me.FilterOn = True 'Filter anwenden
Else
Me.FilterOn = False 'Filter entfernen
End If
End Sub
Bis hier her funktioniert alles (ausgewählter Parameter und FilterOption)
Alle DS werden im frmLabor_UF_List angezeigt.

Nun kommt mein Problem
Ich will die UF synchronisieren d.h. Der markierte DS im frmLabor_UF_List soll im frmLabor_UF_Detail angezeigt werden.

Dazu habe ich im HF ein Feld Verbindung erstellt.
Bei Fokuserhalt folgende [Ereignisprozedur]
Private Sub Verbindung_GotFocus()
On Error Resume Next
With Me.frmLabor_UF_Detail
.Form.RecordSource = „SELECT * from Labor_Messwert
WHERE itemID=“ & Me!Verbindung
.Requery
End With
Err.Clear: On Error GoTo 0
End Sub

IM frmLabor_UF_List
Bei Anzeigen folgende [Ereignisprozedur]
Private Sub Form_Current()
With Forms(„frmLabor_HF_Frei“)
.Verbindung = Me!itemID
.Requery
.Verbindung.SetFocus
End With
End Sub

Aber schon bei der Parameter Auswahl läuft der Rechner wie verrückt (Berechnung läuft–)
Nur mit ESC kann ich das Programm abrechen.

Nach dem Debuggen
erhalte Meldung Laufzeitfehler
3420:
Das Objekt ist ungültig, oder es ist nicht mehr festgelegt.
2473:
Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck Bei Fokuserhalt eingegeben.
DIESER Ausdruck verursacht: Nicht genügend Stapelspeicher.
Im frmLabor_UF_List ist Requery gelb markiert.

Ich vermute der Fehler liegt am SetFocus da ja noch Option GotFocus aktiv ist.
Wie kann ich nach der Parameter-, Optionsauswahl und anzeigen der DS im frmLabor_UF_List den GotFocus löschen und auf SetFocus setzen.

Eine Lösung in Access 2007 geteiltes Formular kommt nicht in Frage da das Programm fehlt.

Könnt Ihr mir helfen, gibt es eine Lösung?

Ich bin auch bereit eine Beispieldatenbank zur Verfügung zustellen.
Vielen Dank im Voraus
Mit freundlichen Grüßen

Manfred Roloff

Hallo Manfred, ich würde die Optionsgruppe anders steuern, falls das überhaupt das Problem ist. Ich würde bei Aktion After_Update einfach ein Select Case auf die einzelnen OPtinswerte machen, dann erstpasrt Du Dir auch die gann If’s im nachfolgenden Sub.

Beim verändern der Recordsource auf das Sub-Form frmLabor_UF_List würde ich dem anderen Sub-Form einfach die ID übergeben ohne dort ein weiteres Feld einzubinden. Form oder List Feld After update und dann Form!frmLabor_HF_Frei!frmLabor_UF_Detail.Form.Recordsource = „select * … ID = Forms!Form!frmLabor_HF_Frei!frmLabor_UF_List!XXid …;“
Wenn das nicht hilft, dann schreib einfach nochmal, bin heute ein wenig müde und schaue dann morgen nochmal drüber, falls keiner weiter was zu Deinem Problem geschrieben hat.

Ansonsten liest sich das für mich etwas komisch:

Private Sub Option56_GotFocus() ‚ Toxikologie
Private Sub Option58_GotFocus() ‚ Allergologie
Private Sub Option58_GotFocus() ‚ offen
Private Sub Option58_GotFocus() ‚ bestätigt

SInd das alles verschiedene Felder in einer Optionsgruppe? Haben die alle den gleich Optionswert?

Hallo Manfred,
also, für einen Anfänger macht das schon einen ziemlich „professionellen“ Eindruck!
Ich kann dir nichts versprechen, aber ich würde mir die Beispieldatenbank gerne mal ansehen. OK?

Viele Grüße,

petey

P.S.: Ich arbeite seit fast 11 Jahren mit Access-Datenbanken und habe auch Office 2003.

Hallo petey
Beispieldatenbank ansehen OK
kommt als FreiPatdb2_2.zip aber wohin?
manfred

Hallo,
das ist ein Kopier Fehler richtig ist
Private Sub Option56_GotFocus() ‚ Toxikologie
Private Sub Option58_GotFocus() ‚ Allergologie
Private Sub Option60_GotFocus() ‚ offen
Private Sub Option62_GotFocus() ‚ bestätigt

würde dir eine Beispieldatenbank als FreiPatdb2_2.zip zusenden.
wenn OK wohin?
manfred

Wenn Du auf meine Nick klickst und dann auf das Mail-Symbol, dann solltest Du mir ne Mail schreiben können. Poste meine Adresse hier nur ungern öffentlich.

Hallo petey
Beispieldatenbank ansehen OK
kommt als FreiPatdb2_2.zip aber wohin?
manfred

dahin: [email protected]

Hallo Manfred,

leider kann ich aus den Beschreibungen nicht erkennen, wo der Fehler liegen könnte.

Ich habe zwar den Eindruck, dass das Unter_Unter_Formular auf das falsche Hauptformular referenziert, aber das ist nur eine Vermutung.

Theoretisch (wenn ich den Sinn dieses Formulars richtig erkenne) müsste ja das Formular „frmLabor_UF_List“ ein Unterformular von „frmLabor_HF_Frei“ sein und „frmLabor_UF_Detail“ wiederum ein Unterformular von „frmLabor_UF_List“. Das scheint hier aber nicht so zu sein. Du hast beide Unterformulare gleichrangig an das Hauptformular gehängt.

Aber wie gesagt - ist nur eine Vermutung.

Schick mir doch bitte mal eine Beispiel-DB zu, dann sehe ich mir das noch mal an. Leider kann das aber etwas dauern, da ich zur Zeit in vielen Projekten gleichzeitig bin.

Gruß Jürgen Becker

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hollo Hans-Jürgen,
Vielen Dank für deine Mühe
aber das Problem hat sich schon erledigt.
Gruß
Manfred

Das ist schön. Mich würde die Ursache interessieren ??

Kannst Du da kurz beschreiben, woran es lag ?

Gruß Jürgen Becker

Hollo Hans-Jürgen,
Vielen Dank für deine Mühe
aber das Problem hat sich schon erledigt.
Gruß
Manfred

Hollo Hans-Jürgen,
hier die Änderungen
[frmLabor_HF_Frei]
Private Sub FilterOptionen_AfterUpdate()
’ Prüfen ob das Feld ParameterFilter auch gesetzt ist, da sonst Fehlermeldungen entstehen
If IsNull(Me.ParameterFilter) Then
MsgBox „Bitte definieren sie noch den Paramter (Gelb hinterlegtes Feld!“
Else
‚Prüfen welcher Wert in der OPtionsgruppe FilterOPtionen aktiv ist und die Recordsource für das Formular frmLabor_HF_Frei dementsprechend setzen
Select Case Me.FilterOptionen
Case Is = 1
Me.RecordSource = "SELECT tblLabor_Messwert.ItemID, tblLabor_Messwert.Patientenschluessel, tblLabor_Messwert.[V-Nummer], tblLabor_Messwert.[V-Nummer_N], tblLabor_Messwert.[L-Nummer], tblLabor_Messwert.L_Nummer_N, tblLabor_Messwert.JJ, tblLabor_Messwert.[A-Nummer], tblLabor_Messwert.[A-Nummer_N], tblLabor_Messwert.nr, tblLabor_Messwert.Kuerzel, tblLabor_Messwert.Parameter, tblLabor_Messwert.Dimension, tblLabor_Messwert.Ref, tblLabor_Messwert.[BGW / BAT etc], tblLabor_Messwert.NWG, tblLabor_Messwert.GOAE_Ziffer, tblLabor_Messwert.GOAE_Betrag, tblLabor_Messwert.CAP, tblLabor_Messwert.Ergebnis, tblLabor_Messwert.Kommentar, tblLabor_Messwert.Notizen, tblLabor_Messwert.Auftragsdatum, tblLabor_Messwert.AuftragsZeit, tblLabor_Messwert.Ergebnisdatum, tblLabor_Messwert.ErgebnisZeit, tblLabor_Messwert.Rechnungsdatum, tblLabor_Messwert.Freigabestufe, tblLabor_Messwert.DruKz, tblLabor_Messwert.RDruDat, tblLabor_Messwert.PDruDat, tblLabor_Messwert.Ausw FROM tblLabor_Messwert " & _
"WHERE (((tblLabor_Messwert.JJ)=‚09‘) AND ((tblLabor_Messwert.Parameter)=‘" & Me.ParameterFilter.Column(0) & „’) AND ((tblLabor_Messwert.CAP)=0));“
Me.Requery
Case Is = 2
Me.RecordSource = "SELECT tblLabor_Messwert.ItemID, tblLabor_Messwert.Patientenschluessel, tblLabor_Messwert.[V-Nummer], tblLabor_Messwert.[V-Nummer_N], tblLabor_Messwert.[L-Nummer], tblLabor_Messwert.L_Nummer_N, tblLabor_Messwert.JJ, tblLabor_Messwert.[A-Nummer], tblLabor_Messwert.[A-Nummer_N], tblLabor_Messwert.nr, tblLabor_Messwert.Kuerzel, tblLabor_Messwert.Parameter, tblLabor_Messwert.Dimension, tblLabor_Messwert.Ref, tblLabor_Messwert.[BGW / BAT etc], tblLabor_Messwert.NWG, tblLabor_Messwert.GOAE_Ziffer, tblLabor_Messwert.GOAE_Betrag, tblLabor_Messwert.CAP, tblLabor_Messwert.Ergebnis, tblLabor_Messwert.Kommentar, tblLabor_Messwert.Notizen, tblLabor_Messwert.Auftragsdatum, tblLabor_Messwert.AuftragsZeit, tblLabor_Messwert.Ergebnisdatum, tblLabor_Messwert.ErgebnisZeit, tblLabor_Messwert.Rechnungsdatum, tblLabor_Messwert.Freigabestufe, tblLabor_Messwert.DruKz, tblLabor_Messwert.RDruDat, tblLabor_Messwert.PDruDat, tblLabor_Messwert.Ausw FROM tblLabor_Messwert " & _
„WHERE (((tblLabor_Messwert.JJ)=‚09‘) AND ((tblLabor_Messwert.Parameter)=’“ & Me.ParameterFilter.Column(0) & „’) AND ((tblLabor_Messwert.CAP)=1));“
Me.Requery
Case Is = 3
Me.RecordSource = "SELECT tblLabor_Messwert.ItemID, tblLabor_Messwert.Patientenschluessel, tblLabor_Messwert.[V-Nummer], tblLabor_Messwert.[V-Nummer_N], tblLabor_Messwert.[L-Nummer], tblLabor_Messwert.L_Nummer_N, tblLabor_Messwert.JJ, tblLabor_Messwert.[A-Nummer], tblLabor_Messwert.[A-Nummer_N], tblLabor_Messwert.nr, tblLabor_Messwert.Kuerzel, tblLabor_Messwert.Parameter, tblLabor_Messwert.Dimension, tblLabor_Messwert.Ref, tblLabor_Messwert.[BGW / BAT etc], tblLabor_Messwert.NWG, tblLabor_Messwert.GOAE_Ziffer, tblLabor_Messwert.GOAE_Betrag, tblLabor_Messwert.CAP, tblLabor_Messwert.Ergebnis, tblLabor_Messwert.Kommentar, tblLabor_Messwert.Notizen, tblLabor_Messwert.Auftragsdatum, tblLabor_Messwert.AuftragsZeit, tblLabor_Messwert.Ergebnisdatum, tblLabor_Messwert.ErgebnisZeit, tblLabor_Messwert.Rechnungsdatum, tblLabor_Messwert.Freigabestufe, tblLabor_Messwert.DruKz, tblLabor_Messwert.RDruDat, tblLabor_Messwert.PDruDat, tblLabor_Messwert.Ausw FROM tblLabor_Messwert " & _
„WHERE (((tblLabor_Messwert.JJ)=‚09‘) AND ((tblLabor_Messwert.Parameter)=’“ & Me.ParameterFilter.Column(0) & „’) AND ((tblLabor_Messwert.Freigabestufe)=0));“
Me.Requery
Case Is = 4
Me.RecordSource = "SELECT tblLabor_Messwert.ItemID, tblLabor_Messwert.Patientenschluessel, tblLabor_Messwert.[V-Nummer], tblLabor_Messwert.[V-Nummer_N], tblLabor_Messwert.[L-Nummer], tblLabor_Messwert.L_Nummer_N, tblLabor_Messwert.JJ, tblLabor_Messwert.[A-Nummer], tblLabor_Messwert.[A-Nummer_N], tblLabor_Messwert.nr, tblLabor_Messwert.Kuerzel, tblLabor_Messwert.Parameter, tblLabor_Messwert.Dimension, tblLabor_Messwert.Ref, tblLabor_Messwert.[BGW / BAT etc], tblLabor_Messwert.NWG, tblLabor_Messwert.GOAE_Ziffer, tblLabor_Messwert.GOAE_Betrag, tblLabor_Messwert.CAP, tblLabor_Messwert.Ergebnis, tblLabor_Messwert.Kommentar, tblLabor_Messwert.Notizen, tblLabor_Messwert.Auftragsdatum, tblLabor_Messwert.AuftragsZeit, tblLabor_Messwert.Ergebnisdatum, tblLabor_Messwert.ErgebnisZeit, tblLabor_Messwert.Rechnungsdatum, tblLabor_Messwert.Freigabestufe, tblLabor_Messwert.DruKz, tblLabor_Messwert.RDruDat, tblLabor_Messwert.PDruDat, tblLabor_Messwert.Ausw FROM tblLabor_Messwert " & _
„WHERE (((tblLabor_Messwert.JJ)=‚09‘) AND ((tblLabor_Messwert.Parameter)=’“ & Me.ParameterFilter.Column(0) & „’) AND ((tblLabor_Messwert.Freigabestufe)=1));“
Me.Requery
End Select
End If
If Not IsNull(Me.ItemID) Then
Forms!frmlabor_HF_frei!frmLabor_UFList.Form.Filter = "ItemID = " & Forms!frmlabor_HF_frei!frmLabor_UF_Detail!ItemID
End If
End Sub
[frmLabor_UFList]
Private Sub Form_Current()

’ Bei der aktualisierung der Daten des Formulars frmLabor_UF_Detail sollen die Daten an das Form frmLabor_UF_Detail übergeben und angezeigt werden!
On Error Resume Next
Forms!frmlabor_HF_frei!frmLabor_UF_Detail.Form.RecordSource = "SELECT tblLabor_Messwert.ItemID, tblLabor_Messwert.Patientenschluessel, tblLabor_Messwert.[V-Nummer], tblLabor_Messwert.[V-Nummer_N], tblLabor_Messwert.[L-Nummer], tblLabor_Messwert.L_Nummer_N, tblLabor_Messwert.JJ, tblLabor_Messwert.[A-Nummer], tblLabor_Messwert.[A-Nummer_N], tblLabor_Messwert.nr, tblLabor_Messwert.Kuerzel, tblLabor_Messwert.Parameter, tblLabor_Messwert.Dimension, tblLabor_Messwert.Ref, tblLabor_Messwert.[BGW / BAT etc], tblLabor_Messwert.NWG, tblLabor_Messwert.GOAE_Ziffer, tblLabor_Messwert.GOAE_Betrag, tblLabor_Messwert.CAP, tblLabor_Messwert.Ergebnis, tblLabor_Messwert.Kommentar, tblLabor_Messwert.Notizen, tblLabor_Messwert.Auftragsdatum, tblLabor_Messwert.AuftragsZeit, tblLabor_Messwert.Ergebnisdatum, tblLabor_Messwert.ErgebnisZeit, tblLabor_Messwert.Rechnungsdatum, tblLabor_Messwert.Freigabestufe, tblLabor_Messwert.DruKz, tblLabor_Messwert.RDruDat, tblLabor_Messwert.PDruDat, tblLabor_Messwert.Ausw " & _
„FROM tblLabor_Messwert WHERE (((tblLabor_Messwert.ItemID)=“ & Me.ItemID & „) AND ((tblLabor_Messwert.JJ)=‚09‘));“
Forms!frmlabor_HF_frei!frmLabor_UF_Detail.Form.Requery
On Error GoTo 0
End Sub