ASP调用DLL的问题,在线等…(觉得分不够的话,另外开贴再给!)

rwj81 2003-08-27 10:30:05
我用VB6的data report做了个生成数据报表的Active DLL,然后在WIN 2000的组件服务里注册了该组件。在VB里试着引用一切正常,然而,在ASP下调用却总出错,有高手知道吗???
附:
ASP相关代码:
dim objreport
set objreport=Server.CreateObject("Pro_Report.Cls_Report")
str="select * from dbo.info_archieves order by num"
b = objreport.Show_Report(str)
if Not b Then
response.write "report 失败!" & b
End If
*************
VB组件的原理是这样的:入口参数为如上的SQL语句,通过组件连接数据库,生成Recordset,再生成报表显示出来。若成功,则返回TRUE,否则,返回FALSE。

结果,每次都是在浏览器返回:report 失败!False

另:有什么小巧、好用、免费的报表工具吗?
Active Report不错,可怎么报表每页下面都有条黄色的“Copyright……”,有法子去掉吗?
...全文
121 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yonghengdizhen 2003-08-29
  • 打赏
  • 举报
回复
服务端代码不可能生成UI(这是服务程序特有的限制)
所以你的调用是不可能成功的.即使成功也是毫无意义,因为界面在服务器,浏览者却在客户端
这和在服务端脚本不能用msgbox是一个道理.
aiailove 2003-08-29
  • 打赏
  • 举报
回复
mark
rwj81 2003-08-29
  • 打赏
  • 举报
回复
哎,这个问题,他怎么就没人知道呢?
郁闷!
rwj81 2003-08-29
  • 打赏
  • 举报
回复
yonghengdizhen(IUnknown::AddRef()) :
那我要实现调用我自己的报表工具,应该怎么办?能给些建议吗?

如果有源代码是最好的了。
萝卜波 2003-08-28
  • 打赏
  • 举报
回复
你做的这个不是组件吧
应该是控件来的哦
rwj81 2003-08-28
  • 打赏
  • 举报
回复
自己顶一下,这么好的问题,别沉下去了,呵呵

大家快来帮忙啊!!!
萝卜波 2003-08-28
  • 打赏
  • 举报
回复
我也替你把你的代码贴出来,看看其他人有没有更好的解决方法吧

Private WenScriptingContext As ScriptingContext
Private WenApplication As Application
Private WenRequest As Request
Private WenResponse As Response
Private WenServer As Server
Private WenSession As Session

Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)
Set WenScriptingContext = PassedScriptingContext
Set WenApplication = WenScriptingContext.Application
Set WenRequest = WenScriptingContext.Request
Set WenResponse = WenScriptingContext.Response
Set WenServer = WenScriptingContext.Server
Set WenSession = WenScriptingContext.Session
End Sub

Public Sub OnEndPage()
Set WenScriptingContext = Nothing
Set WenApplication = Nothing
Set WenRequest = Nothing
Set WenResponse = Nothing
Set WenServer = Nothing
Set WenSession = Nothing
End Sub

'连接数据库
Public Function conndb(str As String) As ADODB.Recordset
Dim objconn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim sqlConn As String
sqlConn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;pwd=sa;Initial Catalog=Archives_DB;Data Source=RWJ"
objconn.ConnectionString = sqlConn
objconn.Mode = adModeReadWrite '连接方式
objconn.CursorLocation = adUseClient '游标类型
objconn.Open sqlConn '连接数据库
rst.Open str, objconn, 3, 3
Set conndb = rst

Set objconn = Nothing
Set rst = Nothing
End Function

'从ASP接收sqlstr,再调用conndb生成rst,生成报表
Public Function Show_Report(sqlstr As Variant) As Boolean
On Error GoTo errdo
Dim rst As New ADODB.Recordset
Dim str As String
str = sqlstr
Set rst = conndb(str)

If rst.EOF Then
MsgBox "没有符合要求的数据"
GoTo errdo
End If

Set DataReport1.DataSource = rst
DataReport1.Show

Show_Report = True
Set rst = Nothing
Exit Function
errdo:
Show_Report = False
End Function
萝卜波 2003-08-28
  • 打赏
  • 举报
回复
说下我的看法吧:

VB 6.0 专业版和企业版中的数据报表设计器 (Data Report Designer) 是用来实现打印数据库数据的有力工具,

vb组件开发主要还是作些比较复杂的处理,加快代码执行效率,
同时,提高安全性吧,一般是不涉及到 表示层 ,

如果要那样做的话, 可以建立一个activex ocx 工程
把所有的功能在这个控件里面实现,然后嵌入到web 页面中
萝卜波 2003-08-27
  • 打赏
  • 举报
回复
sorry
是carrot@reachgift.com
rwj81 2003-08-27
  • 打赏
  • 举报
回复
carrotbill(萝卜)兄弟,你的邮箱怎么发不过去???
萝卜波 2003-08-27
  • 打赏
  • 举报
回复
1) 你给vb代码给我
carrot@reachgfit.com
我给你调试看看

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧