将数据库从SQL Server 7切换到SQL Server 2008后,我遇到了报告问题 . 报告在我们的旧服务器上正常运行,它是Server 2000,并且再次运行SQL Server 7.我们必须将DSN驱动程序更新为指向新数据库 . 现在当有人运行我们的报告时,他们会收到此错误:
我试图将主数据库兼容级别降低到SQL Server 2000(80),我想也许它与用户登录有关 . 报告从中提取的数据库正在与SQL Server 2000(80)的兼容级别上运行 .
我试图谷歌报告错误,但我看到的一切与我的问题无关 . 我试图重新安装水晶报告,这有助于解决我可能遇到的任何问题,但这次没有用 .
我也试图“修复”报告 . 在水晶中,您可以修复报告以确保它指向正确的数据库 . 我没有修复任何其他报告,他们工作正常 .
我试过针对SQL Management Studio测试查询,我正在为报告提取我想要的数据而没有错误 . 我知道查询正在运行,所以它不能是声明 .
我已下载并安装了crystal report runtime 8.5,重新启动了计算机并重新报告了该报告 . 我仍然得到相同的结果 .
到目前为止,据我所知,问题仅在于此报告 . 我们的VB6项目中有其他报告可以正常工作 . 以下是运行报告的代码:
Private Sub cmdPrintPo_Click()
Dim result As Variant
repSinglePo.ReportFileName = ReportDirectory + "\singlepo.rpt"
repSinglePo.Destination = crptToPrinter
repSinglePo.CopiesToPrinter = 1
repSinglePo.Connect = "DSN = clearspan;UID = " + glUserName + ";PWD = " + glPassword + _
";DSQ = " & gsDatabaseName
repSinglePo.SQLQuery = _
"SELECT" + _
" PO.PO_Num, PO.Supplier, PO.DateOrdered, PO.DateRequired, PO.Terms, PO.Freight, PO.FOB, " + _
" POItems.PO_Num, POItems.Quantity, POItems.Description, POItems.Item, POItems.Price, POItems.KeyNum " + _
" From" + _
" PO PO," + _
" POItems POItems" + _
" Where" + _
" PO.PO_Num = POItems.PO_Num and PO.PO_Num = " + lblPONum.caption
'Print Original Po and then a copy
result = repSinglePo.PrintReport
repSinglePo.ReportFileName = ReportDirectory + "\po-copy.rpt"
result = repSinglePo.PrintReport
If result = 0 Then
MsgBox "PO has been printed"
Else
Select Case CLng(result)
Case 20520
DisplayErrorCode ("PrintingAlreadyStarted")
Case Else
MsgBox "Error while printing PO. Error code: " + str(result) & vbCrLf & repSinglePo.LastErrorString
End Select
结束如果结束子
正如你在上面的图片中所说,代码炸弹在:
Case Else MsgBox“打印PO时出错 . 错误代码:”str(result)&vbCrLf&repSinglePo.LastErrorString End Select
我试图改变select语句,认为两个版本的感知可能存在差异 . 我所做的一切似乎都没有 . 有人能指出我正确的方向吗?谢谢你提前帮助 .
3 回答
是否要加入在各自的PO_Num字段中具有相同值的表PO和POItem?我相信首选的语法是:
Crystal 8 rpt文件保留了数据连接信息,即使在运行时更改细节,有时也无法清除这些信息
建议如下:更改您的rpt文件以指向新数据库,您需要刷新并预览报告,确保它从新数据库中获取数据 .
希望能帮助到你 ..
经过数周和数周的工作,我找到了一个解决方法 . 到目前为止,这是解决问题的唯一方法 . 我不得不在Visual Studio之外打开水晶报表视图 . 然后我不得不打开报告问题的报告 . 之后,我运行了应用程序并在应用程序中打开了报告 . 该报告会打开很好,可以打印 . 然后我会将应用程序打开,然后将报告保存在查看器中(再次在应用程序旁边,以及visual studio) . 在我这样做之后,我们再也没有从报告中找到问题 .