理论我认为可以,为什么实际上就是不行?请大家看看,关于OCX控件

baby21st 2003-11-18 09:26:54
描述:
(1) 在VB6中新建一ActiveX Control,放了一个Lable 控件用于显示结果
(2) 测试代码如下:
Dim con As New ADODB.connection
Private Sub UserControl_Initialize()
On Error Resume Next
con.Open "Driver={SQL SERVER};SERVER=192.168.0.100;Database=HHTEST;UID=sa;PWD=*****"
sql = "insert into info (name) values ('VBUDL') "
con.Execute sql
If Err = 0 Then
L.Caption = "OK"
Else
L.Caption = "NO"
End If
End Sub
(3) 目的:
测试控件操作数据库是否一定要在客户端建立DSN


原由:由于库里的一些数据要RichText才可以显示,所以只有用控件在网页显示
在控件中访问数据库刚开始我是用DSN,在本机可以实现,当别人的机器访问时就找不到DSN,不可能在别人机子上建立DSN吧。所以想不用DSN连接数据库,才有上面的测试,在本机上上面的代码可以运行,但是在别人的机子上,访问却不能实现,我想了好久,现论上上面的代码别人机器请求页面也应该可以实现的,不过就是不行:(

请大家看看这样的思路是否正确?
或者还有什么其他的方法也可以实现?

还有一个问题现在也提出来吧,自写的控件在网页中会提示“没有安全验证,提示安装”如何解决这个问题呢?
谢谢各位,分不够再加:)

...全文
102 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
guolei0813 2003-11-19
  • 打赏
  • 举报
回复
我顶
yunfeng007 2003-11-19
  • 打赏
  • 举报
回复
用asp做中间层,数据库操作在asp中实现,返回数据在richtext中实现。
baby21st 2003-11-19
  • 打赏
  • 举报
回复
楼上说的是,昨天我也想了,可以这样获取焦点事件,当控件失去焦点时把要传出的参数赋给出参,在页面有操作时读取出参,我想这样可以实现,不过我要做的控件比较麻烦
现在上头说还是用DSN方法连接数据库,在客户端建DSN,让我去找找看关于多客户端同时连接数据库时占用系统资源的大少,唉~~

谢谢各位的大力支持,中午结帖




AresChen 2003-11-19
  • 打赏
  • 举报
回复
我想你应该对客户端教本有些了解吧,比如,鼠标移到表格的一行上让它变颜色这种客户端教本,实际上,ActiveX控件的事件在HTML中的相应与之也类似。最好的学习方法是用Visual Interdev去学,你可以试着在InterDev中加入一个ActiveX控件,然后就像在VB中一样去设置属性、事件等,在看看InterDev生成的源码。更详细的,我想不用在多说了吧。
baby21st 2003-11-19
  • 打赏
  • 举报
回复
楼上兄弟说得一开始就是这样想的,但是这样有几个不方便处
(1) B/S 模式下在客户端再装个什么东西总觉得不好
(2) 服务器上每增加一个数据库都要在客户机上相应的增加,如果客户端有几百至上千呢?


Ranma_True 2003-11-19
  • 打赏
  • 举报
回复
可以在他人机器上建立dsn的
baby21st 2003-11-19
  • 打赏
  • 举报
回复
早上来了,我再顶一下!!!
海牛 2003-11-18
  • 打赏
  • 举报
回复
你试试在VB中,客户端是否能运行啊!
baby21st 2003-11-18
  • 打赏
  • 举报
回复
怎么没人啊?
baby21st 2003-11-18
  • 打赏
  • 举报
回复
To AresChen(AresChen):
说的有理
如果这种方法确实行不通,那只有另想办法

但是怎么才能得到控件的消息呢,我是指:比如我按控件中的确定键后应该把控件中东西传出到网页中?控件中的每一个操作怎么才能及时的反馈给网页,然后通过服务器脚本传回服务器

To hhjjhjhj(大头) :
可能现成的满足不了需求:(
而且我也没用过
hhjjhjhj 2003-11-18
  • 打赏
  • 举报
回复
不用自己做控件,网页中用RemoteData Control和Richtextbox二个现成的控件就行了
AresChen 2003-11-18
  • 打赏
  • 举报
回复
不太清楚你需求,试着理解吧,不知道解释的对不对。
先说你的第二个问题,我记得是有个工具可以给你的控件加上数字签名,但也仅此而已,实际上就算通过了Micrsoft的数字签名,也是一样,只能保证当客户端IE的安全级别较高适,不会问都不问就屏蔽调了,所以你的需求可以说无解,只能降低IE的安全级别来解决。
然后是第一个问题。你是需要在客户端连接数据库吗?需要回写数据吗?如果不需要的话,完全用不着去连接数据库,将你所说的richtext的值当作属性在HTML里去设置就行了。如果需要回写数据,但是普通的HTML表单无法满足样式上的需求的话,你可以让你的richtext的控件提供一个比如说是value的属性,其中能够将客户编辑的结果读出来,然后在submit按钮中将这个值赋给一个HTML表单中的文本框中(当然是隐藏的),然后在提交这个form。
baby21st 2003-11-18
  • 打赏
  • 举报
回复
我顶~~

能帮忙帮下忙,帮不上的帮我UP也万分感谢:)
baby21st 2003-11-18
  • 打赏
  • 举报
回复
To shwen(shwen)

你说的两个原因应该都不是
(1) IP地址没有错,可以拼得到,其他页面也可以访问
(2) 都在局域网内,网卡都是100M的,带宽我想也不是问题吧

上面的代码理论是是可以行得通,但不知为什么就是不行,我刚才试了几种直接连的方法,在本机上都 可以,但在客户端就不行了

也想过不过控件中操作数据库,不过因为要从库中读取RTF格式的编码,直接在网页上不好显示,而且编辑还是要操作数据库的
:(
真晕~
baby21st 2003-11-18
  • 打赏
  • 举报
回复
不好意思,到现在才上得去CSDN
刚才我又试了几次,用package and Deployment Wizard 生成了CAB包,在我自己机子上可以运行,然后我到98的机子上试了,提示下载安装,安装后可控件可以运行,但是连不是数据库,错误原因是:Active X Cannot Create object. 我又到XP的机子上去试了,也提示下载,但是点“是”的时候一闪而过,并没有安装。为什么98的机子安装了,XP的机子没有安装呢?

还要麻烦大家

To shwen(shwen) 能说得清楚点吗?
jackclh 2003-11-18
  • 打赏
  • 举报
回复
第一种没试过,第二个问题以前我也遇到过,解决方法是:
用VB的打包程序,把该控件打包成一个Internet安装包,你可以在网页中写入侦测连上的当前用户本机有没有注册过该控件的代码,如果他已注册过,并且在Internet选项中允许未注册的控件下载并能初始化和允许脚本运行,此时网页可正常显示并调用该控件,如果他没有注册过该控件,提示它下载后安装就行了.
shwen 2003-11-18
  • 打赏
  • 举报
回复
这段代码如果运行在你的控件中,而该控件被加载到客户端的网页上的时候,连接失败的几个原因可能有:
1、ConnectString 中给出的 IP地址不是公共IP 地址,该客户端根本无法访问到该 IP
2、客户端和主机之间的通信带宽不够,连接超时

从数据库中往客户端发数据不应该是这样的,客户端不应该直接去建立数据库连接,而应该在中间层建立数据连接对象,把数据返回给客户端。否则即使能够连上,客户端数量一多,数据库连接也早把连接池或者许可证用光了。
nange 2003-11-18
  • 打赏
  • 举报
回复
up,大家帮帮手!谢谢!!!

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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