Benutzen der Parameter im Report

Daniel Ruther

Hallo zusammen,

vielleicht ist es ja ganz einfach, aber ich komme einfach nicht dahinter.
Ich habe eine neue Layoutdefinition aus einer Abfrage erstellt.
Nun habe ich Parameter erstellt (Von Datum, Bis Datum, von Belegnummer, bis Belegnummer, etc.)
Nun möchte ich, wenn ich den Bericht ausführe, ohne Angabe von Einschränkungen, dass alle Daten gezogen werden.
Das funktioniert auch.
Allerdings weiss ich nicht, wo und wie ich die Parameter zum Einschränken der anzuzeigenden Daten einfüge (Skript oder ähnliches. Wer kann mir helfen?

Gruß aus Hannover
Daniel

Tobias Hermeling

GetData("LD.Par.Parametername")

Daniel Ruther

Hallo Herby,

das ist mir durchaus klar, allerdings weiss ich nicht, wie und wo ich festlege, das er nur die Daten anzeigen soll, wo (DocNum) im Bereich zwischen "von Belegnummer" und "bis Belegnummer" liegt. Wenn die Felder nicht gefüllt sind, soll er alle anzeigen.

So muss es auch mit den anderen Parametern (immer "von X" "bis X") geschehen.

Tobias Hermeling

[quote]"druther"]
Hallo Herby,
das ist mir durchaus klar, allerdings weiss ich nicht, wie und wo ich festlege, das er nur die Daten anzeigen soll, wo (DocNum) im Bereich zwischen "von Belegnummer" und "bis Belegnummer" liegt. Wenn die Felder nicht gefüllt sind, soll er alle anzeigen.
So muss es auch mit den anderen Parametern (immer "von X" "bis X") geschehen.
[/quote]

Ohh wohl verlesen ;)

Du möchtest sozusagen einen Filter (deine Parameter) über die Datensätze laufen lassen, richtig?

Das Databand bietet eine FilterExpression, dort kannst du diverse Bedingung einstellen.

hth

Daniel Ruther

Das hatte ich auch schon probiert, allerdings bekomme ich dann immer eine fehlermeldung, wenn die Parameter leer gelassen wurden.

Tobias Hermeling

[quote]"druther"]
Das hatte ich auch schon probiert, allerdings bekomme ich dann immer eine fehlermeldung, wenn die Parameter leer gelassen wurden.
[/quote]
Dann setzt doch per IIF nen Standartwert der immer zutrifft wenn der String leer ist.

Nebenher ist deine Fehlermeldung nicht zu erkennen / existiert nicht..

hth

Daniel Ruther

Das mit dem Anhang habe ich auch gerade festgestellt.
Wie meinst du das mit Standardstring?

Ich hatte mir das mit dem Filter so vorgestellt:

dataBand("ShipDate") >= GetData("LD.Par.ShipDateMin") And databand("ShipDate") <= GetData("LD.Par.ShipDateMax") Or databand("DocNum") >= GetData("LD.Par.DocNumMin") And dataBand("DocNum") <= GetData("LD.Par.DocNumMax") Or dataBand("CardCode") >= GetData("LD.Par.CardCodeMin") And dataBand("CardCode") <= GetData("LD.Par.CardCodeMax")

Aber selbst wenn ich die Felder fülle, bekomme ich eine Fehlermeldung.

Attachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-image-uploads/druther/Fehlermeldung.JPG]Fehlermeldung.JPG[/url]

Tobias Hermeling

Ja die Fehlermeldung sieht doch start nach falscher Datentyp aus.

Sind deine Parameter vom Typ Datum?

Die Fehlermeldung kommt weil versucht wird ein String mit Date zu vergleichen.

Du kannst den String "20090201" per CDate("Wert") zum Datum konvertieren.

CDate(GetData("LD.Par.ShipDateMin"))
CDate(GetData("LD.Par.ShipDateMax"))


hth

Daniel Ruther

ok. das werde ich mal testen. wie sieht das aus mit double? bei den anderen werten sagt er immer er kanns nicht in ein double konvertieren.
was mich dabei wundert, ist dass die meldung auch kommt, wenn das feld leer ist.

Tobias Hermeling

Beziehst du dich auf deine Abfrage?

DocNum sowie CardCode sollten nicht Double sein..

Grundsätzlich solltest du mit
CType(wert,datentyp)


in den entsprechenden Typ konvertieren können.

Philipp Knecht

Hallo

Allgemeiner Tip:
Verwende anstatt GetData(..) einfach Data(..)
Dann fügt cld Standardwerte ein falls die Felder leer sein sollen.

Anzeige der Daten via Drag and Drop vom Datasources LD- Tree.

hth

Daniel Ruther

Die beiden ShipDate-Parameter sind vom Typ Date und auch wenn ich es mit CDate probiere kommen die Fehlermeldungen.

Rolf Walker

Hallo Daniel!

Wenn ich dich recht verstehe, hast du eine Query gebaut, die dir die entsprechenden Daten aufbereitet.

Meiner Meinung nach, das einfachst wäre es vermutlich, wenn du die Parameter direkt in die Query übergibst und bereits dort entsprechend selektierst!

z.B.

SELECT *  FROM xxx  T0 WHERE yyy AND T0.[U_FromDate] between CAST('[%FromDate]' AS datetime)  AND CAST('[%ToDate]' AS datetime)


Wobei die Felder mit dem % davor die Parameterfelder welche du bei der Layoutdefinition gemacht hast sind.!

Evtl. hilft das weiter - sofern ich deine Fragestellung überhaupt richtig interpretiert habe!

Gruss,
Rolf

Philipp Knecht

Hallo

Wichtig:
Datum die aus dem Paramter Tree kommen (LD.Par...) immer mittels LD.ParamDate oder noch einfacher mittels LD.ParamDateTime(..) in ein gültiges Datum konvertieren.

hth

Daniel Ruther

Hallo ich kann leider den Quelltext nicht sehen, da bei mir die Box zu klein ist. Gibt es da irgendeinen Trick?

Rolf Walker

Hallo!

Falls du den Quelltext auf dem SQL Statement meinst:

SELECT * FROM xxx WHERE yyy AND T0.[U_FromDate] BETWEEN
CAST('[%FromDate]' AS datetime) AND CAST('[%ToDate]' AS datetime)

Gruss,
Rolf

Daniel Ruther

[quote]"Philipp"]
Hallo
Wichtig:
Datum die aus dem Paramter Tree kommen (LD.Par...) immer mittels LD.ParamDate oder noch einfacher mittels LD.ParamDateTime(..) in ein gültiges Datum konvertieren.
hth
[/quote]

Das habe ich verstanden, aber wie konvertiere ich Parameter mit der Eigenschaft Numeric bzw. Alphanumeric in ein double?

Philipp Knecht

Hi Daniel

CType(MeinFeld,Double)

hth

Manuel Marhold

Hi.

aber bei umformen von text in zahl immer das nachkommastellenzeichen beachten!!

es gibt auch den DirectCast mit angabe, welches Format als Eingabe genutzt wird (cultureInfo)
0

Comments

0 comments

Please sign in to leave a comment.

Didn't find what you were looking for?

New post