正确的大查询在 ASP Classic 中不起作用?

问题描述

我正在尝试用 ASP CLASSIC 中的 sql 服务器数据库中的记录制作一个表。 程序中生成查询是正确的,并且在 sql server management studio 中执行工作,但是当我将此查询粘贴到 asp 经典 Web 代码时,出现了问题。 Microsoft VBScript 编译错误“800a0409”未终止的字符串常量

set qry=dbconn.execute (" WITH sqlQuery AS ( SELECT  ROW_NUMBER() OVER( ORDER BY [text3] ASC ) AS Row,* FROM ( SELECT 
    NotReturnedElements.IDElementuRuchuMagazyNowego,r.IDRuchuMagazyNowego,Towar.Nazwa as text1,Towar.KodKreskowy as text3,r.NrDokumentu as text5,r.Data as text6,stat.Name as 'Status',Kontrahent.Nazwa as text7,[Uzytkownik].[NazwaUzytkownika] as 'Twórca dokumentu',Towar.[NumerSeryjny] AS 'Numer Seryjny'
from
(
    SELECT IDElementuRuchuMagazyNowego,sum(ilosc) as ilosc
    FROM
    (
        SELECT e.IDElementuRuchuMagazyNowego,e.ilosc 
        FROM dbo.ElementRuchuMagazyNowego e
        INNER JOIN dbo.RuchMagazyNowy r ON r.IDRuchuMagazyNowego = e.IDRuchuMagazyNowego 
        WHERE r.IDRodzajuRuchuMagazyNowego = 25 AND r.IDMagazynu = 10

        UNION ALL

        SELECT el_rent.IDElementuRuchuMagazyNowego,-rel.Amount as ilosc
        FROM dbo.RentalElementsRelations rel
        INNER JOIN dbo.ElementRuchuMagazyNowego el_rent ON rel.IDRentElement = el_rent.IDElementuRuchuMagazyNowego
        INNER JOIN dbo.ElementRuchuMagazyNowego el_return ON rel.IDReturnElement = el_return.IDElementuRuchuMagazyNowego
        INNER JOIN dbo.RuchMagazyNowy r ON r.IDRuchuMagazyNowego = el_rent.IDRuchuMagazyNowego 
        WHERE r.IDRodzajuRuchuMagazyNowego = 25 AND r.IDMagazynu = 10
    ) Q
    GROUP BY IDElementuRuchuMagazyNowego
    HAVING sum(ilosc) > 0
) NotReturnedElements
INNER JOIN ElementRuchuMagazyNowego el_rent ON el_rent.IDElementuRuchuMagazyNowego = NotReturnedElements.IDElementuRuchuMagazyNowego
INNER JOIN dbo.RentalDocumentLines rent_line ON rent_line.IDRelatedDocumentLine = el_rent.IDElementuRuchuMagazyNowego
INNER JOIN RuchMagazyNowy r ON r.IDRuchuMagazyNowego = el_rent.IDRuchuMagazyNowego
INNER JOIN dbo.RentalDocuments rent ON rent.IDDocument = r.IDRuchuMagazyNowego
INNER JOIN Towar ON Towar.IDTowaru = el_rent.IDTowaru
LEFT JOIN dbo.RentalStatus stat ON stat.IDRentalStatus = rent.IDStatus
LEFT JOIN Kontrahent ON Kontrahent.IDKontrahenta = r.IDKontrahenta
LEFT JOIN [dbo].[Uzytkownik] ON Uzytkownik.[IDUzytkownika] = r.[IDUzytkownika]
WHERE 
    (NULL IS NULL OR NULL = Kontrahent.IDKontrahenta)
    AND (NULL IS NULL OR NULL = Towar.IDGrupyTowarow)
    AND (NULL IS NULL OR NULL = Towar.IDTowaru) ) AS SubQuery  ) SELECT text1,text3,text5,text6,text7 FROM sqlQuery WHERE Row BETWEEN 1 AND 17") 

解决方法

ASP 经典要求将多行字符串终止并在每行末尾使用 & _ 连接。这是一个简短的例子:

set qry=dbconn.execute ("SELECT  A.ColumnName " & _
     "from TableName [A] " & _
     "where A.ColumnName = 'Some Value' ")