Fehler bei aufruf einer Sicht

15/01/2008 - 15:55 von Michael Stern | Report spam
Hallo NG

Ich hab folgendes Problem.
Wenn ich die Sicht im QueryAnalyser so aufrufe: "
SELECT
sao.aaEDBSToEVAZukauf.KeyID,
sao.aaEDBSToEVAZukauf.EinkDatum,
sao.aaEDBSToEVAZukauf.LieferNr,
sao.aaEDBSToEVAZukauf.Erntejahr,
sao.aaEDBSToEVAZukauf.WGR,
sao.aaEDBSToEVAZukauf.Sorte,
sao.aaEDBSToEVAZukauf.Klasse,
sao.aaEDBSToEVAZukauf.Groesse,
sao.aaEDBSToEVAZukauf.Farbe,
sao.aaEDBSToEVAZukauf.Eink_Menge,
sao.aaEDBSToEVAZukauf.Einheit,
sao.aaEDBSToEVAZukauf.Datum,
Null,
Null,
sao.aaEDBSToEVAZukauf.KZ_Vers,
sao.aaEDBSToEVAZukauf.Stichzeit
FROM
sao.aaEDBSToEVAZukauf"

bekommen ich die Fehlermeldung:
"Server: Nachr.-Nr. 245, Schweregrad 16, Status 1, Zeile 20
Syntaxfehler beim Konvertieren des varchar-Wertes 'E' in eine Spalte vom
Datentyp int."

Wenn ich diese Sicht aber so aufrufe:
"SELECT * FROM sao.aaEDBSToEVAZukauf"

kommt der Fehler nicht, und es werden mir alle Datensàtze angezeigt!?

Der SQL - Select in der Sicht sieht so aus:
"SELECT 'Z' + REPLICATE('0', 7 -
LEN(LTRIM(RTRIM(sao.PURORDER_P.S_PURORDERNO)))) +
LTRIM(RTRIM(sao.PURORDER_P.S_PURORDERNO))
+ REPLICATE('0', 3 -
LEN(LTRIM(RTRIM(REPLACE(sao.EDPOS.S_POSNO, '.', ''))))) +
LTRIM(RTRIM(REPLACE(sao.EDPOS.S_POSNO, '.', '')))
+ '0' AS KeyID, sao.PURORDER_P.S_PURORDERNO AS
BelegNr, sao.EDPOS.D_VKDATUM AS EinkDatum,
CONVERT(int, sao.SUPPLIER_M.S_SUPPLIERNO) AS LieferNr,
sao.EDPERIODE.N_ERNTEJAHR AS Erntejahr, CONVERT(int,
sao.ITEMGROUP2_P.S_ABBREVIATION) AS WGR,
sao.ITEMGROUP1_P.S_ABBREVIATION AS SorteNr, CONVERT(int, REPLICATE('0',
5 -
LEN(LTRIM(RTRIM(sao.ITEMGROUP1_P.S_ABBREVIATION)))) +
LTRIM(RTRIM(sao.ITEMGROUP1_P.S_ABBREVIATION)) + REPLICATE('0',
4 -
LEN(LTRIM(RTRIM(ISNULL(sao.EDFRUITQUAL.S_ABBREVIATION, '0'))))) +
LTRIM(RTRIM(ISNULL(sao.EDFRUITQUAL.S_ABBREVIATION, '0'))))
AS Sorte, ISNULL(sao.EDFRUITQUAL.S_ABBREVIATION, '0')
AS QualNr, CONVERT(int, ISNULL(sao.EDFRUITCLASS.S_ABBREVIATION, '0')) AS
Klasse,
CONVERT(int, ISNULL(sao.EDFRUITSIZE.S_ABBREVIATION,
'0')) AS Groesse, 0 AS Farbe, sao.EDPOSFRUIT.N_AMOUNTN AS Eink_Menge,
'kg ' AS Einheit, GETDATE() AS Datum, 'Z ' AS KZ_Vers,
sao.EDPOS.S_POSNO AS PosNo, sao.EDPOS.I_EDPOS, sao.PURORDER_P.I_PURORDER_P,
ISNULL(sao.PURORDER_P.DT_UPDATED,
sao.PURORDER_P.DT_INSERTED) AS Stichzeit
FROM sao.ITEMGROUP1_P INNER JOIN
sao.PURORDER_P INNER JOIN
sao.EDPOSX ON sao.PURORDER_P.I_PURORDER_P =
sao.EDPOSX.I_PURORDER_P INNER JOIN
sao.EDPOS ON sao.EDPOSX.I_EDPOSX = sao.EDPOS.I_EDPOSX
INNER JOIN
sao.EDPOSFRUIT ON sao.EDPOS.I_EDPOS =
sao.EDPOSFRUIT.I_EDPOS INNER JOIN
sao.SUPPLIER_M ON sao.PURORDER_P.I_SUPPLIER_M =
sao.SUPPLIER_M.I_SUPPLIER_M INNER JOIN
sao.ITEMGROUP2_P ON sao.EDPOSFRUIT.I_ITEMGROUP2_P =
sao.ITEMGROUP2_P.I_ITEMGROUP2_P ON
sao.ITEMGROUP1_P.I_ITEMGROUP1_P =
sao.EDPOSFRUIT.I_ITEMGROUP1_P INNER JOIN
sao.EDITGR2TOORG ON sao.ITEMGROUP2_P.I_ITEMGROUP2_P =
sao.EDITGR2TOORG.I_ITEMGROUP2_P INNER JOIN
sao.EDFRUITCLASS ON sao.EDPOSFRUIT.I_EDFRUITCLASS =
sao.EDFRUITCLASS.I_EDFRUITCLASS INNER JOIN
sao.EDFRCLA2ORGA ON sao.EDFRUITCLASS.I_EDFRUITCLASS =
sao.EDFRCLA2ORGA.I_EDFRUITCLASS INNER JOIN
sao.EDFRUITQUAL ON sao.EDPOSFRUIT.I_EDFRUITQUAL =
sao.EDFRUITQUAL.I_EDFRUITQUAL INNER JOIN
sao.EDFRUITSIZE ON sao.EDPOSFRUIT.I_EDFRUITSIZE =
sao.EDFRUITSIZE.I_EDFRUITSIZE INNER JOIN
sao.EDPERIODE ON sao.EDPOSFRUIT.I_EDPERIODE =
sao.EDPERIODE.I_EDPERIODE INNER JOIN
sao.EDCONFIG ON sao.PURORDER_P.I_PORDTYPE_C =
sao.EDCONFIG.N_BESTYPZUKID AND
sao.EDPOSFRUIT.I_ITEMGROUP3_P =
sao.EDCONFIG.N_ITEMGRP3IDFRUIT AND
sao.EDITGR2TOORG.I_EDORGANISAT = sao.EDCONFIG.N_EVAID
AND sao.EDFRCLA2ORGA.I_EDORGANISAT = sao.EDCONFIG.N_EVAID
WHERE (sao.PURORDER_P.I_PURORDER_P > 0) AND (sao.PURORDER_P.DT_DELETED
IS NULL) AND (sao.EDPOSX.DT_DELETED IS NULL) AND
(sao.EDPOS.DT_DELETED IS NULL) AND
(sao.EDPOSFRUIT.DT_DELETED IS NULL) AND (sao.EDITGR2TOORG.DT_DELETED IS NULL)
AND
(sao.EDFRCLA2ORGA.DT_DELETED IS NULL) AND
(sao.EDFRUITCLASS.DT_DELETED IS NULL) AND (sao.ITEMGROUP2_P.DT_DELETED IS
NULL) AND
(sao.ITEMGROUP1_P.DT_DELETED IS NULL) AND
(sao.EDFRUITSIZE.DT_DELETED IS NULL) AND (sao.EDFRUITQUAL.DT_DELETED IS NULL)
AND
(sao.EDPERIODE.DT_DELETED IS NULL) AND
(sao.SUPPLIER_M.DT_DELETED IS NULL) AND (sao.EDCONFIG.DT_DELETED IS NULL) AND
(sao.EDCONFIG.I_EDCONFIG > 0) AND
(sao.PURORDER_P.N_STATE = 16384) AND (CONVERT(int,
ISNULL(sao.EDFRUITSIZE.S_ABBREVIATION, '0'))

0) AND (CONVERT(int,


ISNULL(sao.EDFRUITCLASS.S_ABBREVIATION, '0')) > 0)"

System:
Win2003 Server SP 1
MS SQL Server 2000 SP 3

Könnt ihr mir da weiter helfen?

Danke schon mal im voraus.

lg
Michi
 

Lesen sie die antworten

#1 Stefan Hoffmann
15/01/2008 - 16:45 | Warnen spam
hallo Michael,

Michael Stern schrieb:
SELECT
sao.aaEDBSToEVAZukauf.KeyID,

sao.aaEDBSToEVAZukauf.Stichzeit
FROM
sao.aaEDBSToEVAZukauf"

bekommen ich die Fehlermeldung:
"Server: Nachr.-Nr. 245, Schweregrad 16, Status 1, Zeile 20
Syntaxfehler beim Konvertieren des varchar-Wertes 'E' in eine Spalte vom
Datentyp int."

Wenn ich diese Sicht aber so aufrufe:
"SELECT * FROM sao.aaEDBSToEVAZukauf"

kommt der Fehler nicht, und es werden mir alle Datensàtze angezeigt!?


Klingt nach einem Parser-Bug. Bei falscher Qualifizierung kann das
passieren.

Mache es halt so

SELECT
Alias.KeyID,
Alias.Stichzeit
FROM
sao.aaEDBSToEVAZukauf AS Alias

mfG

Ähnliche fragen