Skip to main content
Beantwortet

Reports can only use SELECT statements!

  • August 4, 2022
  • 6 Antworten
  • 137 Ansichten

jav666
Forum|alt.badge.img+1
  • Inspirierend
  • 29 Antworten

 

Es ind keine Abfragen mit useredittimestamp möglich.

Oder?

 

 

Beste Antwort von Daniel Schmidtchen

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

`useredittimestamp` 

6 Antworten

Daniel Schmidtchen
Partner
Forum|alt.badge.img+5

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

`useredittimestamp` 


jav666
Forum|alt.badge.img+1
  • Autor
  • Inspirierend
  • 29 Antworten
  • August 4, 2022

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


Daniel Schmidtchen
Partner
Forum|alt.badge.img+5

jav666
Forum|alt.badge.img+1
  • Autor
  • Inspirierend
  • 29 Antworten
  • August 4, 2022

Stimmt. Krasse Sache, ich danke dir!


felixalmesberger
  • Häufiger Teilnehmer
  • 6 Antworten
  • December 2, 2022

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.

 


HB3
Forum|alt.badge.img+5
  • Genie
  • 515 Antworten
  • December 2, 2022

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.