问题描述
我正在尝试用 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' ")