Neue Sicht in SQL -> JetReports Formel

12. Juni 2013 11:02

Hallo Kollegen und Kolleginnen.
Ich bin noch Anfänger und brauche Ihre Hilfe.
Wir habe NAV 5.01 Datenbank auf dem MS SQL Server 2008, sowie JetReports 2010.
Ich habe auf dem SQL Server eine neue Sicht erstellt und möchte sie in einem JetReport benutzen. Leider kann ich nicht diese Sicht in der Liste der Tabellen sehen (wenn ich im Excel eine NL-Formel versuche zu schreiben).
Was habe ich falsch gemacht?

P.S.: Sorry für mein schreckliches Deutsch :oops: (Ich bin ein Anfänger auch in Deutsch). Hoffe Sie haben verstanden, was für ein Problem ich habe. :wink:

Re: Neue Sicht in SQL -> JetReports Formel

12. Juni 2013 20:33

Hallo Kadawrik,

es ist gar nicht so einfach eine SQL-Sicht mit Jet Reports zu verwenden. Jet Reports greift nämlich bei einer NAV 5.0 nicht direkt auf den SQL-Server zu, sondern verwendet die Programmierschnittstelle C/Front (Sofern Ihr keinen ODBC-Connector verwendet). Diese Schnittstelle kennt Sichten auf dem SQL-Server gar nicht. Dazu müsstest Du LinkedObjects in NAV verwenden (Siehe z.B. hier). Damit kannst Du Deine View als Tabelle im NAV markieren. Das sollte C/Front dann erkennen. Dann wird auch Jet Reports das in den Auflistungen anzeigen.

Aber mal was Anderes. Warum willst Du eigentlich eine View verwenden? Ich habe das bisher nie verwenden müssen, aber schon enorm komplexe Berichte mit Jet Reports erstellt.

Gruß

Andreas

Re: Neue Sicht in SQL -> JetReports Formel

18. Juni 2013 10:06

Andreas, vielen Dank für Deine Hilfe und Tipps.

Datenkultur hat geschrieben:Warum willst Du eigentlich eine View verwenden?


Die Idee wäre: diese Sicht als Zwischentabelle zu benutzen, um die Komplexität der jetReports zu verringern (und aus Optimierungsgründen). Die View fasst die Daten aus ca. 10 Tabellen um, und wir brauchen noch 5-7 Berichte (künftig vielleicht noch mehr), die auf diese Daten zugreifen.

Re: Neue Sicht in SQL -> JetReports Formel

18. Juni 2013 10:45

Also entweder du machst es so wie Andreas geschrieben hat (die Performance dabei sollte jedoch nicht so prickelnd sein, schön wartbar ist das Ganze auch nicht) oder du könntest JetReports doch auch ganz sein lassen. Was hindert dich daran den View einfach direkt in Excel über ODBC anzusprechen?

Re: Neue Sicht in SQL -> JetReports Formel

18. Juni 2013 17:38

Kadawarik hat geschrieben:Die View fasst die Daten aus ca. 10 Tabellen um,


Ich hoffe Du weist was Du da tust. Jet Reports macht intern keine Joins. Durch die vielen Einzelabfragen ist das zwar weniger Performant, aber es stört auch den Betrieb des Gesamtsystems nicht. Wenn Du komplexe Joins in Views nutzt, dann kann das die Performance des Systems empfindlich treffen. Eventuell könntest Du mit Indexed Views arbeiten (Materialisierte Sichten). Dann würde einiges der erforderlichen Performance beim Erfassen der Daten verbraucht werden.

Wie auch immer. Ich empfehle Dir dringend wo wenig wie möglich Daten in Deine Sicht aufzunehmen. So Sachen wie Artikelnamen in die Wertposten zu ziehen weil es bequem ist, auf jeden Fall lassen. Das kann man in Jet Reports leicht mit nem First-Befehl abwickeln. Das verbraucht auch kaum Leistungsfähigkeit vom SQL-Server. Benuzte das nur, wenn Du in einer Tabelle auf Felder einer anderen Tabelle filtern willst. Teste es vorher mit den Befehlen Link oder Filter. Wenn das zu langsam ist, dann denke darüber nach das per View zu lösen. Bau aber keine "Ich habe alles schon in der Sicht" Abfrage. Das killt Dir alle Performance. Bedenke: Du kannst nicht vor der Sichterstellung filtern und musst daher immer alles in der Sicht auflisten (Vielleicht Millonen von Zeilen ermitteln). Auch wenn Du nur zwei Werte daraus abfragen musst.

Als Alternative könntet Ihr auch zu Eurem Jet Reports den ODBC-Connector erwerben. Damit kannst Du komplexe Statements direkt in Deinern Jet Befehlen eingeben und die Where-Clause aus Excel füllen.

Schau Dir zum Thema Performance auch mal die Analyse-Ansichten an. Das kann man mit Jet Reports natürlich auch verwenden.

Wenn Ihr richtig Power wollt, dann ist Jet Enterprise eine hervorragende Alternative. Das kombiniert die flexiblen Jet Funktionen mit einem OLAP-Cube System.

Sebastian Pfliegel hat geschrieben:Was hindert dich daran den View einfach direkt in Excel über ODBC anzusprechen

Über ODBC bekommt man eine 2-Dimensionale Datenmenge, deren Zeilenanzahl unbekannt ist. Das kann man sinnvoll nur per Pivot auswerten. Mit Jetreports kann man in jeder Zelle bestimmen welche Werte dort Anzeigt werden sollen. Inklusive aller Formatierungen und Berechnungen, die in Excel möglich sind. Viele Berichte brauchen diverse Informationen aus unterschiedlichen ERP-Bereichen gleichzeitig (Sachposten, Wertposten, Artikelposten, Anlagenbuchhaltung, Gebuchte Lieferungen, etc.). Schau Dir mal die Exceltapeten des Controllers Deiner Wahl an. Das kann man mit mittels ODBC in Excel nicht, oder nur mit erheblichen Aufwand automatisiert darstellen. Wenn es Dich interessiert: Auf meinem Blog findest Du ein Beispiel wie so ein Jet Report aufgebaut wird. Daran kann man das vielleicht etwas besser nachvollziehen.

Gruß aus Krefeld

Andreas Koblischke
Zuletzt geändert von Datenkultur am 5. April 2020 16:23, insgesamt 1-mal geändert.

Re: Neue Sicht in SQL -> JetReports Formel

19. Juni 2013 07:07

10 Joins in einem SQL-Statement, die dann zu einer View zusammengefasst werden, ist nicht Best Practice. (Performance, Wartbarkeit wurde schon erwähnt)