PDA

Vollständige Version anzeigen : Im Bericht (Report_Open) auf Daten zugreifen


Game-Boy
30.05.2012, 10:24
Hallo,

ist es irgendwie möglich, in der Sub Report_Open eines Berichtes auf die Daten des aktuellen Datensatzes der Datensatzquelle zuzugreifen?
Wenn ja wie?

Hintergrund:
In Abhängigkeit eines Ja/Nein-Datenfeldes sollen dann die ControlSources der Textfelder vor dem Drucken gesetzt werden.

Danke und Gruß

Thomas Möller
30.05.2012, 10:30
Hallo

ist es irgendwie möglich, in der Sub Report_Open eines Berichtes auf die Daten des aktuellen Datensatzes der Datensatzquelle zuzugreifen?
Wenn ja wie?
Hintergrund:
In Abhängigkeit eines Ja/Nein-Datenfeldes sollen dann die ControlSources der Textfelder vor dem Drucken gesetzt werden.

Beim Öffnen des Berichts stehen noch keine Daten zur Verfügung. Der von Dir angedachte Weg zur Lösung Deines Problems wird also so leider nicht funktioneren.

Du könntest aber vor dem Öffnen des Berichts das Datenfeld abfragen und die Datenquelle Des Brichts entsprechend anpassen. Wenn es sich dabei um eine Abfrage handelt, könntest Du also den SQL-String der Abfrage entsprechend anpassen.

Was hast Du denn genau vor? Soll Deine Anpassung einmalig oder pro Datensatz erfolgen?

CU

Game-Boy
30.05.2012, 10:34
Danke für die schnelle Antwort,

ich hab schon geahnt, dass das so nicht geht.

Die Anpassung der Textfelder-ControlSource muss pro Datensatz erfolgen, weil damit die Datenherkunft innerhalb des Datensatzes (und damit der Inhalt) der Textfelder festgelegt wird.

Thomas Möller
30.05.2012, 10:37
Hallo!

Die Anpassung der Textfelder-ControlSource muss pro Datensatz erfolgen, weil damit die Datenherkunft innerhalb des Datensatzes (und damit der Inhalt) der Textfelder festgelegt wird.
Dann solltst Du vielleicht beschreiben oder erklären, wie die Daten zusammenhängen und wann konkret was passieren soll. Ich könnte mit z.B. eine Lösung über die IIF-Funktion in der Abfrage vorstellen.

CU

Game-Boy
30.05.2012, 10:47
Das zu erklären ist nicht so einfach aber ich versuchs mal mit dem Wesentlichen:

Es gibt eine Abfrage als Datensatzquelle des Berichtes.
Jeder Datensatz enthält u.a. ein Ja/Nein-Feld (Textauswahl) und Datenfelder mit Text1 und Text2.
Beim Drucken des Berichtes soll nun anhand des Feldes 'Textauswahl' mal der Text1 oder der Text2 in einem Berichtstextfeld erscheinen.

Ich hoffe, es ist zu erkennen was gewollt ist.

Thomas Möller
30.05.2012, 11:12
Hallo!
Es gibt eine Abfrage als Datensatzquelle des Berichtes.
Jeder Datensatz enthält u.a. ein Ja/Nein-Feld (Textauswahl) und Datenfelder mit Text1 und Text2.
Beim Drucken des Berichtes soll nun anhand des Feldes 'Textauswahl' mal der Text1 oder der Text2 in einem Berichtstextfeld erscheinen.

Wenn Du konkrete Feldnamen nennst, kann man auch konkret helfen. Hier also eine "abstrakte" Lösung:

Du kannst in der Abfrage, die dem Bericht zu Grunde liegt, ein berechnetes Feld einfügen. Dieses lässt Du dann im Bericht anzeigen. Die Logik, wann welcher Text kommt, wird also in die Abfrage verschoben.

In der Abfrage fügst Du in einem Feld folgende Formel ein:
DeinFeld: IIF(Textauswahl = -1;Text1;Text2)

In Deinem Bericht bindest Du dann Dein Textfeld an das Feld mit dem Namen "DeinFeld".

HTH

Game-Boy
30.05.2012, 11:34
Keine schlechte Idee..
Kannst Du mir noch bissel genauer sagen, wie ich das in den SQL-Text integriere?
Danke

Thomas Möller
30.05.2012, 11:54
Hallo!
Keine schlechte Idee..
Kannst Du mir noch bissel genauer sagen, wie ich das in den SQL-Text integriere?
ich dachte, dass hätte ich schon: ;)
In der Abfrage fügst Du in einem Feld folgende Formel ein:
DeinFeld: IIF(Textauswahl = -1;Text1;Text2)
- Öffne mal die Abfrage in der Entwurfsansicht
- Setzte den Cursor in eine leere Spalte
- Füge den obigen Text ein
- Passe die Feldnamen an Deine Bedürfnisse an

HTH

Game-Boy
30.05.2012, 11:58
Ich glaube es liegt daran, dass ich mit einem Access-Projekt und einem SQL-Server arbeite, da ist das alles bissel anders...

Game-Boy
30.05.2012, 12:09
Habs hinbekommen. Für alle die es interessiert:

Man muss in den SELECT-Bereich schreiben:
CASE WHEN Textauswahl = - 1 THEN Text1 ELSE Text2 END AS Deinfeld

Super Idee.
Danke nochmal für die schnelle Hilfe.