Neuigkeiten:

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

Mobiles Hauptmenü

Ungebundenen Hauptbericht mit zwei Filtern

Begonnen von Domm, November 28, 2017, 13:11:39

⏪ vorheriges - nächstes ⏩

Beaker s.a.

Hallo Frithjof,
Lies doch noch mal den Eröffnungsthread und
ZitatJeder UB greift auf die gleiche Abfrage zu
Es geht darum diese Abfrage mit zwei weiteren Werten zu filtern.
Diese Abfrage ist DS-Herkunft eines gebundenen Unterberichts auf
einem ungebundenen Hauptbericht.
Da braucht es IMO keine x Abfragen und mit "me.auswahlwoche "
kommst du da auch nicht weiter. Ich denke, dass da nur die WHERE-
Klausel wie gezeigt angepasst werden muss.
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)

Frithjiof

Hallo Ekkehard.

Zitat von: Beaker s.a. am November 30, 2017, 18:52:48

Lies doch noch mal den Eröffnungsthread ...

eine Gute Idee:)

Aber zwischendurch (Antwort #9) wurde auch "Position" als variable Größe genannt und von 10 Unterberichten gesprochen.

Zitat von: DommBeim Öffnen sollen aber alle UnterB nach zwei weiteren Kriterien gefiltert werden: WocheAktuell und TagAktuell.
Daher habe ich im HauptB zwei ungebundene Textfelder gleichen Namens platziert (Format: Allgemeine Zahl). Die UnterB beziehen sich im Kriterium auf diese Werte.

Wenn es nur darum geht die Textfelder aus dem Bericht mit den Werten aus dem Formular zu füllen  kann man doch einfach darauf verweisen. z.B.:
=[Formulare]!MeinFormular!Auswahlwoche

Es klingt aber so als wären die ungebundenen Textfelder Îm Bericht lediglich eine "Notlösung".

Abgesehen davon, dass ja auch in den Abfragen direkt auf das Formularfeld (=[Formulare]!MeinFormular!Auswahlwoche ) verweisen  werden kann:

M.E. ist es relativ simpel die SqlStrings oder den SqlString mithilfe der kleinen VBA-Routine anzupassen. Insgesamt halte ich das auch für sauberer, als über Funktionen oder Verweise die zwei Werte an die Abfrage zu übergeben.

Hinzu kommt, der Bericht kann dann auch jederzeit geöffnet werden, ohne dass das Formular geöffnet sein muss.

Frithjof

Domm

Hallo Ihr Zwei
ich folge Euren Schlagabtausch mit großem Interesse!
Es scheinen sich zwei Lager zu bilden- @Beaker s.a.. Übergebe die Werte in die Funktion, welche beim Öffnen des Berichtes ausgewertet werden / @Frithjiof: Lege in der SQL fest, woher die Textfelder ihren Steuerelementinhalt bekommen.
Die erwähnten Felder sehe ich eigentlich nicht als Notlösung. Ich hatte eher vermutet, dass ich die Variablen aus dem ÜbergabeForm ganz komfortabel beim Öffnen des HB hineinkopieren kann.
So in dem Sinne:
Private Sub Report_Open(Cancel As Integer)
    Me!AuswahlWoche = frm4HfZuordnungZeiten!AuswahlWoche
    Me!AuswahlTag = frm4HfZuordnungZeiten!AuswahlTag
End Sub


[Position]ist fix und spielt beim Filter keine Rolle mehr.
Oder:
Private Sub cmdForm5_Click()
    DoCmd.OpenReport "rpt4HrTagKursKand", acViewReport
        Me!AuswahlWoche = [Formulare]![frm4HfZuordnungZeiten]![AuswahlWoche]
        Me!AuswahlTag = [Formulare]![frm4HfZuordnungZeiten]![AuswahlTag]
End Sub

Dass es jetzt nicht ganz so einfach ist, durfte ich nun schon feststellen. Das Textfeld im HB wird schlichtweg nicht erkannt.
Lieber Ekkehard, lieber Frithjiof, ich hab mal eine MicroDB angehängt. Falls es Eure Zeit erlaubt: Bitte füllt mal die TestDB mit Euren Ideen, dann komme ich am ehesten darauf, was ich machen muss. Sonst werden wir noch ewig meine Fehler bei der Umsetzung aufspüren müssen.
Danke schon mal und ein erholsames WE!
Gruß Domm

Frithjiof

Schreib doch einfach im Entwurf des Berichtes ins Textfeld (Steuerelementinhalt)
=  [Formulare]![frm4HfZuordnungZeiten]![AuswahlTag]

In der Abfrage kann ebenfalls auf  "[Formulare]![frm4HfZuordnungZeiten]![AuswahlTag]" verwiesen werden.

Folgende Sub kann nicht funktionieren
Private Sub cmdForm5_Click()
    DoCmd.OpenReport "rpt4HrTagKursKand", acViewReport
        Me!AuswahlWoche = [Formulare]![frm4HfZuordnungZeiten]![AuswahlWoche]
        Me!AuswahlTag = [Formulare]![frm4HfZuordnungZeiten]![AuswahlTag]
End Sub


weil in dem Objekt nach  "Me!AuswahlTag" gesucht wird, in dem sich die Sub befindet, also im Formular.

Du müsstes ein Objekt definieren
Private Sub cmdForm5_Click()
    dim rpObject as object
    DoCmd.OpenReport "rpt4HrTagKursKand", acViewReport
    set  rpObject = reports("rpt4HrTagKursKand")
    rpObject!AuswahlWoche = [Forms]![frm4HfZuordnungZeiten]![AuswahlWoche]
    rpObject!AuswahlTag = [forms]![frm4HfZuordnungZeiten]![AuswahlTag]
End Sub


Wenn "[forms]![frm4HfZuordnungZeiten]![AuswahlTag]" das aktuelle Formular kennzeichnet  dann schreibst du besser  me!AuswahlTag.

Frihtjof


Domm

Jou, jetzt gehts!!!  ;D
Im ersten Versuch die Textfelder mit dem Verweis gefüllt, da kam #Name?
Danach diesen Verweis als Kriterium in die Abfrage eingetragen- und RUMMS (siehe Anhänge)

Ekkehard, kannst Du mit diesem Verfahren leben oder siehst Du Alternativen, die einem angehenden Access-Oberguru wie mir besser zu Gesicht stehen würden?
Auf jeden Fall bin ich sehr dankbar für den Verlauf!
Euch schon mal ein Kerzlein angezündt. Natürlich erst am Sonntag!
Gruß Domm

Beaker s.a.

Hallo Domm,
Anbei deine DB. Da kannst du jetzt drei/vier Möglichkeiten der Wert-
Übernahme/-gabe ausprobieren. Den erste Vorschlag mit OpenArgs
habe ich weggelassen.
Ich hoffe es hilft auch für die Zukunft.
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)

Frithjiof

Hallo Domm
Zitat von: Domm am Dezember 01, 2017, 15:24:26
Im ersten Versuch die Textfelder mit dem Verweis gefüllt, da kam #Name?
1.
#Name bedeutet: Access findet den Verweis nicht.
Wenn du dir über die Syntax des Verweises nicht sicher bist, empfiehlt es sich den Access Ausdrucksgenerator zu benutzen.

Du markierst das Feld in welches der Ausdruck hinein soll, und aktivierst unter <Eigenschaften> <Daten> das Feld Steuerelementinhalt. Dort klickst du ganz rechts auf die Schaltfläche mit den drei Punkten. Es öffnet sich der Ausdrucksgenerator.

Im Bereich Ausdruckselement kannst du das Formular wählen auf dem sich das Textfeld dessen Wert benötig wird befindet.  Über die Liste Ausdruckskategorien kommst du an das Feld selbst ran. Und in der Liste Ausdruckswerte finden sich alle möglichen Werte.

2.
Um die Verwirrung komplett zu machen noch zu den Openargumenten.

Übergabe von zwei  Werten
Aufruf aus dem Fromular
mit
DoCmd.OpenReport "rptest", acViewPreview, , , , "10;20"


Im Report folgende Prozedur  unterbringen: 


Private Sub Report_Load()
    Dim xx
    If Nz(Me.OpenArgs, "") <> "" Then
        Set xx = Split(Me.OpenArgs, ";")
        Me.Text0 = xx(0)
        Me.Text2 = xx(1)
    End If
End Sub


Frithjof


Beaker s.a.

ZitatUm die Verwirrung komplett zu machen noch zu den Openargumenten.
Was ich schon in #1 gezeigt hatte.
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)

Domm

Gruß Domm

Domm

@Frithjof. Der Ausdrucksgenerator war mir von jeher ein Graus. Ich hab da noch nie was Brauchbares entnehmen können. Vielleicht ist Dein Hinweis darauf Anlass, sich mal näher mit dieser Materie zu beschäftigen.
@Beaker s.a. Bin grad saumüde. Aber versprochen: ich schau mir Deine Lösungsvorschläge an, sobald Termine , Weib und Kinder mich lassen. Wär doch gelacht, wenn ich nicht hinter das Geheimnis Eures Erfolgs kommen würde...
Gruß Domm

Beaker s.a.

Hallo Domm,
Zitatsich mal näher mit dieser Materie zu beschäftigen.
Halte ich für überflüssig, denn der Ausdrucksgenerator ist wirklich
gräuslich. Einfache Ausdrücke bekommt man auch ohne zustande,
und wenn's kompliziert wird geht's mit VBA einfacher.
Zitatdas Geheimnis Eures Erfolgs
üben, üben, üben ...

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)

Frithjiof

Hallo Ekkehard
Zitat von: Beaker s.a. am Dezember 01, 2017, 17:52:01
ZitatUm die Verwirrung komplett zu machen noch zu den Openargumenten.
Was ich schon in #1 gezeigt hatte.

Ohh tatsächlich,  sorry, ich sollte Treads lesen bevor ich antworte ..schäm.

Aber warum hat dein Vorschlag  bei Domm nicht funktioniert?

Weil die Anweisung
Me!AuswahlTag
offensichtlich nichts fruchtete.

Mit dem ! wird auf die Datenquelle verwiesen und nicht auf das Textfeld im Formular/ Report.
Richtig wäre  gewesen
Me.Textfeldname

Frithjof

Frithjiof

Hallo Freunde
Zitat von: Domm am Dezember 02, 2017, 02:58:49
Der Ausdrucksgenerator war mir von jeher ein Graus. Ich hab da noch nie was Brauchbares entnehmen können. Vielleicht ist Dein Hinweis darauf Anlass, sich mal näher mit dieser Materie zu beschäftigen.
Zitat von: Beaker s.a. am Dezember 02, 2017, 13:56:18
Halte ich für überflüssig, denn der Ausdrucksgenerator ist wirklich
gräuslich.

Grauslich oder nicht.

Wer nicht genau weiß wie auf ein bestimmtes Feld in einem Formular zugegriffen werden kann findet hier durchaus brauchbare Hilfe.

Auch zu tiefverschachtelte UFOs werden hier sichtbar weil Access solche nicht mehr richtig darstellen kann.

Frithjof



Beaker s.a.

Hallo Frithjof,
ZitatWer nicht genau weiß wie auf ein bestimmtes Feld in einem Formular zugegriffen werden kann
soll sich den Objekt-Katalog zu Gemüte führen. (@Domm F2 im VBE)

Bezügl. "!" und "." werde ich mich nicht in die Diskussion einlassen.
Nur soviel, als ich anfing mit A2K habe ich mich an Karls FAQ gehalten.
Als dann die Diskussion darüber aufkam, bin ich in meinen Anwendungen
auf die indexierte Schreibweise
Me.Controls("Feldname")
übergegangen.

Mit dem Zugriff auf Tabellen- bzw. Formfeld hat das IMO nichts zu tun.
Dieser Zugriff wird durch die Benamsung des Formfeldes geregelt.
Unter der Voraussetzung eines gebundenen Forms und gebundenen Feldes
gilt (nach meiner Erfahrung):
Hat das Formfeld den gleichen Namen wie das Tabellenfeld gibt es in der
Form-Controls-Auflistung nur ein Control mit diesem Namen. Dieses
repräsentiert das Formfeld-Control mit allen Eigenschaften.
Bei unterschiedlichen Namen gibt es beide in der Auflistung. Das Formfeld-Control
hat dann wieder alle Eigenschaften, das Tabellenfeld-Control nur die Eigenschaft .Value
Tabellenfelder die zwar in der RecordSource des Form enthalten sind,
aber nicht in einem Formfeld angezeigt werden, tauchen in der Auflistung
nur als Tabellenfeld-Control auf (einzige Eigenschaft wie oben).

Erweitertes Beispiel anbei. Funzt sowohl mit "!" als auch mit "."

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)

Domm

@Beaker s.a.
Hallo, hab mir eben mal (oberflächlich) die verschiedenen Möglichkeiten zu Gemüte geführt. <frmUngOhneTextfeldFormularbezugInAbfrage> entspricht der Lösung von Frithjiof; die im Moment aus Gründen des Verständnisses favorisierte Variante. Da die anderen auch funktionieren, sind sie es durchaus Wert, näher beleuchtet zu werden. Erstaunlicherweise bieten sich jetzt, nach unermüdlichem Graben gleich mehrere Lösungen an. Ich hatte mich schon gewundert, dass auf der Ebene, in der Ihr euch bewegt, diese Herausforderung so jungfräulich schien. Vielleicht lags ja auch nur an meiner ungenauen Situationsbeschreibung.
Mit dem Häkchen "ERLEDIGT" hat die aus Eurer Sicht katastrophale DB einen Lehrer glücklich und mich um vieles Schlauer gemacht. Ekkehard, vielleicht hast Du es schon gemerkt- keine Umlaute mehr in den Benamsungen und den Knoten mit dem Mehrfachindex hab ich auch gelöst.
In dem Sinne bis bald!
Gruß Domm