[返回]
计算机世界2000年第10期

PB中使用AutoCAD图形数据库

青岛市电信局信息产业有限公司 李树爱

  在PowerBuilder 开发环境的数据库画笔中,利用MS SQL Server 6.X 连接上后台大型数据库MS SQL Server 6.5,建包含image 字段dwg 的表housedata,利用该表做一个数据窗口,再插入OLE blob 类型的控件,选择Autocad Drawing 类型。

  新建一窗口,放置一个OLE 控件和一个数据窗口控件,将刚建好的数据窗口放在该窗口控件中,就可以通过命令按钮的script 编程实现对AutoCAD 图形数据库的操作了。

  程序代码如下:

  1 .按id 号查询某个图形:

long id
blob b
selectblob dwg  
//dwg 字段为blob 类型,
在SQLServer 中为image 类型
   into :b
    from housedata
     where id=:id
     using SQLCA;
  ole_1.objectdata = b 
// 将查询结果放在OLE 控件中
  2 .将激活的AutoCAD drawing OLE 控件中修改或新绘的图形信息存储到后台大型数据库中:

    b = ole_1.objectdata
// 取新的图形数据到bolb 类型变量
    updateblob housedata
        set dwg = :b
         where id = :id
         using SQLCA;
    ......
  注意事项:

  (1) 在Win9 */WinNT 环境中有32K 内存使用限制,这样当查询出的相关AutoCAD 图形信息量较大,在同一个数据窗口显示后滚动时程序会报系统溢出错误信息,可以在程序中用脚本控制,让AutoCAD Drawing OLE 的控件中只显示选中的图形数据。

  (2) 在包含blob 或image 等二进制类型数据窗口中新增blob 或image 字段记录时,应先用insertrow 的方法产生空的blob 或image 类型数据,再根据id 号用updateblob SQL 语句将AutoCAD Drawing OLE 控件中的图形数据更新到新增的记录字段中。

  (3) 后台大型数据库的管理非常重要,因为AutoCAD 图形信息量大,对数据库要求比较高,我们在比较下选择了Microsoft SQL Server6.5 +WinNT4.0 平台,现在库存AutoCAD 图形6 万多个,数据库大小18G,应用证明Microsoft 的SQL Server 运行情况良好,并且顺利过渡2000 年。