我希望我在这篇文章中遵循协议,因为这是我的第一篇文章,但我需要一些指导。我不确定还有什么可以尝试,但现在就是。
- 我们有一个用VB6编写的内部程序,它使用水晶报告9(v9.2.0.448)。一切都运行得很好,直到我尝试在水晶报告中进行存储过程。当报告通过水晶查看器显示时...它给我错误/消息:"未知的查询引擎错误"。当我尝试在应用程序内部运行报表时,我得到随机结果(某些字段在报表上显示完全正常(非旋转字段,同一SP(SP1)中的其他字段(透视字段)导致错误(另一次它将运行/另一次它不会。我经过并将每个字段单独放在那里,保存报告,运行程序以查看哪个丢错,哪个没有。有一段时间,一些转向字段显示在一个SP1中,但是当我回到那个字段时,它决定不显示。另一个SP(SP2),没有转动字段想要工作......我不# 39;知道如何更好地解释这一点而不进入故事。)SP在SQL管理器中的工作非常好。我得到了我想要的结果.SP在水晶设计师中工作得非常好,一切都显示......没有错误。这是表格的样子:
- > table:ticketfactorDT
TicketID ~ DrectionType ~ TicketSeries ~ SeriesCatagory~ FactorID ~ FactorValue
554559 ~ I ~ GRAIN ~ grain ~ BCFM ~ 0
554559 ~ I ~ GRAIN ~ grain ~ DMG ~ 0
554559 ~ I ~ GRAIN ~ grain ~ MST. ~ 15
554559 ~ I ~ GRAIN ~ grain ~ T.W. ~ 56
- >表:商品
CommodID ~ FactorID ~ FactorOrder
CY ~ BCFM ~ 4
CY ~ DMG ~ 3
CY ~ Dock ~ 5
CY ~ MST. ~ 2
CY ~ T.W. ~ 1
- > SP1:
TicketID~TSeries~SCat~DType~0~1~2~3~4~5~6(< - factor order#)
554559~GRAIN~ grain~I~NULL~56~15~0~0~NULL~NULL
- > SP2:
CID~0~1~2~3~4~5~6(< - factor order#)
CY~NULL~T.W。 ~MST。 ~DMG~BCFM~Dock~NULL
SP1 =
SELECT @col2 = ISNULL(@col2 + ', ', '') + QUOTENAME(FactorOrder)
FROM (SELECT distinct FactorOrder FROM Factor) as Factors;
- 选择@ col2
SET @sql2 = N'SELECT TicketID, TicketSeries, SeriesCatagory, DirectionType, ' + @col2 + '
from (SELECT T.TicketID, T.TicketSeries, T.SeriesCatagory, T.DirectionType, FactorValue, FactorOrder
FROM (Factor FT INNER JOIN TicketFactorDT TFD ON FT.FActorID = TFD.FactorID) INNER JOIN Tickets T ON T.TicketID = TFD.TicketID AND T.TicketSeries = TFD.TicketSeries AND T.SeriesCatagory = TFD.SeriesCatagory AND T.DirectionType = TFD.DirectionType) factor
Pivot (
max(FactorValue)
for FactorOrder In(' + @col2 + '))as ordr;'
exec sp_executesql @sql2
SP2 =
----GIVES ME THE FACTOR IDS FROM FACTOR TABLE BASED ON FACTOR ORDER
DECLARE @sql1 as nvarchar(2000);
DECLARE @col1 as nvarchar(2000);
SELECT @col1 = ISNULL(@col1 + ', ', '') + QUOTENAME(FactorOrder)
FROM (SELECT distinct f.FactorOrder FROM Factor F inner join Commodity C on c.CommodityID = f.CommodityID) as Factors;
--select @col1
SET @sql1 = N'Select CommodityID, ' + @col1 + '
from (Select FT.CommodityID, FT.factorId, factorOrder
From (Factor FT INNER JOIN TicketFactorDT TFD ON FT.FActorID = TFD.FactorID)) factor
Pivot (
max(FactorID)
for FactorOrder In(' + @col1 + '))as odr;'
exec sp_executesql @sql1
- >对不起,很长的帖子。我希望这不会引起混淆,但我试图提供尽可能多的信息来帮助理解。我在过去的2-3天里一直在这,只是为了得到一条错误信息,我不知道该怎么做/怎么修复,这是非常令人沮丧的。如果任何人有任何想法,提示,尝试的事情,我做错的事情,任何事情都会有所帮助。大声笑。我只是迷失在这一个
Inhouse程序是windows形式的VB6。
Crystal报告:9,版本高于
Sql manager studio 2012
报告数据库类型是OLE DB(ADO)
报告提供者是SQLOLEDB
我的机器有水晶8,9,11& 13(我相信)......拥有最新的发动机组