敬请赐教,敬请正解:一个asp调用vb写的dll中的自定义变量的问题

zhuyb81 2010-07-28 10:51:44
VB的dll中的代码

Option Explicit
Public Enum enumQuery
A_zlfx = 0
A_skfx = 1
End Enum
Private m_enmQuery As enumQuery
Private para As QueryPara_Stru '参数结构变量
Private m_CN As ADODB.Connection
Private m_tmpTable As String '临时表名
'查询对象编码、名称;明细对象编码、名称
Private cCXCode As String, cCXName As String, cMXCode As String, cMXName As String
Private CXXM As String, MXXM As String '查询项目,明细项目
Private FLName As String, MXName As String '查询项目名称,明细项目名称
Private BBflag As Boolean '币种标志:True原币False本币
Private m_sAuthCust As String '客户权限
Private m_sAuthVend As String '供应商权限
Private m_sAuthDept As String '部门权限
Private m_sAuthCMType As String '合同类型权限
Private m_sAuthUser As String
Dim oAcc As Object
'查询: Query()
'主要功能:根据输入应收应付账龄条件,输出应收应付账龄分析结果数据
'参数说明:
' 输入参数:
' oLogin 为了不依赖于Login对象定义为Object,传入Login对象
' xmlCondition: 查询条件用XML格式保存
' <condition update='1'>
' <page>1</page>
' <pagesize>100000</pagesize>
' <bar>1</bar>
' <icxtype>0</icxtype>
' <imxtype>0</imxtype>
' <where></where>
' <cexch_name></cexch_name>
' <denddate>2004-02-29</denddate>
' <fxMonth>6</fxMonth>
' <fxtype>0</fxtype>
' <showtype>0</showtype>
' <option includeunverify='0' showcredit='1' fxstyle='0' fxdate ='1' paycondition='0' inspread='1' order='1'/>
' </condition>
' 输出参数:
' rstData,xmlData , rstFormat, xmlPageInfo, xmlErrMsg
' rstData:结果记录集,C/S返回,无小计、合计
' xmlData:结果XML,B/S返回包含小计、合计等信息
' xmlFormat: 格式,包含列序号、列标题、列宽度等信息;
' xmlErrMsg:为错误处理返回的错误信息
' xmlPageInfo:为数据返回的分页信息
' enmQuery:分析枚举
'返回值:
' 查询成功返回TRUE;出现错误返回FALSE,并将错误信息写入xmlErrMsg
Public Function Query(oLogin As Object, ByVal xmlCondition As String, _
rstData As ADODB.Recordset, xmlData As String, _
xmlFormat As String, _
xmlPageInfo As String, xmlErrMsg As String, ByVal enmQuery As enumQuery) As Boolean



ASP代码
<!--METADATA TYPE='typelib' FILE='d:\U8SOFT\ufcomsql\u8login.dll' -->
<!--METADATA TYPE='typelib' FILE='d:\U8SOFT\ufcomsql\U8ArAnalyse.dll' -->
<%

'========U8登陆接口,用于取得用户登陆的服务器,帐套号,年度,用户名,登陆日期=========

'==调用U8登陆接口==
pSubId = "DP" '登陆正式版
pUserId = "000001" '登陆用户名
pPassword = "" '登陆密码
cSrv = "localhost" '登陆服务器名
pDate = "2010-07-27" '登陆日期
pAccId = "010" '登陆帐套号
cSerial = "" '硬件序列号
' response.write u8login(pSubId, pUserId, pPassword, cSrv, pDate, pAccId, cSerial)
'====读取用户提交的登陆信息,申请登陆====
'function u8login(pSubId, pUserId, pPassword, cSrv, pDate, pAccId, cSerial)
' Set sysLogin = server.createobject("UFSoft.U8.Framework.Login.UI.clsLogin")
' If sysLogin.login(pSubId, pUserId, pPassword, cSrv, pDate, pAccId, cSerial) = False Then
' u8login=sysLogin.ErrDescript
' Else
' u8login="ok"
' End If
'end function

Set sysLogin = server.createobject("UFSoft.U8.Framework.Login.UI.clsLogin")
sysLogin.login pSubId, pUserId, pPassword, cSrv, pDate, pAccId, cSerial

'查询: Query()
'主要功能:根据输入应收应付账龄条件,输出应收应付账龄分析结果数据
'参数说明:
' 输入参数:
' oLogin 为了不依赖于Login对象定义为Object,传入Login对象
' xmlCondition: 查询条件用XML格式保存
' <condition update='1'>
' <page>1</page>
' <pagesize>100000</pagesize>
' <bar>1</bar>
' <icxtype>0</icxtype>查询对象 0指客户,1指客户分类
' <imxtype>0</imxtype>明细对象 0指客户,1指存货
' <where></where>
' <cexch_name></cexch_name>币种
' <denddate>2004-02-29</denddate>截止日期
' <fxMonth>6</fxMonth>分析月份
' <fxtype>0</fxtype>分析类型 0指应收款,1指预收款,2指余额
' <showtype>0</showtype>显示类型 0指帐龄,1指月份
' <option includeunverify='0' showcredit='1' fxstyle='0' fxdate ='1' paycondition='0' inspread='1' order='1'/>
' </condition>includeunverify是否包含未审核,showcredit是否显示信用额度,fxstyle分析方式 0点余额 1最终余额,fxdate分析日期 0到期日 1立账日,inspread按账期内展开 0是 1否,order排序规则0升 1降
' 输出参数:
' rstData,xmlData , rstFormat, xmlPageInfo, xmlErrMsg
' rstData:结果记录集,C/S返回,无小计、合计
' xmlData:结果XML,B/S返回包含小计、合计等信息
' xmlFormat: 格式,包含列序号、列标题、列宽度等信息;
' xmlErrMsg:为错误处理返回的错误信息
' xmlPageInfo:为数据返回的分页信息
' enmQuery:分析枚举
'返回值:
' 查询成功返回TRUE;出现错误返回FALSE,并将错误信息写入xmlErrMsg

xmlCondition = "<condition update='1'><page>1</page><pagesize>100000</pagesize><bar>1</bar><icxtype>0</icxtype><imxtype>0</imxtype><where></where><cexch_name></cexch_name><denddate>2010-07-27</denddate><fxMonth>6</fxMonth><fxtype>0</fxtype><showtype>0</showtype><option includeunverify='0' showcredit='1' fxstyle='0' fxdate ='1' paycondition='0' inspread='1' order='1'/></condition>"

'dim zhu

set U8ArAnalyse_obj = server.CreateObject("u8aranalyse.clsaranalyse")

'Public Function Query(oLogin As Object, ByVal xmlCondition As String, rstData As ADODB.Recordset, xmlData As String, xmlFormat As String, xmlPageInfo As String, xmlErrMsg As String, ByVal enmQuery As enumQuery) As Boolean
set rstData = server.CreateObject("ADODB.Recordset")
Dim xmlData
xmlData = ""
Dim xmlFormat
xmlFormat = ""
Dim xmlpageinfo
xmlpageinfo = ""
Dim xmlErrmsg
xmlErrmsg = ""

set enumQuery = U8ArAnalyse_obj.enumQuery


'dim xmlCXXMInfo As String


U8ArAnalyse_query = U8ArAnalyse_obj.Query(sysLogin,xmlCondition,rstData,xmlData,xmlFormat,xmlPageInfo,xmlErrMsg,enmQuery)

调用后提示
Microsoft VBScript 运行时错误 错误 '800a01b6'

对象不支持此属性或方法: 'U8ArAnalyse_obj.enumQuery'
...全文
71 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhuyb81 2010-07-28
老师,asp部分的代码就是完整的,现在这个是测试阶段
回复
zhongshan99 2010-07-28
贴一个完整的asp部分的代码,看看调用Query传递的参数
回复
zhuyb81 2010-07-28
老师,刚才说错了,是把"set enumQuery = U8ArAnalyse_obj.enumQuery
U8ArAnalyse_obj.enumQuery" 改成 "enmQuery = 0",现在是
Microsoft VBScript 运行时错误 错误 '800a000d'
类型不匹配: 'U8ArAnalyse_obj.Query'
回复
zhongshan99 2010-07-28
对象不支持此属性或方法: 'U8ArAnalyse_obj.enumQuery'


Private m_enmQuery As enumQuery
这个不是属性

如果需要属性,使用Property进行定义
比如
Public Property Let EQuery(Byval e as enumQuery)
m_enmQuery = e
End Property
回复
zhuyb81 2010-07-28
老师,直接把"set enumQuery = U8ArAnalyse_obj.enumQuery
U8ArAnalyse_obj.enumQuery" 改成 "enmQuery = 0"后问题依旧
回复
zhongshan99 2010-07-28
set enumQuery = U8ArAnalyse_obj.enumQuery
U8ArAnalyse_obj.enumQuery不存在
回复
zhuyb81 2010-07-28
没回的?
回复
mocom 2010-07-28
可以直接输出A_zlfx或者A_skfx这两个枚举么?
回复
zhongshan99 2010-07-28
对比了一下,没发现问题,你把ASP里传递给Query的参数类型都输出一下看看,然后同DLL里的Query函数对比
Call Response.Write(TypeName(sysLogin))
Call Response.Write(TypeName(xmlCondition))...
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告