Page 1 of 1

Aktion SQL Anweisung ausführen openquery

Posted: Wed Dec 05, 2018 2:17 pm
by kimthomas
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

Re: Aktion SQL Anweisung ausführen openquery

Posted: Fri Dec 14, 2018 11:46 am
by blazp
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.