读书人

怎么进行网络传输stream形式的ole对象

发布时间: 2012-03-12 12:45:33 作者: rapoo

如何进行网络传输stream形式的ole对象?
各位大哥,小弟最近在编写一个网络版管理软件,由于水平有限,就采用access数据库和netdata控件来开发了。现在涉及提交stream形式的ole对象报错,很是头疼,请大家看看怎么办?有没有别的方法解决?

首先是access数据库在本地时的代码,运行无问题。

Dim mystr As String
If mystr <> "" Then ‘(mystr保存的是照片所在的位置)
Set Cn = New ADODB.Connection
Cn.ConnectionString = ";DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\tmp.MDB"
Cn.Open
Set rs = New ADODB.Recordset
rs.Open "select * from data", Cn, adOpenStatic, adLockOptimistic
Set mst = New ADODB.Stream
mst.Type = adTypeBinary
mst.Open
mst.LoadFromFile mystr
rs.AddNew
rs.Fields("tmp").Value = mst.Read
rs.Update
rs.Close
Cn.Close


使用netdata控件后的代码:
If mystr <> "" Then
Set mst = New ADODB.Stream
mst.Type = adTypeBinary
mst.Open
mst.LoadFromFile mystr
form1.db.Execute "insert into 基本信息 (姓名,性别,年龄,部门,职务,照片) values('" & Text1.Text & "','" & Combo1.Text & "','" & Text2.Text & "','" & Combo2.Text & "','" & Text3.Text & "','" & mst.Read & "')"
Fillfg '刷新fg

这样的话,除了照片这项其他项目都能添加进去,只有照片这项在数据库里是空的,也就是没有数据被提交上去,这是怎么回事啊?请求帮助!

附注关于netdata控件的使用是这样的:
更改原有单机版程序为客户端程序(只须增加两行代码):
1 打开原有的项目,将目录下的cs.mdb移动到刚刚建立的服务器端的目录下。
2 第一步-->>> 注释或删除掉原有ADO本地连接代码
'Public DB As New Connection 'ado对象中的连接对象
3 第二步-->>> 在Form_load事件中,注释或删除掉原有ADO本地连接的代码
'DB.CursorLocation = adUseClient '设置数据库为本地数据库
'DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=cs.mdb;"
4 第三步-->>> 在Form_load中,增加一行代码:
Db.Start "127.0.0.1", "8888"
启动客户端,指定服务器的ip和端口,为了便于测试这里设置的是本机ip
实际应用中需将服务器端运行在远程服务器上,这里就要填远程服务器的域名或ip了。
5 第四步-->>> 在Form_Unload事件中,注释或删除原有的ADO关闭本地连接的代码:
'DB.Close '注释掉原有ADO本地连接代码
然后增加第二行代码:
Db.Down '关闭客户端控件...
6 第五步--->>>加入NetData控件,并且将NetDataClient放到form1上,将它的name改名为DB

[解决办法]
我也在关注此问题,其实是SQL在做怪,应该是长度的限制,form1.db.Execute "insert into 基本信息 (姓名,性别,年龄,部门,职务,照片) values('" & Text1.Text & "','" & Combo1.Text & "','" & Text2.Text & "','" & Combo2.Text & "','" & Text3.Text & "','" & mst.Read & "')"

此语句中,insert into 。。。mst.Read 太长了

读书人网 >VB

热点推荐