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
Hallo,
meines Wissens kann man in einem Bericht kein Feld anklicken.
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.
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).
@phil:
Kein Widerspruch. Darstellung = Angucken.
Man würde aber wohl kaum eine (anspruchsvolle?) Programmsteuerung in einen solchen Unterbericht packen, oder?
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.
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.
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 (https://docs.microsoft.com/en-us/office/vba/api/access.docmd.openform) an. Dort kannst du in dem
WhereCondition-Argument einen entsprechenden Filter mitgeben.
Beispiel:
DoCmd.OpenForm "DeinFormular",,,"ID=" & Me.CCID
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.
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.
Vorerst noch einmal Danke.
Werde mich (wenn die Lösung steht) melden.
Grüße 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.
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.
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.
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.
Hallo,
wenn die TätigID eindeutig ist (was man vom Namen her annehmen muss), so ist doch die CCID hier bedeutungslos.
Es sollte also so reichen:
DoCmd.OpenForm "DeinFormular", WhereCondition:="[TätigkeitID] = '" & Me![TätigkeitID] & "'"
Habe gerade die letzten 2 Codes getestet. Alle beide funktionieren perfekt.
"Problem gelöst"
Vielen vielen Dank an alle.
Gr. HubertN