Neuigkeiten:

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

Mobiles Hauptmenü

Werte aus Parameterabfragefeld übernehmen

Begonnen von Beate1953, Oktober 10, 2013, 11:14:16

⏪ vorheriges - nächstes ⏩

Beate1953

Hallo,

ich habe eine Parameterabfrage, die Anfangsdatum und Enddatum eines Zeitraumes erfragt. Nun möchte ich die beiden Daten, die der User eingegeben hat, in meinem Bericht anzeigen.
Wie bekomme ich die Werte aus dem Abfragefeld heraus und in meinen Bericht?

Vielen Dank im Voraus
Beate1953

DF6GL

Hallo,

schreib die Parameternamen zusätzlich in leere Abfragespalten. Diese Spalten können dann im Bericht  mit  entspr.  Textfelder angezeigt werden .


MzKlMu

Hallo,
zeige mal die Abfrage (SQL Text).

So was sollte man gleich machen und nicht erst auf Rückfrage.
Gruß Klaus

Beate1953

Hallo,

SELECT Posten.Barcode, Posten.[Bezeichnung (Typ, genaue Bezeichnung)], Gerätegruppen.Bezeichnung, Abteilungen.Ort, [E-Check].[E-Check], [E-Check].Datum, [E-Check].Bemerkung
FROM (Gerätegruppen INNER JOIN Posten ON Gerätegruppen.GerätegruppeID = Posten.Gerätegruppe) LEFT JOIN (Abteilungen RIGHT JOIN [E-Check] ON Abteilungen.ID = [E-Check].Ort) ON Posten.Barcode = [E-Check].Barcode
WHERE ((([E-Check].Datum) Between [Anfangsdatum:] And [Enddatum:]));

Wie Bekomme ich das in meinen Bericht?

Den Tipp, die Parameternamen in leere Spalten zu Schreiben, habe ich nicht verstanden. Was meinst Du mit Parameternamen?

Vielen Dank für Eure Tipps, ich hoffe Ihr könnt mir weiterhelfen.
Viele Grüße
Beate1953

DF6GL

#4
Hallo,


das sind die Parameternamen:

Anfangsdatum:
Enddatum:



Die siehst Du auch im aufpoppenden Parameter-Abfragefenster.


Diese Namen (mit Eckklammern) schreibst Du in leere Abfragespalten und verpasst denen einen Aliasnamen  (so wie gesagt). Das ergibt eine solche SQL:

SELECT Posten.Barcode, Posten.[Bezeichnung (Typ, genaue Bezeichnung)], Gerätegruppen.Bezeichnung, Abteilungen.Ort, [E-Check].[E-Check], [E-Check].Datum, [E-Check].Bemerkung, [Anfangsdatum:] As AnfDat, [Enddatum:] As EndDat
FROM (Gerätegruppen INNER JOIN Posten ON Gerätegruppen.GerätegruppeID = Posten.Gerätegruppe) LEFT JOIN (Abteilungen RIGHT JOIN [E-Check] ON Abteilungen.ID = [E-Check].Ort) ON Posten.Barcode = [E-Check].Barcode
WHERE ((([E-Check].Datum) Between [Anfangsdatum:] And [Enddatum:]));




Die Spalten bekommst Du in den Bericht wie jede andere Abfragespalte auch...  (auch wie gesagt)

(Muss ich das auch erklären?  --> Alias-Namen ("Anfdat" und "EndDat")aus der Feldliste an eine geeignete Stelle im Bericht ziehen.)



btw: Solche Parameter-Abfragen sind eher unzweckmäßig denn vernüftig brauchbar, gelinde gesagt..

Beate1953

Hallo,

das mit der Abfrage klappt jetzt (vielen Dank), aber sobald ich diese beiden Felder im Berichtskopf habe, haut es mir die ganze Sortierung durcheinander, die ich per OrderBy im Bericht einstelle. Dasselbe passiert auch, wenn ich im Berichtskopf die Anzahl ausrechnen möchte (=Anzahl(*)).

Was ist da jetzt wieder falsch?
In einer anderen Datenbank hat das prima funktioniert.

Viele Grüße
Beate1953

DF6GL

Hallo,

WO genau stellst die Sortierung ein? Im Bericht (Fenster "Gruppieren/Sortieren") oder in der Abfrage  (OrderBy).


Irgendwie musst Du Deine Situation genauer darlegen...


"Sortieren und Gruppieren"  ist bei Berichten NUR im o. g. Gruppierungsfenster einzustellen.   Irgendwelche Sortierungen oder auch Gruppierungen in der Berichts-ABFRAGE werden ignoriert.

Beate1953

Hallo,

also die Situation ist Folgende: Ich habe ein Formular mit zwei Optionsgruppen, mit denen der User die erste und zweite Sortierebene wählen kann. Die gewählten Werte werden als globale Variablen in Sortwert1 und Sortwert2 gespeichert. Beim Öffnen des Berichtes wird aus den beiden Sortwerten ein SortwertGesamt gebildet (z.B. SortwertGesamt = 2, 4) und per OrderBy = SortwertGesamt  und OrderByOn = True angewendet. Damit ist der Bericht richtig sortiert und untersortiert. Klappt soweit prima.

Nur das mit Anfdat, Enddat, Anzahl und DomAnzahl klappt nicht.

Viele Grüße
Beate1953

DF6GL

Hallo,

"wird aus den beiden Sortwerten ein SortwertGesamt gebildet (z.B. SortwertGesamt = 2, 4) und per OrderBy = SortwertGesamt  und ...."


??

Ich sagte bereits, dass Orderby nicht zu empfehlen ist.


Was passiert, wenn die Felder z. B. im Berichtsfuß platziert werden?



Ansonsten: Lad mal die DB (datenreduziert und gezippt) hier hoch.

Beate1953

Hallo,

wenn die Felder im Berichtsfuß platziert sind, passiert genau dasselbe.

Wie lade ich eine Datenbank hier hoch??? Vielleicht hast Du einen Link dazu?

Du sagtest, dass die Sortierung im Bericht per "Gruppieren und Sortieren" gesetzt werden muss -- aber da kann ich doch nur eine feste Sortierung eingeben. Wie kriege ich dann das mit der Wahlfreiheit des Users hin? Muss ich da vielleicht für jede mögliche Kombination von möglichen Sortierkriterien je einen Bericht mit der entsprechenden festen Sortierung machen? Oder wie kann ich sonst die vom User gewünschte Kombination der Sortierkriterien an den Bericht übergeben, wenn nicht mit OrderBy?

Viele Grüße
Beate1953

bahasu

#10
Hi Beate,

Zitat von: Beate1953 am Oktober 11, 2013, 18:41:20
Muss ich da vielleicht für jede mögliche Kombination von möglichen Sortierkriterien je einen Bericht mit der entsprechenden festen Sortierung machen?
nein!


Zitat
Oder wie kann ich sonst die vom User gewünschte Kombination der Sortierkriterien an den Bericht übergeben, wenn nicht mit OrderBy?
siehe: http://www.access-o-mania.de/forum/index.php?topic=13940.0
Antwort #1


Harald
Servus

Beate1953

Hallo,

habe das mit dem Grouplevel übers Wochenende an einem kleinen Testbericht ausprobiert, da hat alles wunderbar geklappt, auch Anfdat, Enddat, Anzahl und DomAnzahl. Am Montag kann ich es dann in der Arbeit an der richtigen Datenbank ausprobieren. Werde mich dann wieder melden, ob es da auch klappt.

Vorerst jedenfalls schon mal vielen Dank für die Hilfe.

Viele Grüße
Beate1953


Beate1953

Hallo nochmal,

habe jetzt in der richtigen DB alles auf GroupLevel umgestellt. Das Sortieren klappt. Anfdat, Enddat und =Anzahl(*) funktionieren auch.

Aber bei DomAnzahl kommt immer die Meldung #Fehler.

Ich verwende folgende Formel für DomAnzahl:
   =DomAnzahl("*";"QryAlleGeraeteImZeitraumGemessen";"[E-Check]='Ja' OR [E-Check]='Ja*'")

Ist da vielleicht etwas falsch? Den Abfragenamen habe ich überprüft, der ist richtig. Sicherheitshalber habe ich alle Objekte in eine neue, leere DB importiert und die Abfrage ganz neu erstellt  --  hat auch keine Besserung gebracht. Auch die Anordnung des DomAnzahlfeldes im Berichtsfuß hat nichts gebracht.

Was mache ich falsch?

Viele Grüße
Beate1953

DF6GL

Hallo,

was soll dieses "Kriterium" bedeuten:

[E-Check]='Ja' OR [E-Check]='Ja*'



Welchen Datentyp hat "E-Check"  in der Tabelle?

bahasu

#14
Hi,

willst Du zählen in der Art: Ähnlich wie Ja*?
Dann probier mal:

  =DomAnzahl("*";"QryAlleGeraeteImZeitraumGemessen";"[E-Check] like 'Ja*'")

Ich setze voraus, dass die Namen des zu prüfendes Feldes in der Abfrage auch "E-Check" lautet.

Harald
Servus