Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Crystal Reports 2016 Grundkurs

SQL-Ausdrucksfelder

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
SQL-Ausdrucksfelder werden in der Praxis eingesetzt, um die Berichtserstellungszeiten zu verringern. In diesem Beispiel lernen Sie, was Sie über SQL-Ausdrucksfelder wissen müssen.

Transkript

In diesem Video zeige ich Ihnen die Vorgehensweise von SQL-Ausdrucksfeldern in Crystal Reports. Dazu erstellen wir einen neuen leeren Bericht über Datei Neu Standardbericht. Verbinden uns diesmal nicht auf die MDB-Datenbank, sondern auf die SQL Server-Datenbank, auf die "Xtreme Datenbank" und im Reiter "dbo" laden wir die Tabelle "Product". Klicken auf FERTIG STELLEN, um möglichst schnell hier ein Ergebnis zu erzielen, wechseln in den "Feld-Explorer" und geben dann hier "Product ID" und "Product Name", als Berichtswerte in die "Detail" -Sektion. Man kann das hier noch ein bisschen formatieren, dass das Tausendertrennzeichen bei der Artikelnummer nicht angezeigt wird. So, jetzt haben wir also aus der "Product"-Tabelle einen Bericht, der uns alle Artikelnummern und alle Artikelnamen anzeigt. Jetzt wollen wir noch eine Information zu der Artikel "Stammdatenauswahl" hinzufügen, und zwar wie viel Umsatz wir bisher mit diesem Produkt gemacht haben. Und das wollen wir durch ein SQL-Ausdrucksfeld realisieren. Warum? Dafür könnte es 2 Gründe geben. Zum einem, weil die Komplexität der Berechnung gar nicht in Crystal Reports möglich wäre beziehungsweise die Daten gar nicht von Crystal Reports aktuell lesbar sind. Wir haben ja im Moment nur die "Product"-Tabelle und dort sind keine Umsätze verfügbar. Jetzt hätten wir natürlich in unserem speziellen Fall in der "Xtreme"- Datenbank natürlich auch noch die Umsätze. Aber nehmen wir mal an, wir hätten sie einfach nicht aufgrund von Berechtigungen oder Ähnlichem. Das war der erste Fall und der zweite Fall ist Performancegründe. Wir wollen die Berechnung nicht durch Crystal Reports durchführen lassen, also die Berechnung, wieviel Umsatz jetzt irgendwie gemacht wurde mit diesem Product, sondern wir wollen diese Berechnung auf einen Server auslagern, und zwar auf den Datenbankserver, weil der das viel schneller kann. Und genau dafür sind die SQL-Ausdrucksfelder da. Zum einen also, um Ihnen Informationen zu liefern, die Sie in Crystal Reports erstens nicht berechnen können oder gar nicht zur Verfügung hätten, weil Sie in der Datenholung nicht da sind, und zum anderen, aus Performancegründen wollen Sie diese Berechnung auslagern und dann nur das Ergebnis noch mit dazufügen. Um jetzt so einen SQL-Ausdrucksfeld hinzuzufügen, gehen Sie in den "Feld-Explorer" auf die "SQL-Ausdrucksfelder", klicken mit der rechten Maustaste rauf und wählen "Neu. Geben dem einen entsprechenden Namen. Ich nenne es mal "Artikelumsatz" und klicken auf OK und es öffnet sich der "Formel-Workshop". Allerdings der Fomel-Workshop für SQL-Ausdrucks-Editor. Nicht Formel-Editor! Und hier schreiben Sie jetzt die SQL Syntax für den Datenbankserver, auf dem Sie dieses SQL Kommando ausführen wollen. Heißt, ich bin verbunden mit einem SQL Server, das heißt, ich schreibe die SQL Syntax für den SQL Server, sodass der die versteht. Wäre ich dagegen mit einer Oracle Datenbank verbunden, müsste ich sie in der Syntax schreiben, die Oracle versteht. Jetzt habe ich da schon mal was vorbereitet und zwar, im SQL Server Management Studio habe ich mal zwei Querys vorgeschrieben. Zum einen die Erste, die Ihnen nur mal zeigen soll, was wir hier eigentlich machen. Sie lädt die Product ID und einen summierten Wert bestehend aus "Unit Price", das ist der Einzelpreis mal der "Quantity" aus einer Tabelle, die heißt "Orders Detail". Gruppiert nach Product ID, sortiert nach Product ID. Und die gibt mir dann eine Liste zurück mit den einzelnen Artikelnummern und den einzelnen Umsätzen. Weil in der "Orders Detail" stehen alle zeilenbasierten Umsätze eines Auftrags drin. Und da berechnen wir einfach nur "Einzelpreis * Menge, summieren das Ganze über eine gruppierte Darstellung der Product ID und kriegen somit für jede Artikelnummer den errechneten Umsatz. Und dann habe ich diese ganze Sache noch ein bisschen verfeinert und mache das in der zweiten Query nur für einen bestimmten Artikel. In dem Fall den Ersten, den ich hier gefunden habe, 1101. Und wenn ich die ausführe, dann wird diese Liste hier, die noch viel länger ist, mir auf Basis der ersten Query ausgeführt und diese Liste, die eben nur einen Wert beinhaltet, nehme ich diesen Umsatz nur für diesen Artikel und genau das ist die Syntax für mein SQL-Ausdrucksfeld. Die nehme ich jetzt also, kopiere die und füge die in Crystal Reports wieder ein. Da es sich hier um eine Funktion handelt, muss ich die in runde Klammern setzen, dann rücken wir das hier noch mal ein und fügen das dann, so wie es ist, ein. Wenn wir die Syntax jetzt überprüfen, wir haben keine Fehler gefunden und über "Speichern und schließen", können wir diese abspeichern. Jetzt nehmen wir das und fügen das einfach hier mit dazu. Und dann, Sie haben das Ergebnis ja schon gesehen, 960,64 € werden mir dann eben angezeigt. Warum immer der gleiche Wert? Weil das hier alles noch etwas statisch ist. Die Product ID, egal welches Produkt hier in meinem "Crystal Reports"-Bericht auf die Zeile gerade angezeigt wird, ist ja immer noch das SQL Kommando nur für diesen einen Artikel. Das ändern wir jetzt, indem wir dort wieder hinein gehen und hier die Statik rausnehmen und die Product ID Variable eben übergeben. Wieder ein kleiner Syntax-Check, speichern und schließen. Und dann sieht das Ganze so aus. Das wären dann die einzelnen Umsätze. Hier unten haben wir viel Umsatz gemacht, das heißt, dort werden wieder die Rauten angezeigt, machen wir das Feld einfach breiter. Wie Sie sehen, ist es relativ einfach so ein SQL-Ausdrucksfeld zu schreiben und auch zu verwenden. Jetzt gibt es nur noch zwei Dinge, die Sie über SQL-Ausdrucksfelder unbedingt wissen müssen. Zum einen, wenn wir jetzt wieder in das Feld reingehen, ein SQL-Ausdrucksfeld muss zwingend immer einen Wert zurückgeben. Und die Abfrage mal so umschreiben, dass sie mehr als einen Wert zurückgibt. Das heißt eine ganze Liste. Nehmen wir das "SUM" mal raus und löschen das "where". Sie überprüfen die Query dann. Dann kriegen Sie die Fehlermeldung, dass eine "Subquery returned more than 1 value". Heißt also, Crystal Reports bindet das SQL-Ausdrucksfeld, als Subquery in die aktuell vorliegende Datenholung aus dem Datenbank-Assistenten ein. Und damit gelten eben alle Regeln, die bei einer Subquery gelten. Das heißt, wir machen das wieder rückgängig. Das ist die eine Sache, die Sie wissen müssen. Und die andere Sache ist, dass Ihnen nicht immer die SQL-Ausdrucksfelder zur Verfügung stehen. Also immer nur dann, wenn auch wirklich "SQL gesprochen wird". Das heißt, wenn Sie mit einer Datenquelle verbunden sind, die irgend eine Art von SQL Syntax versteht und die SQL-Ausdrucksfelder stehen Ihnen auch dann nicht zur Verfügung, wenn Sie im Datenbank-Assistenten sich auf mehr als eine Datenbank verbunden haben. Das heißt, Sie können jetzt schon mehr als eine Tabelle hier einfügen, aber Sie müssen darauf achten, dass Sie alle von ein und der gleichen Datenbankverbindung kommen. Wenn Sie eine weitere, also wenn wir jetzt zum Beispiel die Access-Datenbank hier noch mit dazufügen oder auch einen anderen SQL Server, dann wären keine SQL-Ausdrucksfelder mehr verfügbar. Sie bekommen auch eine entsprechende Warnmeldung. Wenn ich jetzt also das mal mache hier auf die MDB und dann holen wir uns die "Orders Detail"- Tabelle. Dann sehen wir, wir haben zwei Datenbankverbindungen. Die kann auch miteinander verknüpfen. Kein Problem. Und dann kommt der Fehler beziehungsweise der Hinweis, dass wir mehr als einen Datenbanktreiber verwenden und dass aus diesem Grund die SQL-Ausdrucksfelder eben nur eine dieser beiden Datenverbindungen nutzen kann, und das wird in dieser Meldung angezeigt. Sie haben in diesem Video die SQL-Ausdrucksfelder von Crystal Reports kennengelernt, die in zwei Anwendungsfällen verwendet werden können. Zum einen, Sie brauchen eine Informationen oder Daten auf die Sie so nicht mit Ihrer Datenbankverknüpfung kommen. Oder zum anderen, Sie wollen die Berechnung oder die Ausführung dieser SQL Syntax auf dem jeweiligen SQL oder Datenbank Server durchführen und nicht durch Crystal Reports durchführen. Das kann Performancegründe haben.

Crystal Reports 2016 Grundkurs

Erstellen Sie aussagekräftige und übersichtliche Berichte mit SAP Crystal Reports 2016.

6 Std. 39 min (51 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Crystal Reports Crystal Reports 2016
Exklusiv für Abo-Kunden
Erscheinungsdatum:30.01.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!