Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mit Doppelklick im ufo auf Datensatz verzweigen

69 views
Skip to first unread message

Andreas Lange

unread,
Apr 30, 2009, 2:18:37 PM4/30/09
to
Hallo NG,

es geht mal wieder um meine DB.

Also:
Ich habe in meiner DB u.a. ein Hauptformular ?Kunden?,
weiterhin ein Unterformular ?Anleitungen?. Schlᅵsselspalten sind ?
Masch_ID?
Der ᅵbersicht halber, weil mehrere Anleitungen auf eine Maschine zutreffen
kᅵnnen, habe ich das Unterformular einmal als Einzelformular (auf dem sind
Schaltflᅵchen und andere grafische Dinge untergebracht) und dann noch
einmal als Datenblatt gleich darunter angeordnet. Hier sehe ich dann
gleich die anderen Anleitungen, welche fᅵr diese Maschine noch zutreffen,
aufgereiht.
Jetzt mᅵchte ich realisieren, dass bei einem Doppleklick auf dem
betreffenden Datensatz ( Feldname ist ?Thema?) im unteren Formular
(Datenblatt), dieser Datensatz auch im oberen Einzelformular angezeigt
wird.

Wie muss ich diese Anweisung schreiben

Schon mal vielen Dank im Vorfeld

Andreas

Karl Donaubauer

unread,
Apr 30, 2009, 3:39:33 PM4/30/09
to
Andreas Lange wrote:
> Ich habe in meiner DB u.a. ein Hauptformular ?Kunden?,
> weiterhin ein Unterformular ?Anleitungen?. Schlᅵsselspalten sind ?
> Masch_ID?
> Der ᅵbersicht halber, weil mehrere Anleitungen auf eine Maschine zutreffen
> kᅵnnen, habe ich das Unterformular einmal als Einzelformular (auf dem sind
> Schaltflᅵchen und andere grafische Dinge untergebracht) und dann noch
> einmal als Datenblatt gleich darunter angeordnet. Hier sehe ich dann
> gleich die anderen Anleitungen, welche fᅵr diese Maschine noch zutreffen,
> aufgereiht.
> Jetzt mᅵchte ich realisieren, dass bei einem Doppleklick auf dem
> betreffenden Datensatz ( Feldname ist ?Thema?) im unteren Formular
> (Datenblatt), dieser Datensatz auch im oberen Einzelformular angezeigt
> wird.
>
> Wie muss ich diese Anweisung schreiben

Deine Erlᅵuterung ist etwas verwirrend, nicht nur wegen der vielen
Fragezeichen. Falls ich richtig verstehe, willst du im Datenblatt-UFo
auf das Textfeld "Thema" doppelklicken, und dadurch im Einzel-UFo
(Anleitungen?) zum Datensatz mit der gleichen Masch_ID (oder dem
gleichen Thema?) wechseln.

Der VBA-Code in der Ereignisprozedur "Beim Doppelklick" des
Textfeldes kᅵnnte ungefᅵhr so aussehen wie in:
www.donkarl.com?FAQ4.4

Du musst nur die richtige Syntax fᅵr UFos beachten. Die findest du in
www.donkarl.com?FAQ4.2

Das Ergebnis wᅵre ca.
'*********
Dim rs As DAO.Recordset
Set rs = Me.Parent!Anleitungen.Form.RecordsetClone

rs.FindFirst "Masch_ID = " & Me!Masch_ID
If Not rs.NoMatch Then
Me.Parent!Anleitungen.Form.Bookmark = rs.Bookmark
End If

Set rs = Nothing
'*********

Wenn's das nicht ist, solltest du nochmal versuchen, die Situation
zu schildern und dabei alle relevanten Objektnamen (ohne
Fragezeichen) nennen.

--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
3. SQL Server-Entwickler-Konferenz - Nᅵrnberg im Mai

Andreas Lange

unread,
May 1, 2009, 6:23:14 AM5/1/09
to
Hallo Karl,

danke an dieser Stelle fᅵr deine Antwort.
Also das mit den Fragezeichen sehe ich jetzt auch. War nicht gewollt,
sondern sind einfach nur Formatierungsmacken. Habe den Text auf Arbeit
geschrieben und hier nur eingefᅵgt. Dabei muss das Ganze passiert sein.
Die Fragezeichen sind nichts anderes als Anfᅵhrungszeichen, die aber
ignoriert werden kᅵnnen, da sie nicht Bestandteil des Namens sind. SORRY.
ᅵndert sich dadurch jetzt deine Anweisung?

Im ᅵbrigen hast du meine Schilderung des Problems dennoch richtig gedeutet.
In jedem Fall werde ich ᅵbers Wochenende ein wenig weiter an meiner DB
basteln. Mal sehen.

Andreas

Andreas Lange

unread,
May 1, 2009, 3:47:00 PM5/1/09
to
Am 30.04.2009, 21:39 Uhr, schrieb Karl Donaubauer <NoS...@donkarl.com>:

> Deine Erlᅵuterung ist etwas verwirrend, nicht nur wegen der vielen
> Fragezeichen. Falls ich richtig verstehe, willst du im Datenblatt-UFo
> auf das Textfeld "Thema" doppelklicken, und dadurch im Einzel-UFo
> (Anleitungen?) zum Datensatz mit der gleichen Masch_ID (oder dem
> gleichen Thema?) wechseln.
>
> Der VBA-Code in der Ereignisprozedur "Beim Doppelklick" des
> Textfeldes kᅵnnte ungefᅵhr so aussehen wie in:
> www.donkarl.com?FAQ4.4
>
> Du musst nur die richtige Syntax fᅵr UFos beachten. Die findest du in
> www.donkarl.com?FAQ4.2
>
> Das Ergebnis wᅵre ca.
> '*********
> Dim rs As DAO.Recordset
> Set rs = Me.Parent!Anleitungen.Form.RecordsetClone
>
> rs.FindFirst "Masch_ID = " & Me!Masch_ID
> If Not rs.NoMatch Then
> Me.Parent!Anleitungen.Form.Bookmark = rs.Bookmark
> End If
>
> Set rs = Nothing
> '*********
>
> Wenn's das nicht ist, solltest du nochmal versuchen, die Situation
> zu schildern und dabei alle relevanten Objektnamen (ohne
> Fragezeichen) nennen.
>

Hallo Karl

Irgendwie bin ich zu doof oder ich kann nicht deuten was du vorgeschlagen
hast bzw. nicht zuordnen was in donkarls access Seiten steht. Jedenfalls
bekomme ich es nicht hin. Vielleicht schildere ich das Ganze noch einmal
ganz konkret.

Mein Hauptformular heisst Anleitungen. Das erste Ufo heisst Anleitung
Unterformular. Dieses ufo ist ein Einzelformular. (Hier wird also jeweils
der erste Datensatz angezeigt, der sich auf eine Maschine im Hauptformular
bezieht. Es gibt aber mehrere Anleitungen, die sich auf eine Maschine
beziehen kᅵnnen. Eine Liste dieser Anleitungen sehe ich, wenn ich z.Bsp.
aus dem Einzelformular eine Datenblattansicht machen wᅵrde. Da mehrere
Felder vorhanden - nicht besonders ᅵbersichtlich.)
Deshalb habe ich ein zweites ufo mit Namen Anleitungen Unterformular1
unter dem ersten ufo platziert. Das zweite ufo wird in der
Datenblattansicht gezeigt und zeigt alle Anleitungen im Bezug zur
betreffende Maschine im Hauptformular. Datensatzquelle beider ufo`s ist
jeweils die Tabelle Anleitung.
Beide ufo?s sind jeweils ᅵber das Verknᅵpfungsfeld Masch_ID zum
Hauptformular verbunden. Jetzt mᅵchte ich erreichen, dass mit einem
Doppelklick auf auf das Feld Themabeschreibung des jeweiligen Datensatzes
im ufo Anleitungen Unterformular1, dieser Datensatz dann im ufo Anleitung
Unterformular angezeigt wird, also im oberen Einzelformular.

Dadurch hᅵtte ich dann die Mᅵglichkeit weitere Informationen zum
jeweiligen Datensatz ᅵber Schaltflᅵchen o.ᅵ. im Einzelformular abzurufen.
Ist halt ᅵbersichtlicher.

Geht das denn alles so zu machen? Wie kann ich das realisieren? Ich hoffe
dieses mal alles ᅵbersichtlich geschildert zu haben.

Vielen Dank im voraus

Andreas

Karl Donaubauer

unread,
May 2, 2009, 6:12:54 AM5/2/09
to
Andreas Lange wrote:
> ...

> Mein Hauptformular heisst Anleitungen. Das erste Ufo heisst Anleitung
> Unterformular. Dieses ufo ist ein Einzelformular. (Hier wird also jeweils
> der erste Datensatz angezeigt, der sich auf eine Maschine im Hauptformular
> bezieht. Es gibt aber mehrere Anleitungen, die sich auf eine Maschine
> beziehen kᅵnnen. Eine Liste dieser Anleitungen sehe ich, wenn ich z.Bsp.
> aus dem Einzelformular eine Datenblattansicht machen wᅵrde. Da mehrere
> Felder vorhanden - nicht besonders ᅵbersichtlich.)
> Deshalb habe ich ein zweites ufo mit Namen Anleitungen Unterformular1
> unter dem ersten ufo platziert. Das zweite ufo wird in der
> Datenblattansicht gezeigt und zeigt alle Anleitungen im Bezug zur
> betreffende Maschine im Hauptformular. Datensatzquelle beider ufo`s ist
> jeweils die Tabelle Anleitung.
> Beide ufo?s sind jeweils ᅵber das Verknᅵpfungsfeld Masch_ID zum
> Hauptformular verbunden. Jetzt mᅵchte ich erreichen, dass mit einem
> Doppelklick auf auf das Feld Themabeschreibung des jeweiligen Datensatzes
> im ufo Anleitungen Unterformular1, dieser Datensatz dann im ufo Anleitung
> Unterformular angezeigt wird, also im oberen Einzelformular.
> ...

Es fehlt noch der Hinweis, woran man einen bestimmten Datensatz
in den UFos erkennt. Du brauchst zum Navigieren ein eindeutiges
Feld (am besten ein Primᅵrschlᅵsselfeld) in der Tabelle "Anleitung".
Hast du so etwas und wie heiᅵt es? Ist es "Themabeschreibung"?

Besser wᅵre so etwas wie ein Autowertfeld.
Ich nenne es hier im Beispiel mal "AnleitungId".

Weiᅵt du grundsᅵtzlich, wie man VBA-Code benᅵtzt?
Wenn ja, dann kopiere den folgenden Code mal in die Ereignisprozedur
"Beim Doppelklick" deines Steuerelementes "Themabeschreibung"
im Datenblatt-UFo, also dort, wo du die Aktion auslᅵsen willst:

'*********
Dim rs As DAO.Recordset

Set rs = Me.Parent![Anleitung Unterformular].Form.RecordsetClone

rs.FindFirst "AnleitungId = " & Me!AnleitungId


If Not rs.NoMatch Then
Me.Parent!Anleitungen.Form.Bookmark = rs.Bookmark
End If

Set rs = Nothing
'********

Wenn das nicht klappt, dann schildere genau, wo und wie es nicht
funktioniert und nenne ggf. die Fehlermeldung, -nummer und -position.

BTW Deine UFo-Namen sind nicht optimal. Du solltest in allen
Objektnamen Sonder- und Leerzeichen vermeiden.
s.a. www.donkarl.com?FAQ1.5

Andreas Lange

unread,
May 3, 2009, 8:24:54 AM5/3/09
to
Hallo Karl,

Ich habe solch ein Feld in meiner Tabelle Anleitung und es heisst
Anleitung_ID


>
> Besser wᅵre so etwas wie ein Autowertfeld.
> Ich nenne es hier im Beispiel mal "AnleitungId".
>
> Weiᅵt du grundsᅵtzlich, wie man VBA-Code benᅵtzt?
> Wenn ja, dann kopiere den folgenden Code mal in die Ereignisprozedur
> "Beim Doppelklick" deines Steuerelementes "Themabeschreibung"
> im Datenblatt-UFo, also dort, wo du die Aktion auslᅵsen willst:

Habe ich getan und zwar im 2. Ufo AnleitungUnterformular1
Im ᅵbrigen habe ich deinen Hinweis beherzigt und das Freizeichen im
Unterformularnamen weggelassen. Ich habe also diese Namen geᅵndert.

Danach habe ich den Code ein wenig geᅵndert.

Private Sub Themabeschreibung_DblClick(Cancel As Integer)


Dim rs As DAO.Recordset
Set rs = Me.Parent![Anleitung Unterformular].Form.RecordsetClone

rs.FindFirst "Anleitung_Id = " & Me!Anleitung_ID
If Not rs.NoMatch Then
Me.Parent!Anleitung.Form.Bookmark = rs.Bookmark
End If

Set rs = Nothing
'********

End Sub

Wenn ich jetzt im Feld Themabeschreibung des Unterformulars
AnleitungenUnterformular1eines Datensatzes doppelklicke sollte der
entsprechende Datensatz im ufo AnleitungenUnterformular erscheinen, statt
dessenerscheint noch folgender Fehler:

Laufzeitfehler 2465
Microsoft Office Access kann das in ihrem Ausdruck angesprochene Feld
Anleitungnicht finden.

Was sollte denn da jetzt stehen?

Andreas


>
> '*********
> Dim rs As DAO.Recordset
> Set rs = Me.Parent![Anleitung Unterformular].Form.RecordsetClone
>
> rs.FindFirst "AnleitungId = " & Me!AnleitungId
> If Not rs.NoMatch Then
> Me.Parent!Anleitungen.Form.Bookmark = rs.Bookmark
> End If
>
> Set rs = Nothing
> '********
>
> Wenn das nicht klappt, dann schildere genau, wo und wie es nicht
> funktioniert und nenne ggf. die Fehlermeldung, -nummer und -position.
>
> BTW Deine UFo-Namen sind nicht optimal. Du solltest in allen
> Objektnamen Sonder- und Leerzeichen vermeiden.
> s.a. www.donkarl.com?FAQ1.5
>

--
Erstellt mit Operas revolutionᅵrem E-Mail-Modul: http://www.opera.com/mail/

Karl Donaubauer

unread,
May 3, 2009, 9:54:38 AM5/3/09
to
Andreas Lange wrote:
> ...

> Habe ich getan und zwar im 2. Ufo AnleitungUnterformular1
> Im ᅵbrigen habe ich deinen Hinweis beherzigt und das Freizeichen im
> Unterformularnamen weggelassen. Ich habe also diese Namen geᅵndert.
>
> Danach habe ich den Code ein wenig geᅵndert.
>
> Private Sub Themabeschreibung_DblClick(Cancel As Integer)
> Dim rs As DAO.Recordset
> Set rs = Me.Parent![Anleitung Unterformular].Form.RecordsetClone
>
> rs.FindFirst "Anleitung_Id = " & Me!Anleitung_ID
> If Not rs.NoMatch Then
> Me.Parent!Anleitung.Form.Bookmark = rs.Bookmark
> End If
>
> Set rs = Nothing
> '********
>
> End Sub
>
> Wenn ich jetzt im Feld Themabeschreibung des Unterformulars
> AnleitungenUnterformular1eines Datensatzes doppelklicke sollte der
> entsprechende Datensatz im ufo AnleitungenUnterformular erscheinen, statt
> dessenerscheint noch folgender Fehler:
>
> Laufzeitfehler 2465
> Microsoft Office Access kann das in ihrem Ausdruck angesprochene Feld
> Anleitungnicht finden.
>
> Was sollte denn da jetzt stehen?

Dim rs As DAO.Recordset
Set rs = Me.Parent!AnleitungenUnterformular.Form.RecordsetClone

rs.FindFirst "Anleitung_Id = " & Me!Anleitung_ID
If Not rs.NoMatch Then

Me.Parent!AnleitungenUnterformular.Form.Bookmark = rs.Bookmark
End If

Set rs = Nothing

--

Andreas Lange

unread,
May 3, 2009, 4:20:29 PM5/3/09
to
Hallo Karl,

vielen Dank nochmals. Jetzt hat es funktioniert.
Ein kleines Manko gibt es da zwar noch, aber vielleicht bekomme ich das
noch hin. Es mᅵsste wohl nur noch die Bedingung eingefᅵgt werden, dass
dieser Code nur dann ausgefᅵhrt wird, wenn es auch tatsᅵchlich einen
Datensatz gibt.
Denn wenn ich auf einen leeren Datensatz klicke, bzw. auf die Zeile eines
neuen Datensatzes, erhalte ich die Fehlermeldung:

Laufzeitfehler 3077
Syntaxfehler (fehlender Operator) in Ausdruck

Andreas

>> dessenerscheint noch folgender Fehler:
>>
>> Laufzeitfehler 2465
>> Microsoft Office Access kann das in ihrem Ausdruck angesprochene Feld
>> Anleitungnicht finden.
>>
>> Was sollte denn da jetzt stehen?
>
> Dim rs As DAO.Recordset
> Set rs = Me.Parent!AnleitungenUnterformular.Form.RecordsetClone
>
> rs.FindFirst "Anleitung_Id = " & Me!Anleitung_ID
> If Not rs.NoMatch Then
> Me.Parent!AnleitungenUnterformular.Form.Bookmark = rs.Bookmark
> End If
>
> Set rs = Nothing
>

--

Karl Donaubauer

unread,
May 4, 2009, 4:33:34 AM5/4/09
to
Andreas Lange wrote:
>> ...

>> Dim rs As DAO.Recordset
>> Set rs = Me.Parent!AnleitungenUnterformular.Form.RecordsetClone
>>
>> rs.FindFirst "Anleitung_Id = " & Me!Anleitung_ID
>> If Not rs.NoMatch Then
>> Me.Parent!AnleitungenUnterformular.Form.Bookmark = rs.Bookmark
>> End If
>>
>> Set rs = Nothing
> ...

> Es mᅵsste wohl nur noch die Bedingung eingefᅵgt werden, dass
> dieser Code nur dann ausgefᅵhrt wird, wenn es auch tatsᅵchlich einen
> Datensatz gibt.
> Denn wenn ich auf einen leeren Datensatz klicke, bzw. auf die Zeile eines
> neuen Datensatzes, erhalte ich die Fehlermeldung:
>
> Laufzeitfehler 3077
> Syntaxfehler (fehlender Operator) in Ausdruck

Als 1. Zeile im Code:

If IsNull(Me!Anleitung_Id) Then Exit Sub

Andreas Lange

unread,
May 5, 2009, 3:57:59 PM5/5/09
to
Danke Karl,

Andreas


>>
>> Laufzeitfehler 3077
>> Syntaxfehler (fehlender Operator) in Ausdruck
>
> Als 1. Zeile im Code:
>
> If IsNull(Me!Anleitung_Id) Then Exit Sub
>

--

0 new messages