如何解决正确的大查询在 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' ")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。