Aktion SQL Anweisung ausführen openquery

Dieses Forum ist für alle NiceLabel Fragen für die deutschen Benutzer.

Moderators: Georges, milos, RobertK, tb, rom, NiceLabel Support Team

Post Reply
kimthomas
Newcomer
Posts: 1
Joined: Wed Dec 05, 2018 2:08 pm

Aktion SQL Anweisung ausführen openquery

Post by kimthomas » Wed Dec 05, 2018 2:17 pm

Hallo Zusammen,

ich stehe aktuell vor folgenden Problem.
Ich möchte über einen Button eine Aktion starten "SQL Anweisung ausführen".
Die SQL select Abfrage habe ich zuvor über das SQL Management Studio getestet dort erzeugt Sie das gewünschte Ergebnis.
Jetzt folgte ich die Abfrage über Nicelabel dynamisch durch Übergabe eines Datenbankfelds dynamisch gestalten und erhalte eine Fehlermeldung:

Code: Select all

SELECT min(datum) as [kleinstes Datum]
from
    OPENQUERY(VERBINDUNGSSERVER, 'select * from tab1 where bezugnr = :Test and modus = 6 ') AS tab1
	left join 
	OPENQUERY(VERBINDUNGSSERVER, 'select artnr,verftage from artst ') AS tab2 on tab1.ARTNR = tab2.artnr 
	where artst.verftage <> 0
Trage ich statt der Variable :Test eine feste Nummer ein liefert die Abfrage das gewünschte Ergebnis

blazp
NiceLabel Support
NiceLabel Support
Posts: 8
Joined: Tue Aug 09, 2016 9:24 am

Re: Aktion SQL Anweisung ausführen openquery

Post by blazp » Fri Dec 14, 2018 11:46 am

Sehr geehrter Herr Kimt,

Vielen Dank für Ihre Anfrage an den NiceLabel Support.

Die Variable "Test" in die NiceLabel SQL Anweisung soll nicht so benutzt sein: ":Test" sondern sollten Sie die Variable als SQL Variable. Sie machen das mit DECLARE. Weil Sie sehr untypische SQL Anweisung haben, sollten Sie gute Lösung für escape quotes zu finden. Wir haben das gemacht:

DECLARE @Test NVARCHAR(200) = :Test
SET QUOTED_IDENTIFIER OFF;
DECLARE @query NVARCHAR(4000) = &amp;quot;SELECT min(datum) as [kleinstes Datum]
from
OPENQUERY(VERBINDUNGSSERVER, 'select * from tab1 where bezugnr = &amp;quot;@Test&amp;quot; and modus = 6 ') AS tab1
left join
OPENQUERY(VERBINDUNGSSERVER, 'select artnr,verftage from artst ') AS tab2 on tab1.ARTNR = tab2.artnr
where artst.verftage <> 0&amp;quot;
SET QUOTED_IDENTIFIER ON;
EXEC sp_executesql @query

Leider können wir das nicht testen.

Für Rückfragen stehen wir Ihnen gerne zur Verfügung.
Mit freundlichen Grüßen.
Blaz Preloznik
Technical Support Engineer

Post Reply