Thorsten1967 0 Geschrieben 4. Juni 2014 Melden Teilen Geschrieben 4. Juni 2014 Hallo zusammen, wir nutzen eine SQL 2012 er Datenbank sowie eine erstellte Sicht. Auf diese Sichtungstabellen werden von anderen Rechnern mit einer Software (DPD DelisPrint Versandsoftware) zugegriffen. Diese Sichtungstabellen lassen sich sowohl auf dem SQL Manager als auch von der Versandsoftware (DPD) aufrufen. Von der Versandsoftware allerdings nur die Überschriften der Spalten der Sichtabelle. Einige Spalten bzw deren Inhalte der Sichtungstabellen besitzen allerdings eine Abfrage, z.b. mit Case oder IIF und diese Spalten mit der Abfrage sind beim Aufruf mit unserer Versandsoftware (DPD) dann leider leer, also nicht gefüllt.Ruft man die Tabelle am Client mit Excel auf, sind die Spalten jedoch vorhanden und gefüllt. Die Tabelle ansicht scheint somit O.K. zu sein. Nur die Versandsoftware hat anscheinend Probleme auf Sichtungstabellen zuzugreifen die eine Abfrage besitzen. Füllt man die Sicht mit einem einfachen Befehl z.B. b.A0Name1 AS Name1, funktioniert es. Bei einer älteren SQL Server Version hat es einwandfrei funktioniert. Irgendetwas muss bei SQL 2012 nun anders sein. Hat jemand Lösungsvorschläge. ??? Hier einmal unsere komplette Sicht: SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGODROP VIEW [dbo].[vwicVersandadressen]GOCREATE VIEW [dbo].[vwicVersandadressen]ASSELECT TOP (100) PERCENT CAST(b.Belegjahr AS VARchar) + '-' + CAST(b.Belegnummer AS varchar) AS Belegnummer, b.A0Empfaenger AS Kundennummer, CASE WHEN (b.A1Name1 IS NULL) THEN b.A0Name1 ELSE b.A1Name1 END AS Name1, CASE WHEN (b.A1Name1 IS NULL) THEN b.A0Name2 ELSE b.A1Name2 END AS Name2, CASE WHEN (b.A1Name1 IS NULL) THEN b.A0Zusatz ELSE b.A1Zusatz END AS Name3, CASE WHEN (b.A1Name1 IS NULL) THEN b.A0Zusatz ELSE b.A1Zusatz END AS Expr1, CASE WHEN (b.A1Name1 IS NULL) THEN b.A0Strasse ELSE b.A1Strasse END AS Strasse, CASE WHEN (b.A1Name1 IS NULL) THEN b.A0PLZ ELSE b.A1PLZ END AS PLZ, CASE WHEN (b.A1Name1 IS NULL) THEN b.A0Ort ELSE b.A1Ort END AS Ort, CASE WHEN (b.A1Name1 IS NULL) THEN b.A0Land ELSE b.A1Land END AS Land, ISNULL(b.WebEMail, a.EMail) AS EMailFROM dbo.KHKVKBelege AS b INNER JOIN dbo.KHKAdressen AS a ON b.A0AdressNr = a.Adresse AND a.Mandant = b.MandantWHERE (b.Mandant = 1)ORDER BY b.Belegjahr DESC, Belegnummer DESCGO Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 4. Juni 2014 Melden Teilen Geschrieben 4. Juni 2014 Was meinst Du Eine View oder eine Tabelle ? Order BY hat in einer View nicht zu suchen, das möchte u.U. der Abfrage-Client übergeben: Hat der User der Versandsoftware ausreichende Rechte ? Erwartet die Versandsoftware eventuell in den Spalten bestimme Datentypen ? Zitieren Link zu diesem Kommentar
Thorsten1967 0 Geschrieben 5. Juni 2014 Autor Melden Teilen Geschrieben 5. Juni 2014 Hallo Expert Member, ich bin leider nicht so der Sql-Profi. Aber ich gehe davon aus das es eine View ist. Auf das Order bzw. die Sortierung könnte ich verzichten. Das Hauptproblem sind aber die Abfragen und die zusammengesetzten Inhalte der Spalten wie hier: CAST(b.Belegjahr AS VARchar) + '-' + CAST(b.Belegnummer AS varchar) AS Belegnummer, Greife ich von dem Client über Excel auf die Sicht/View zu werden die Spalteninhalte angezeigt, also scheinen die Rechte O.K. zu sein. Kurz: funktioniert: b.A0Name1 AS Name1, funktioniert NICHT: CASE WHEN (b.A1Name1 IS NULL) THEN b.A0Name1 ELSE b.A1Name1 END AS Name1 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.