| 

.NET C# Java Javascript Exception

1
Hallo an alle!

Hoffentlich könnt ihr mir helfen.

Ich habe eine komplexe Access Query in eine View auf dem SQL-Server konvertiert, oder jedenfalls versucht. Aber irgendwie funktioniert die View nicht.

Hier die Fehlermeldung:

Fehler bei der SQL-Ausführung.
Ausgeführte SQL-Anweisung: SELECT .....
Fehlerquelle: .Net SqlClient Data Provider
Fehlermeldung: Methoden für bigint können nicht aufgerufen werden.
Ungültiger Spaltenname 'anzahl'

und hier die komplette Abfrage:

SELECT DISTINCT 
TOP (100) PERCENT g.Nummer AS Gruppennr, CONVERT(bigint,
(CASE WHEN aa.gruppe = 1 THEN g.barcode WHEN aa.individuell = 1 THEN qk.einmalbarcode WHEN aa.gruppe = 0 AND
aa.individuell = 0 THEN qk.ean END)) AS Barcode, aa.Bezeichnung AS Arbeitsauftrag, qk.Artikelbezeichnung, m.Merkmalname AS Tätigkeit,
CASE WHEN aa.gruppe = 0 THEN gm.anzahl ELSE aa.anzahl END AS AnzahlSoll, CASE WHEN aa.gruppe = 1 THEN
(SELECT SUM(Anzahl) AS Summe
FROM tab_GruppeMerkmal
WHERE (GruppeID = gm.GruppeID) AND (MerkmalID = gm.MerkmalID) AND (Rueckmeldung <> 0)) ELSE
(SELECT SUM(Anzahl) AS Summe
FROM tab_GruppeMerkmal
WHERE (qkauftragid = gm.qkauftragid) AND (MerkmalID = gm.MerkmalID) AND (Rueckmeldung <> 0)) END AS AnzahlIst,
CASE WHEN aa.gruppe = 1 THEN (CASE WHEN g.anzahl <=
(SELECT SUM(Anzahl) AS Summe
FROM tab_GruppeMerkmal
WHERE (GruppeID = gm.GruppeID) AND (MerkmalID = gm.MerkmalID) AND (Rueckmeldung <> 0)) THEN 'ja' ELSE 'nein' END)
ELSE (CASE WHEN gm.anzahl <=
(SELECT SUM(Anzahl) AS Summe
FROM tab_GruppeMerkmal
WHERE (qkauftragid = gm.qkauftragid) AND (MerkmalID = gm.MerkmalID) AND (Rueckmeldung <> 0)) THEN 'ja' ELSE 'nein' END) END AS fertig,
aa.AAID, p.PersNr, CASE WHEN p.persnr = 0 THEN 'unbearbeitet' ELSE [p].[VName] + ' ' + [p].[NName] END AS Bearbeiter,
CASE WHEN aa.gruppe = 0 THEN gm.QKAuftragID ELSE - 1 END AS QKAuftragID, gm.MerkmalID,
CASE WHEN gm.rueckmeldungbestaetigt = 0 THEN 'nein' ELSE 'ja' END AS Bestätgit
FROM dbo.ARBEITSAUFTRAG AS aa INNER JOIN
dbo.tab_Gruppe AS g ON aa.AAID = g.AAID INNER JOIN
dbo.tab_GruppeMerkmal AS gm ON g.ID = gm.GruppeID INNER JOIN
dbo.QKAUFTRAG AS qk ON gm.QKAuftragID = qk.QKAuftragID INNER JOIN
dbo.MERKMALE AS m ON gm.MerkmalID = m.MerkmalID INNER JOIN
dbo.Personal AS p ON gm.UserID = p.PersNr
WHERE (aa.Abgeschlossen = 0) AND (g.FreiVp = 0)
ORDER BY aa.AAID, Gruppennr, Barcode


Wo ist der Fehler? Ich sehe den Wald vor lauter Bäumen nicht :-(

Danke im Vorraus
29.08.2014
tschroeer 35 4
Floyd 14,6k 3 9
Schon versucht einzelne Teile des Selects durch defaultwerte zu ersetzten?

z.B.
....
0 [AnzahlIst],
0 [fertig]
....

Und so das Problem einzugrenzen?
Floyd 29.08.2014
Korrektur:

z.B.
....
0 [AnzahlIst],
'ja' [fertig]
....
Floyd 29.08.2014
Ok. Werde ich mal versuchen
tschroeer 29.08.2014
3 Antworten
0
[sollte ein Kommentar werden, bitte löschen]
29.08.2014
Floyd 14,6k 3 9
Floyd 14,6k 3 9
0
so: ich habe jetzt den Fehler eingegrenzt. Der Fehler liegt in diesem Code-Ausschnitt:

CONVERT(bigint, 
(CASE WHEN aa.gruppe = 1 THEN g.barcode
WHEN aa.individuell = 1 THEN qk.einmalbarcode
WHEN aa.gruppe = 0 AND aa.individuell = 0 THEN qk.ean END)) AS Barcode


Die Barcodes sin in den Tabellen als nvarchar(50) hinterlegt. Der SELECT DISTINCT mag aber keine nvarchar Spalten. Wie kann ich das Problem umschiffen?
29.08.2014
tschroeer 35 4
Welchen Datentyp haben einmalbarcode und ean?
Floyd 01.09.2014
Alle Barcodes sint vom Typ nvarchar(50)
tschroeer 01.09.2014
0
So, ich habe das Problem jetzt gelöst. Da unsere Barcode nur aus Ziffern bestehen, habe ich mit meinem Chef besprochen, dass ich in der DB die nvarchar(50) Felder durch bigint ersetze.

Jetzt klappt das auch mit der View.
01.09.2014
tschroeer 35 4

Stelle deine Sql-Frage jetzt!