脚本中ole对象问题,在线等,请热心的高手帮忙!

mandla 2005-04-30 10:51:07
本人在开发中遇到个把EXCEL表数据导入DATAWINDOW,在脚本中声明OLE对象的问题,以下是我的步骤,如果有什么问题,求教!
1。新建工程
2。新建WINDOW
3。加入DATAWINDOW
4。加入按钮
5。新建一个DATAWINDOW对象。
6。在按钮点击事件中加入以下代码:
exceloleobject = CREATE OLEObject
result = exceloleobject.connecttoobject(pathname+"\"+filename,"excel.application")
//exceloleobject.connecttoobject( pathname+"\"+filename)
if result<>0 then
result= exceloleobject.connecttonewobject( "excel.application" )
if result<>0 then
messagebox("OLE错误","不能新建Excel表")
return
end if
end if
exceloleobject.DisplayAlerts=False
exceloleobject.application.workbooks.Open(pathname+"\"+filename)
...全文
110 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
441188 2005-05-26
  • 打赏
  • 举报
回复
换个角度考虑问题阿,,,,
给你一个提示。。。有什么问题告诉我

用临时表搞定传送blob值

具体实现步骤如下:


  一、建立OLE字段


  在本例中,建立一个表Paint,内含2个字段,一个字段名为ID,另一个字段名称作File。进入PB的Database画笔来建此表。ID字段取type为intege,不许为空;File字段type为Image,可为空,并选ID为主键。注:File字段的数据类型即所谓Blob类型,但不同DBMS中取的名字不同,如watcom SQL称为long birary,而SQL Server为Image或Text。


  二、设置Autocommit


  在使用SYBASE SQL Server数据库时,含有OLE字段的DataWindow所使用的Transaction Object(事务对象)中的Autocommit项必须置为TRUE,在设计DataWindow前,可通过Preference画笔,选择Database图标,将其中的Autocommit项赋值为1。


  三、设计数据窗口


  在DataWinow画笔中,打开建好的Paint表,但此时只选择ID字段进行显示,而先不要选择File字段(我们将在设计窗口中再添加此字段)。DataWinow的设计窗口,从Object菜单中选择OLE Database Blob项,然后在设计窗口的适当位置点鼠标左键,此时Database Birary/Text Large Object对话窗显示出来。逐项填写对话窗:

  在Name项,填入适当名字,此项可选,但起了名字后,可在程序中引用。

  在Client Class中填入DataWinow,可选。

  在ClientName中填入当前Data Window的名字,可选。

  在Table中选择Paint表。

  在Large Binary/Text Columns中,选择File字段。

  在Key Clause中,选id=:id,该项用于构造where子句,即where id=:id,用于定位相应记录。

  在File template中,填入一个bmp文件名,或通过Browse键来查找一个文件,比如选择arcade.bmp。

  在OLE Class,Description(Only Class is Used)中,通过下拉菜单选择Paintbrush。

  在Client Name Expression:中,填入某一字符串表达式,该表达式将OLE Server运行时,显示在其Title处,如填入″BMP File″+String(id)。

  按OK键。

  此时,PB关闭该对话窗,并回到DataWindow的设计窗口,OLE字段以一个小方框的形式显示出来。一般情况下,运行该DataWindow时,上述小方框不显示出来。因此,为了识别该OLE字段在DataWindow中的位置,可以在该小方框中摆放一个可识的东西,如一个椭圆。因此在DataWindow显示时,只要双点该椭圆,即可激活OLE Server。

  四、预浏览(Preview)OLE对象

  在DataWindow的设计窗口下,点按Preveiw图标,然后点按Insert图标,在Paint表中添加一行,填入id,然后双点椭圆,此时Paintbrush被激活。同时打开arcade.bmp,做一些修改,然后从Paintbrush的File菜单中选择Update项,来更新你的修改,此时OLE Server将修改信息送回DataWindow,然后通过选择File菜单中的Close项关闭Paintbrush,并回到DataWindow,此时在你的DataWindow中OLE字段所在处显示出了Paintbrush所画的图标。按Upd DB图标,将OLE数据存入数据库中。以后,从库中查出Paint表中的记录时,可以通过双点OLE对象来操作,方法同上。

哈哈 好东西大家分享哦 :) 我的邮箱地址 jl441188@163.com
princelily 2005-04-30
  • 打赏
  • 举报
回复
帮顶!

754

社区成员

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

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