accessviolation
Goto Top

RDL File konvert zu SQL Statement

Hallo werte Adminas und werte Admins,

ich habe ein RDL File von einem ERP-System mit einer gefühlt ewigen SQL Query. Diese möchte ich nun extrahieren und als eigenständiges PHP Script gegen den DB-Server fahren.

Blöd:
  • einige XML Inhalte innerhalb des Query
  • Einige Dropdownmenüs die betankt werden wollen (bei denen ich immer noch nicht genau weiß, wie dazu dann das Statement aussieht
  • undurchsichtige SQL Query

Gibts da schon was von Ratiopharm?

Hintergrund: Die RDL File generiert einen Report auf dem MS Reportingserver: eine Art Mitarbeiter-Anwesenheitsliste.

Nun möchte ich jene Liste auf einigen Infopoint Displays regelmäßig anzeigen lassen, damit Kollegen relativ zügig erfahren, ob Ihre Kollegen im Haus sind oder nicht.

Warum als eigenständige PHP Lösung? Folgende Gründe:
  • ich kann das PHP Script nach Zeit x refreshen lassen.
  • es wird keine zusätzliche Lizenz benötigt.

Habt Ihr da eine Idee für mich?

Ich danke vorab,

viele Grüße

Content-Key: 13657320745

Url: https://administrator.de/contentid/13657320745

Printed on: May 26, 2024 at 06:05 o'clock

Member: ukulele-7
ukulele-7 Mar 25, 2024 at 10:03:19 (UTC)
Goto Top
Also RDL sagt mir erstmal nichts (klingt wie ein propritäres Format eures ERP?), kommst du denn an das SQL Statement im Klartext dran? Welches DBMS und hast du Zugang zur DB?

Beim SQL-Teil kann ich durchaus behilflich sein, bei PHP muss ich passen. Ich wüsste aber nicht, warum das nicht grundsätzlich gehen sollte.
Member: accessViolation
accessViolation Mar 25, 2024 updated at 10:14:41 (UTC)
Goto Top
Hi,

danke für dein Feedback:

klingt wie ein propritäres Format eures ERP?
Nö, ganz offizielles Format seitens MS.
learn.microsoft.com/de-de/sql/reporting-services/reports/report-definition-language-ssrs?view=sql-server-ver16

kommst du denn an das SQL Statement im Klartext dran
Mh, ja - mit XML Inhalten darin...

Beim SQL-Teil kann ich durchaus behilflich sein
Darauf komme ich bei Bedarf zurück, vielen Dank face-smile

Auszug der RDL File:
<?xml version="1.0" encoding="utf-8"?><Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"><AutoRefresh>0</AutoRefresh><DataSources><DataSource Name="asdf"><DataSourceReference>asdf</DataSourceReference><rd:SecurityType>None</rd:SecurityType><rd:DataSourceID>fasfsa</rd:DataSourceID></DataSource></DataSources><DataSets><DataSet Name="Gruppen"><Query><DataSourceName>asdf</DataSourceName><QueryParameters><QueryParameter Name="@UserName"><Value>=Parameters!UserName.Value</Value></QueryParameter></QueryParameters><CommandText>select   
	LTRIM(RTRIM(PERS_KENN))  AS pers_kenn
	, rtrim(PERS_KENN) +' - '+ rtrim(isnull(BEZEICH, '')) as bezeich  
 from dbo.TMSZulPersGruppen(@UserName)</CommandText></Query><Fields><Field Name="pers_kenn"><DataField>pers_kenn</DataField><rd:TypeName>System.String</rd:TypeName></Field><Field Name="bezeich"><DataField>bezeich</DataField><rd:TypeName>System.String</rd:TypeName></Field></Fields></DataSet><DataSet Name="DataSet2"><Query><DataSourceName>amsoltp</DataSourceName><QueryParameters><QueryParameter Name="@SORT"><Value>=Parameters!SORT.Value</Value></QueryParameter><QueryParameter Name="@Spalten"><Value>=Parameters!Spalten.Value</Value></QueryParameter><QueryParameter Name="@PERS_KENN"><Value>=Parameters!PERS_KENN.Value</Value></QueryParameter></QueryParameters><CommandText>/* 
DECLARE @PERS_KENN as varchar(20) = 'ANG' 
DECLARE @Sort as int = 1
DECLARE @Spalten as int = 2
*/ 

select 
  tmp.*
  ,(row_number() over (order by CASE @SORT WHEN 1 THEN str(tmp.AMPEL) + tmp.PERSNR
										   WHEN 2 then tmp.PERSNR
										   WHEN 3 then tmp.name_bezeich END) - 1) % @Spalten as spalte
  ,(row_number() over (order by CASE @SORT WHEN 1 THEN str(tmp.AMPEL) + tmp.PERSNR
										   WHEN 2 then tmp.PERSNR
										   WHEN 3 then tmp.name_bezeich END) - 1) / @Spalten as zeile

uswusf.
Member: ukulele-7
ukulele-7 Mar 25, 2024 at 10:33:30 (UTC)
Goto Top
Also Zeile 1 definiert erstmal das XML für die Datei und scheinbar auch die Datenbankverbindung. Die musst du dann natürlich mit PHP aufbauen, das überlasse ich den PHP Leuten face-wink

Dahinter steht ein Select der wohl gegen die DB ausgeführt wird:
select   
	LTRIM(RTRIM(PERS_KENN))  AS pers_kenn
	, rtrim(PERS_KENN) +' - '+ rtrim(isnull(BEZEICH, '')) as bezeich    
 from dbo.TMSZulPersGruppen(@UserName)
Der scheint ein Feld pers_kenn zu befüllen, eventuell ein Dropdown-Filter oder sowas? Jedenfalls ist das zweite Select dann die eigentliche Abfrage mit drei Variablen. Wenn das DBMS ein MSSQL ist würde ich mir das zweite Select mal ins Managementstudio kopieren und die Variablen sinnvoll setzen (oder austauschen) und das dann ausführen. Das kann man sich dann zurecht legen. Da du ja die selbe Anzeige immer wieder aktuallisiert ausgeben willst wird sich wohl auch die Sortierung nicht ändern also kann man da im SQL-Teil einiges vereinfachen.