Neuigkeiten:

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

Mobiles Hauptmenü

Herkunft Unterformulare ändern

Begonnen von trebuh, November 14, 2015, 13:07:21

⏪ vorheriges - nächstes ⏩

trebuh

Hallo Community,

dank der großen Hilfe hier im Forum bin ich mit meiner Anwendung so ziemlich ans Ende gelangt.

Nun bin ich optimieren.

Folgendes:

Ich habe z.B. 8 Hauptberichte die vom Aufbau her identisch sind. Nur die darin befindlichen Unterberichte sind verschieden.

Nun wollte ich mittels der Function" .SourceObject" beim öffnen des Hauptberichts je nach Bedarf auf den entsprechenden Unterbericht verweisen.

If Me!rptUnterbericht_1.SourceObject = "" Then rptUnterbericht_1.SourceObject = "rptUnterbericht_1"

Nur klappt das nicht?

Bei den Formularen klappt es mit dieser Methode doch auch.
Muss man bei den Berichen anders vorgehen( z.B. mit OpenArgs)?

Wenn ja wie?

Der Vorteil wäre (dachte ich), dass ich dann anstatt der 8 Hauptberichte nur noch 4 Hauptberichte hätte.


Gruß
Hubert


Hondo

Hallo,
Du verwechselst Unterbericht mit Unterberichts-Steuerelement.
Klick mal das Unterberichts-Control am Rand an, dann wird dir in den Eigenschaften der Name angezeigt. Diesen musst du verwenden für die Zuordnung.

Andreas

MaggieMay

#2
Hallo Hubert,

Zitat von: trebuh am November 14, 2015, 13:07:21Nur klappt das nicht?
welche Fehlermeldung wird dir denn angezeigt?

Und was das betrifft:
ZitatIch habe z.B. 8 Hauptberichte die vom Aufbau her identisch sind.
ZitatDer Vorteil wäre (dachte ich), dass ich dann anstatt der 8 Hauptberichte nur noch 4 Hauptberichte hätte.
Warum vier, wenn doch alle gleich sind?
Freundliche Grüße
MaggieMay

Beaker s.a.

Hallo Hondo,
ZitatKlick mal das Unterberichts-Control am Rand an, dann wird dir in den Eigenschaften der Name angezeigt. Diesen musst du verwenden für die Zuordnung.
Bist Du sicher? Damit ordnest Du einem Control doch ein weiteres zu. IMO ist das SourceObject eines Unterbericht-Steuerelements aber ein Bericht.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Hondo

Hallo,
klar bin ich sicher,
Das Control angeklickt zeigt die Eigenschaften des Controls - was denn sonst?
Z.B. wenn das Control "Untergeordnet1" heißt, dann lautet der Code:
Me.Untergeordnet1.SourceObject = "Berichtsname"

Andreas

MaggieMay

Hi,

ich denke, das Problem lässt sich möglicherweise folgendermaßen lösen:
Anstelle von
ZitatDu verwechselst Unterbericht mit Unterberichts-Steuerelement.
sollte es vielleicht besser heißen:
ZitatDu verwechselst MÖGLICHERWEISE Unterbericht mit Unterberichts-Steuerelement.

Konkret:
Es geht hier um den Namen des Unterformular-Steuerelements und nicht um den Namen des Formulars das als Unterformular eingebunden wurde oder werden soll.
Freundliche Grüße
MaggieMay

Hondo

Naja, die Möglichkeit ist schon ziemlich konkret wenn Unterbericht identisch mit dem Control ist vom Namen her.

Andreas

trebuh

Hi!

Upps, habe jetzt gar nicht mitbekommen, das so viele Antworten kamen.

Also es ging schon darum, auf ein anderes Unterformular (Control) zu verweisen. (Nicht auf die Datensatzherkunft)

Fehler lag aber bei mir :-[
Man sollte halt von Anfang an sauber programmieren und nicht mal schnell was probieren.
Da schleichen sich halt doch kleine Fehler ein, die man danach aufwendig suchen muss.  >:(

Desweiteren ist es halt auch sinnvoll, was neues an einer Testanwendung auszuprobieren (wegen der Übersicht).
(Müsste ich aber allmählich selber wissen). ;D

Aber jetzt klappts, und die Anwendung ist wieder ein wenig übersichtlicher (pflegeleichter) und von der Dateigröße her kleiner geworden

@ MaggieMay
ZitatWarum vier, wenn doch alle gleich sind?

Vom Aufbau sind die Hauptberichte gleich, nur die Unterberichte beziehen sich auf eine andere Tabelle.

Somit sind jetzt die Herkunftsobjekte der Unterformulare im Hauptbericht leer.
Diese Herkunftsobjekte werden dann beim Öffnen des Hauptberichts im Ereignis (Private Sub Report_Open(Cancel As Integer)) je nach Fall zugewiesen.

Me.Untergeordnet1.SourceObject = "Berichtsname_1"
Me.Untergeordnet2.SourceObject = "Berichtsname_2"
...

Gruß und schönen Sonntag

Hubert






Beaker s.a.

Hallo Hondo,
ZitatZ.B. wenn das Control "Untergeordnet1" heißt, dann lautet der Code:
Me.Untergeordnet1.SourceObject = "Berichtsname"
Bin ich ganz bei dir, hatte dieses
ZitatKlick mal das Unterberichts-Control am Rand an, dann wird dir in den Eigenschaften (des Controls) der Name (des Controls) angezeigt.
eben so () verstanden. Und dass Control und Unterbericht den gleichen Namen haben gibt es bei mir nicht. Macht, wie man sieht, nur Probleme.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MaggieMay

ZitatVom Aufbau sind die Hauptberichte gleich, nur die Unterberichte beziehen sich auf eine andere Tabelle.
Sorry, aber dafür brauchst du doch keine vier Hauptberichte, wenn sie sich lediglich durch die Datenquelle der Unterberichte unterscheiden. Das lässt sich doch dynamisch lösen, wie du es bereits selbst beschrieben hast.
Freundliche Grüße
MaggieMay