Beantwortet

Reports can only use SELECT statements!


Benutzerebene 3
Abzeichen +1

 

Es ind keine Abfragen mit useredittimestamp möglich.

Oder?

 

 

icon

Beste Antwort von Daniel Schmidtchen 4 August 2022, 18:29

Original anzeigen

6 Antworten

Benutzerebene 7
Abzeichen +5

Systemvariablen immer in `` damit diese nicht als Befehl missverstanden werden.  

`useredittimestamp` 

Benutzerebene 3
Abzeichen +1

Danke, das funktioniert. Aber wieso sollte denn “useredittimestamp” eine Systemvariable sein? Sieht man das irgendwo? Den Code von der Version 20 habe ich ja da. Kann man da wo nachschauen?

Ist dann “letzteausfuerhung” vom Prozessstarter auch ne Systemvariable?

Edit: scheinbar nicht

Benutzerebene 7
Abzeichen +5

da gibt es leider keine vollständige Doku, nur ein Hinweis in die Richtung:
https://help.xentral.com/hc/de/articles/360018546919-Berichte#:~:text=ID%20des%20Belegs-,Anmerkung,notwendig%2C%20damit%20der%20SQL%20Bericht%20das%20Wort%20nicht%20als%20Befehl%20missversteht.,-Spalten

Benutzerebene 3
Abzeichen +1

Stimmt. Krasse Sache, ich danke dir!

Nur als Anmerkung: Das Problem sind nicht Systemvariablen.

Das Report Modul von Xentral verbietet das Vorkommen folgender SQL Keywords im SQL Statement.

INTO, INSERT, UPDATE, DELETE, ALTER, SHOW, USE, TRUNCATE, LOAD, CREATE, DROP, RENAME

Damit soll sichergestellt werden, dass nur SELECT Abfragen erlaubt sind, und die DB nicht von Berichten geändert werden kann.
Bestehen Spaltennamen zufällig aus einen dieser Keywords, wie eben USEredittimestamp das verbotene Keyword USE, so ist die Query nicht erlaubt und es erscheint die Fehlermeldung
Reports can only use SELECT statements!.

Abhilfe schafft hier eben wie beschrieben das Escapen der betroffenen Namen mit `` .

Quelle: Kann man in der ReportService.php genau so sehen.

 

Benutzerebene 7
Abzeichen +5

In deinem ersten SQL war nur das Komma hinter name zuviel.

Vor "FROM" darf kein Komma stehen, sonst wird noch etwas erwartet, das dann nicht dran steht und das SELECT...FROM wird nicht erkannt.

 

Antworten