Zum Inhalt springen

[Crystal Reports] SQL-Parameter pre Kaskadetische Parameter


Empfohlene Beiträge

Geschrieben

Hey,

ich benutze hier Crystal Reports 2008 und als Distributions-Platform Business Objects (SAP).

Ich würde gerne einen SQL Parameter abfragen, bevor auf die Datenbank zugegriffen wird, als Pre-Selektion.

Anschließend läuft ja die SQL Abfrage, worauf die kaskadetischen Parameter zur Selektierung zugreifen.

Das Problem hierbei ist, wenn ich z.B einen Bericht zu einem Artikel in einer bestimmen Saison abrufe, wird derzeit die Datenbank nicht vorselektiert, d.h größere Datenmengen als nötig werden abgerufen.

Wenn ich dies nun aber in Crystal Reports so aufbaue, dass ich im SQL die Where Bedingung per Parameter z.b auf VSAS = 21 setzte (Abfrage bei Neugenerierung des Berichts), kommt nach dem ersten Parameterprompt noch ein 2ter Promt (für die kaskadetischen Parameter), die jedoch wieder die Verkaufssaison abfragen (und den Wert hierfür zurücksetzten) zusammen mit den anderen Parameter (Artikelnummer, Farbnummern, etc.)

TL;DR:

Bericht so gestalten, dass die erste Abfrage den SQL eingrenzt und die 2te Abfrage nur auf dem Resultat der ersten aufbaut.

Geschrieben

Sorry, aber ich verstehe das Problem nicht. In der Routine in der CR aufgerufen wird, werden an den Report Parameter mitgegeben ggf auch die Datenbankverbindung, d.h. ich kann das ganz flexibel steuern. Der Prompt kommt nur, wenn ein Parameter nicht gesetzt wurde

Geschrieben (bearbeitet)

Problem:

Im SQL-Teil


WHERE VSAS = {?PVSAS}

Im Bericht:


{Befehl.MANR} = {?Mein Parameter - MANR} and 

{Befehl.MSAS} = {?Mein Parameter - MSAS}

Wenn ich nun den Bericht neugeneriere, fragt er logischerweise zu erst nach VSAS und dann sollte er nach MANR und MSAS fragen.

Stattdessen fragt er nach VSAS, dann nochmal nach VSAS (und ignoriert die erste eingabe) und gleichzeitig nach MANR + MSAS.

D.h die erste Parameterangabe ignoriert er komplett.

Bei 3,5 Mrd. Datensätze ein wenig ätzend, deswegen möchte ich ja die Preselection um die Daten vorher schon zu reduzieren.

So wies im moment läuft, geht er egal was kommt durch die 3,5 mrd datensätze durch.

Bearbeitet von Fraggla
Geschrieben

Bist Du Dir sicher, dass die Parameter auch korrekt übergeben werden? Wenn er nach VSAS fragt, dann würde das heißen, dass der Parameter nicht aus der aufrufenden Routine gesetzt wurde. Soweit ich mich erinnere sieht der Aufruf in etwa so aus



cr = createobject("CrytalReport.Report")


cr.setReport("rpt-datei")

cr.setDatabase("....")

cr.setParameter(1, what-ever)

cr.setParameter(2, what-ever)

cr.setParameter(3, what-ever)


cr.view()

Das Problem sieht für mich nicht nach einem Fehler des Reports aus, sondern der Routine, die den Report aufruft.

Geschrieben

Ja die Parameter werden richtig übergeben:

post-73020-14430449277727_thumb.png

Bei der ersten Abfrage nach der VSAS habe ich als Test nun 31 angegeben. Bei der 2ten frägt er dann aber nochmal nach der VSAS und tut sie mit der 21 vorbesetzten.

post-73020-14430449277368_thumb.png

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...