文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» PowerBuilder » PB调用金税组件接口的问题,急!!!       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: PB调用金税组件接口的问题,急!!!  ( 查看:560  回复:10 )   
 该主题悬赏的20无忧币已被全部领完 
 
baoxiangxiang
新新人类  点击可查看详细



帖子 4
精华 0
无忧币 8
积分 8
阅读权限 20
注册日期 2008-5-27
最后登录 2008-6-2 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-5-27 15:54   标题:PB调用金税组件接口的问题,急!!!
上一帖 |
目前平台是PB7.0,金税提供了一个组件接口,这样可以直接用本公司管理系统调用金税软件打印各种发票.
在PB中需要调用一个addedrealtax.dll.第一步是开卡,从金税提供的软件方案看是使用opencard(),
申明了全局外部函数:
FUNCTION int opencard() LIBRARY "C:\Program Files\金税\BIN\addedrealtax.dll"
然后直接使用函数opencard(),系统报错为:
Error opening DLL library addedrealtax.dll for external function at line 1 in function opencard()....
请问我这样调用行不行,是不是对DELPHI写的DLL(金税是用DELPHI开发的)有特殊的要求?



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-5-27 15:541楼
[ 顶部 ]
 
jnf009
新新人类  点击可查看详细



帖子 2
精华 0
无忧币 30
积分 2
阅读权限 20
注册日期 2008-6-5
最后登录 2008-6-13 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-5-27 15:55  该回复被 baoxiangxiang 奖励 20 点无忧币
此回复于2008-06-09 09:40被 ribut9225 评为最佳答案

//下面是个PB调用例子你看看,我测试过了可以调用
//调用前需要注册一下金税提供的DLL文件,如:regsvr32 D:\weiliang\20080528\Tax\TAX\TaxCardX.dll
//如果在安装过金税系统的电脑则可以不用注册
//这里用到的是OLE对象,不能在外部函数中定义,因为金税很多方法是在里面的对象里面。
long ll_return
OLEobject  my_test
my_test = CREATE OLEObject

ll_return = my_test.connecttonewobject("TaxCardX.GoldTax")  //导入金税TaxCardX.dll中的GoldTax对象
///因为OpenCard()是在GoldTax里面
IF ll_return < 0 THEN
    DESTROY my_test
    MessageBox("Connecting to COM Object Failed","Error: " + String(ll_return))
    Return
elseif ll_return = 0 then
        MessageBox("","OK")
END IF

OpenCard()  //打开金税卡



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-5-27 15:552楼
[ 顶部 ]
 
baoxiangxiang
新新人类  点击可查看详细



帖子 4
精华 0
无忧币 8
积分 8
阅读权限 20
注册日期 2008-5-27
最后登录 2008-6-2 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-5-27 15:55 
再摘录一部分金税提供的接口文挡:
=====================================
开启金税卡  
方法:OpenCard();  

功能:本项功能必须在其它功能前首先调用,如果尚未调用
此功能而调用其它功能,则会产生返回码为1的尚未开启金税卡
错误。它开启并占用金税卡设备,初始化各项参数,分配软件所
需各项资源;  

传出:  

InvLimit – 开票限额, 金税卡发票开具价税合计限额  

TaxCode – 本单位税号  

TaxClock – 金税卡时钟  

MachineNo – 开票机号码,主开票机为0  

IsInvEmpty – 有票标志,0为金税卡中无可开发票,1为有
票  

IsRepReached – 抄税标志,0为未到抄税期,1为已到抄税
期  

IsLockReached – 锁死标志,0为未到锁死期,1为已到锁死
期  

======================================


调用方式举例  

下面仅以C++ Build语言为例分几种情况作一举例:  

程序要实现的流程如下:首先要创建组件实例GoldTax,然后调用
OpenCard()方法打开金税卡,如果成功打开金税卡了,这时就可以传入开票数
据了(传入发票整体信息前调用InvInfoInit()方法初始化发票整体信息各项
属性。)。记住:开票完毕时,要关闭金税卡,释放对金税卡的设备占用,释放
其他占用的资源。
GoldTax = new TGoldTax( this);  
GoldTax->OpenCard();  
……  
此处添加实现各种功能的具体代码
……  
GoldTax->CloseCard();  
delete GoldTax;



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-5-27 15:553楼
[ 顶部 ]
 
ribut9225
主版主  点击可查看详细


开坛元老   内阁大臣   诚信兄弟   主版主专用   巨蟹座  
帖子 3065
精华 1
无忧币 5692
积分 4076
阅读权限 150
来自 (保密)
注册日期 2006-6-22
最后登录 2008-9-5 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-5-29 08:36 
这个函数声明应该比较简单
不知道对方是怎么写这个DLL的,PB调用DLL有一些特殊要求
你可以看看偶的BLOG
偶给你一连接:
http://ribut9225.blog.51cto.com/24441/73193



用户必读,51CTO积分系统调整通知
2008-5-29 08:364楼
[ 顶部 ]
 
baoxiangxiang
新新人类  点击可查看详细



帖子 4
精华 0
无忧币 8
积分 8
阅读权限 20
注册日期 2008-5-27
最后登录 2008-6-2 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-5-30 13:18   标题:回复 #3 ribut9225 的帖子

感谢答复,看了你给的连接,看来PB调用dll确实比较麻烦的,而且金税也不可能为我们单独去改写DLL文件了.
这是对方提供的接口文挡中一部分:
==================================================
对于自主或委托开发管理信息系统的企业,我们开发了
Windows版防伪开票组件接口软件,将防伪税控开票功能嵌入企
业销售软件内,为真正实现防伪税控防伪税控系统与企业管理信
息系统的无缝连接创造了必要的条件。

组件调用软件基于ActiveX规范,提供标准开票界面和后台
命令两种接口方式,实现企业日常开具、作废和打印税控发票的
功能,为需要实时打印发票或有专门开票要求的企业提供了适宜
的解决方案。

对于可以采用通用开票界面的销售软件,推荐使用标准开票
界面接口方式,此时本软件提供与防伪税控开票软件相同的开
票、查询和作废用户界面,并将发票数据通过组件接口传入销售
软件。采用这种方式,企业的销售软件不用开发专用发票开票界
面,开票界面比较规范统一。

对于开票时需要录入辅助数据,或对发票填写方式有所约
束,必须具备专门或行业性开票界面的企业,则应采用后台调用
开票命令的接口方式。这种方式的开票数据必须从企业销售软件
的开票界面取得,通过定义的COM接口传入接口软件,通过接
口软件将开票数据记入防伪开票软件数据库并写入金税卡。

安装本软件之前,必须首先安装防伪税控系统硬件设备,并


安装Windows版防伪税控开票子系统软件。在本软件安装后,
进入防伪税控开票子系统,选择系统注册功能,将软件注册版本
设为组件接口版,然后输入从我公司取得注册特征码,才能使用
本软件。

本软件使用时,必须接好防伪税控设备,插好本企业IC卡,
并且没有任何软件访问金税卡设备,本软件必须独占使用金税
卡。



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-5-30 13:185楼
[ 顶部 ]
 
baoxiangxiang
新新人类  点击可查看详细



帖子 4
精华 0
无忧币 8
积分 8
阅读权限 20
注册日期 2008-5-27
最后登录 2008-6-2 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-5-30 13:20 
在不能改变这个条件的情况下,还有其他解决的办法吗?我看到说对 COM类型的组件,可以使用connecttonewobject()的方法,不知可行否?



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-5-30 13:206楼
[ 顶部 ]
 
ln_lz
新新人类  点击可查看详细



帖子 2
精华 0
无忧币 4
积分 2
阅读权限 20
注册日期 2008-6-5
最后登录 2008-6-5 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-5 10:11 
我们连接的是这个!你可以试一下!  
connecttonewobject("TaxCardX.GoldTax")



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-6-5 10:117楼
[ 顶部 ]
 
jnf009
新新人类  点击可查看详细



帖子 2
精华 0
无忧币 30
积分 2
阅读权限 20
注册日期 2008-6-5
最后登录 2008-6-13 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-5 13:54 
楼上的connecttonewobject("TaxCardX.GoldTax")是在PB中调用吗?请问下你们是怎么申明和调用的?能否写具体点?谢谢了!



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-6-5 13:548楼
[ 顶部 ]
 
pan_wei_jie
新新人类  点击可查看详细



帖子 1
精华 0
无忧币 9
积分 1
阅读权限 20
注册日期 2007-11-18
最后登录 2008-6-6 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-6 10:47 
pan_wei_jie@163.com兄弟,我也在研究这个问题,咱们一起讨论一下?

我邮箱:pan_wei_jie@163.com

MSN也一样:pan_wei_jie@163.com



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-6-6 10:479楼
[ 顶部 ]
 
chenwenwei
新新人类  点击可查看详细



帖子 6
精华 0
无忧币 4
积分 6
阅读权限 20
注册日期 2007-3-16
最后登录 2008-7-11 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-7-11 11:24 
二楼说的对是TaxCardX.dll不是addedrealtax.dll,开票系统是CBuilder开发的,如果你公司购买组件接口的话有详细的PB开发的demo,本人开发了一个转换接口程序,具有拆分合并功能也是通过调用TaxCardX.dll直接开启金税卡开具发票。



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-7-11 11:2410楼
[ 顶部 ]
 
chenwenwei
新新人类  点击可查看详细



帖子 6
精华 0
无忧币 4
积分 6
阅读权限 20
注册日期 2007-3-16
最后登录 2008-7-11 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-7-11 11:27 
addedrealtax.dll是开票系统中的另外一个动态库,而且dll已加密处理



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-7-11 11:2711楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号