Oktober 31, 2020, 22:20:57

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Aus einem Bericht auf ein Formular verlinken

Begonnen von HubertN, August 26, 2020, 21:46:35

⏪ vorheriges - nächstes ⏩

HubertN

Hallo zusammen,
folgende Frage hätte ich:
Ich habe einen Bericht aus einer Abfrage erstellt.
Ein Feld hat den Namen "CCID".
Dieses Textfeld ist in den Eigenschaften so eingestellt, dass es ein Hyperlink ist.
Nun sollte sich beim anklicken des Feldes im Bericht ein Formular mit dem dazugehörigen Datensatz zur weiteren Bearbeitung öffnen.
Wie kann ich das umsetzen?
Vielen Dank schon einmal.
HubertN

MzKlMu

Hallo,
meines Wissens kann man in einem Bericht kein Feld anklicken.
Gruß
Klaus

ebs17

ZitatIch habe einen Bericht aus einer Abfrage erstellt.
Jeder ist stolz auf seine Einfälle und Taten. Für Useraktionen zur Programmsteuerung sind aber Formulare das typische Mittel. Ein Bericht ist praktisch ein Ausdruck für die Ausgabe nach draußen (zum Gucken und Ausdrucken), der nur noch auf die Druckeraktivierung wartet.

Steuerungen innerhalb der Accessoberfläche per Hyperlink sind dann auch sehr ungewöhnlich und experimentell.
Ein Formular als Objekt bietet sehr viele Möglichkeiten über Ereignisse, Steuerelemente usw., was eine bessere Steuerung ermöglicht.
Mit freundlichem Glück Auf!

Eberhard

PhilS

Zitat von: HubertN am August 26, 2020, 21:46:35Ich habe einen Bericht aus einer Abfrage erstellt.
Ein Feld hat den Namen "CCID".
Dieses Textfeld ist in den Eigenschaften so eingestellt, dass es ein Hyperlink ist.
Nun sollte sich beim anklicken des Feldes im Bericht ein Formular mit dem dazugehörigen Datensatz zur weiteren Bearbeitung öffnen.
Der Hyperlink hilft dir bei der Navigation innerhalb einer Access-Anwendung nicht weiter.
Wenn du den Bericht in der Berichtsansicht öffnest (nicht Druckvorschau), dann kannst du dort auch die in Formularen übliche Klick- oder Doppelklick-Ereignisse verwenden, um Aktionen in der Access-Anwendung auszulösen.

Zitat von: ebs17 am August 27, 2020, 08:28:31Ein Bericht ist praktisch ein Ausdruck für die Ausgabe nach draußen (zum Gucken und Ausdrucken), der nur noch auf die Druckeraktivierung wartet.
Die Aussage ist richtig, aber mir zu pauschal. Zur Darstellung von Informationen mit stark variierender Länge in der Benutzeroberfläche ist ein (Unter-)Bericht oft eine bessere Lösung als ein Endlosformular (Stichwort: CanShrink/CanGrow).
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

ebs17

@phil:
Kein Widerspruch. Darstellung = Angucken.
Man würde aber wohl kaum eine (anspruchsvolle?) Programmsteuerung in einen solchen Unterbericht packen, oder?
Mit freundlichem Glück Auf!

Eberhard

DF6GL

Hallo,

m.M:  Ich sehe nach anfänglichen Misstrauen bei der Einführung der Berichtsansicht durchaus Vorteile bei der Berichts-Ansicht insofern, als dass sie sich der im wörtlichen Sinn gebräuchlichen Methode einer geschäftlichen Berichtserstattung annähert und nicht nur für Druckzwecke und Seiten-Layout-Bewunderung dient.


Dazu sind die (vielleicht noch nicht opulenten) Klickereignisse sehr oft nützlich, sei es, wie in diesem Fall, einfach ein Detail-Formular (oder auch ein Detail-Diagramm)  per Klick auf ein Datenfeld zu öffnen oder per Buttonklick erforderliche Abläufe anzustoßen. Längere Auswertungen werden zudem auch nicht durch den Seitenumbruch zerstückelt. 

Anspruchsvolle, sprich komplexe oder weitergehende Abläufe würde ich konformgehend  (wenn es denn möglich ist) auch nicht an dieser Stelle ansiedeln wollen.


HubertN

Vielen Dank für eure Gedanken.

Vielleicht habe ich mich nicht ganz verständlich ausgedrückt.
In meinem Bericht werden offenen Tätigkeiten an Hand einer Abfrage gefiltert und ausgegeben.

Etwa so:
CCID      TätigkeitID    Tätigkeit 

10      01          irgendwelche Anpassung

Hier sollte man dann auf das Feld "CCID" klicken können und ein Formular mit dieser ID öffnet sich.

Wie könnte man das umsetzen? Ich hoffe das ist einigermaßen verständlich.

PhilS

Zitat von: HubertN am August 27, 2020, 19:54:39Hier sollte man dann auf das Feld "CCID" klicken können und ein Formular mit dieser ID öffnet sich.
Das war schon alles verständlich.
Das kann man genauso umsetzen, wie in einem Formular. Voraussetzung ist aber, dass der Bericht in der Berichtsansicht geöffnet ist.
Falls dir der grundlegende Ansatz fehlt, schaut dir mal die DoCmd.OpenForm Methode an. Dort kannst du in dem WhereCondition-Argument einen entsprechenden Filter mitgeben.
Beispiel:
DoCmd.OpenForm "DeinFormular",,,"ID=" & Me.CCID
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

PhilS

Zitat von: ebs17 am August 27, 2020, 12:16:33@phil:
Man würde aber wohl kaum eine (anspruchsvolle?) Programmsteuerung in einen solchen Unterbericht packen, oder?
Der Begriff "(anspruchsvolle?) Programmsteuerung" lässt Interpretationsspielraum.

Wenn es um Code geht, der das Verhalten des Berichts steuert, dann gehört dieser schon direkt in diesen Bericht. - Ausgenommen natürlich allgemeine Prozeduren, die mehrfach verwendet werden.

Allgemeine Programmlogik, die nicht mit der UI-Steuerung des jeweiligen Objektes zusammenhängt, würde ich dort genauso wenig unterbringen, wie in einem Formular.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

ebs17

ZitatEtwa so:
CCID      TätigkeitID    Tätigkeit
Für eine solche übersichtliche Tabelle und Gestaltung erschließt sich mir nicht die Vorteilhaftigkeit eines Berichtes. Aber jeder nach seinem Willen.
Mit freundlichem Glück Auf!

Eberhard

HubertN

Vorerst noch einmal Danke.
Werde mich (wenn die Lösung steht) melden.
Grüße HubertN

HubertN

@phil:
habe deinen Code (DoCmd.OpenForm "DeinFormular",,,"ID=" & Me.CCID) umgesetzt und der funktioniert auch soweit :-)
Nur ein kleines Problem habe ich noch.
Es gibt bei meiner Auswertung eine CCID aber mehrere Tätigkeiten (TätigkeitID) dazu.

Mein Ansatz sieht so aus:
DoCmd.OpenForm "DeinFormular", WhereCondition:="CCID = '" & Me!CCID & "'"

Jetzt öffnet sich schon einmal das richtige Formular mit der CCID, aber noch nicht die dazugehörige "TätigkeitID"
Danke schon einmal.

PhilS

Zitat von: HubertN am August 28, 2020, 07:47:37Es gibt bei meiner Auswertung eine CCID aber mehrere Tätigkeiten (TätigkeitID) dazu.

Mein Ansatz sieht so aus:
DoCmd.OpenForm "DeinFormular", WhereCondition:="CCID = '" & Me!CCID & "'"
Der Zusammenhang zwischen CCID und TätigkeitID ist mir nicht klar.
Wenn das entsprechende Feld in der Tabelle (Datenherkunft des Formulars) TätigkeitID heißt, dann muss sich die WhereCondition auch das Tabellenfeld beziehen.

DoCmd.OpenForm "DeinFormular", WhereCondition:="TätigkeitID = '" & Me!CCID & "'"
Die Begrenzung des Kriteriums für CCID bzw. TätigkeitID ist nur dann richtig, wenn es sich um ein Textfeld (Datentyp!) handelt. Bei einem Zahl-Datentyp musst du die begrenzenden Hochkommas weglassen.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

HubertN

Zum besseren Verständnis habe ich ein Bild beigegeben.

Erklärung zum Bild:
man klickt auf eine der abgebildeten CCID's
(in diesem Fall gibt es 4 gleiche CCID und 4 unterschiedliche Tätigkeiten)
dann sollte sich die jeweilige Tätigkeit z. B.: 02 zur Eingabe öffnen.


DF6GL

Hallo,

dann filtere halt zusätzlich mit der Tätigkeit-ID...


DoCmd.OpenForm "DeinFormular", WhereCondition:="CCID = '" & Me!CCID & "' And [TätigkeitID] = '" & Me![TätigkeitID] & "'".


btw:
ID-Felder sollten nicht vom Datentyp Text sein. (Besser Autowert, bzw. Long-Datentyp)
Sonder- und Leerzeichen sollten vermieden werden.