电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

利用ODBC实现Domino和关系数据库的互操作

8页
  • 卖家[上传人]:s9****2
  • 文档编号:473091612
  • 上传时间:2022-11-25
  • 文档格式:DOC
  • 文档大小:22.01KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、 利用ODBC实现Domino和关系数据库的互操作-数据库专栏,SQL Server 利用odbc实现domino和关系数据库的互操作lotus domino是当今办公自动化系统的主流研发平台之一,domino自带一个非关系型数据库?文件型数据库,而目前大部分企业的信息都储存在诸如sql server等关系型数据库中,因此,在研发办公自动化系统过程中势必要涉及domino和关系数据库的数据交换问题。一、lotus domino和关系数据库的互操作在lotus domino r5中提供了三个lotus notes扩展类:odbcconnection(odbc连接)、odbcquery(odbc查询)及odbcresultset(odbc结果集)。应用这三个类并辅以lotus script语言就能实现和关系数据库的互操作问题。具体解决方法如下:第1步:在控制面板32位odbc数据源中建立用户数据源test;第2步:在domino r5中新建一个数据库try,并建立一个空白表单con-nection,此表单没有所有内容,然后在表单上创建一个“操作”,起名为“read”;第3步:在“read”

      2、操作的编程窗口中选择编程语言为lotus script;第4步:在编程窗口的对象窗口中点击“option”事件,并写入如下脚本:uselsx ?lsxodbc / 使用lotus script 扩展odbc类第5步:选中“declare”事件,在其中写入:dim session as notessessiondim db as notesdatabasedim doc as notesdocumentdim qry as odbcquerydim result as odbcresultsetdim con as odbcconnection第6步:选中“click”事件,在其中写入:sub click(source as button) set new valueset session=new notessessionset con=new odbcconnectionset qry=new odbcqueryset result=new odbcresultset get current databaseset db=session.currentdatabaseset doc=n

      3、ew notesdocument(db)doc.form=connectioncall con.disconnect()if con.connectto(test) then set qry.connection=con qry.sql=select ? from table1 set result.query=qry call result.execute() columns=result.columns do call result.nextrow() for i=1 to result.numcolumns field=result.fieldname(i) value=result.getvalue(field) if isdate(value) then if value=datevalue(0:00:00) then value= else value=format(value,mm-dd-yyyy) end if end if set item=doc.appenditemvalue(field,val-ue) next call doc.save(true,true)

      4、set db=session.currentdatabase set doc=new notesdocument(db) doc.form=test loop until result.isendofdata call con.disconnect() else messagebox(could not connect to server)end ifend sub最后,保存表单并运行,用鼠标点击read操作后,关系数据库中的内容就被取到notes的文件型数据库中了。二、程式存在的问题及解决不过使用上面的代码在进行实际数据库内容转换的时候,我们发现notes 通过odbc数据源连接关系数据库时,无法识别中文字段名。如果关系数据库的字段是中文名字,那么odbcresultset将为空,解决的办法是将关系数据库中的所有字段都改为英文名字。在实际数据库的转换过程中同时发现的问题更有:该程式执行完一次后不能把关系型数据库中的内容全部取出来。通过调试lotus script脚本并多次单步跟踪脚本的执行情况,发现每次都是执行到同一条数据库记录时,odbcre-sultset就认为数据集已到头了,下

      5、面的记录就都丢了。于是使用关系数据库软件打开数据库,并将其中的字段减少若干条后,就能一次读取出全部记录。至于需要减少多少个字段才能一次读取出全部记录跟原先的关系型数据库的结构有关,需要具体情况具体实验。三、lotus domino中的日期处理上面程式中有如下一段程式:if isdate(value) then if value=datevalue(0:00:00) then value= else value=format(value,mm-dd-yyyy) end if set item=doc.appenditemvalue(field,value)end if这一段代码的作用是:判断从关系库中读取出来的字段是否为日期型字段,如果是,那么判断此日期型字段的值,看他是否为空,如果为空则在写入notes库的时候做处理,确保写入的是空日期类型,如果此字段的值不为空则直接写入notes库;如果此字段不是日期型字段,则不做所有处理。若是不做上述处理,那么通过odbcresultset类取出的日期型字段的值如果为空,则写入notes库的时候不知什么原因会写入“1899年12月30日”这个日期。

      6、在代码中,使用到了一个datevalue(string)函数,此函数的功能是将字符串参数转换成日期数据类型,如果字符串所表示的内容未找到合法的日期数据和之对应,那么此函数将保留字符串的值不变,而仅仅把其数据类型转换成日期型,即实现了强制类型转换函数的功能。而代码中的“0:00:00”字符串是个特别字符串,在通过odbc数据源读取关系数据库的记录时,如果关系库中的日期型字段值为空,那么取出的值就是“0:00:00”形式的日期。使用datevalue(“0:00:00”)语句就能判断取出的日期型变量的值是否为空,如果为空则将变量value的值赋成空字符串,然后再写入notes库中,就可避免出现“1899年12月30日”这个日子了。四、notesitemnotesitem是能代表所有表单元素的对象,简单地说就是所有可放置在表单上的元素,在lotus script程式中都能用notesitem对象表示并对其进行操作。上面代码中的doc.appenditemvalue(fieldname,value)函数的作用就是根据value的值为表单追加域(也就是关系库中的字段)。其实细心的读者一定已发现了

      7、,在上面关于空日期的处理代码中,为什么要先把value的值赋成空,然后再写入库中呢?为什么不能直接往库里写值呢?问题的关键就在notesitem上。notesitem有非常多属性,其中最重要的两个是name和text属性。name属性存放表单元素的名称(即fieldname),而text属性存放表单元素的值(value)。在程式执行到doc. appenditemvalue(fieldname,value)函数的时候,notes将域名(fieldname)和相对应的值(value)写到notesitem对象中。执行call doc.save()函数之后,所有内存中的notesitem对象被存入相关联的表单中。在研究怎么处理空日期的过程中,最初的想法是直接将空字符串写入notesitem中,不过在查看帮助并单步跟踪脚本的执行后发现上述方法行不通。原因在于notesitem的text属性是只读的,根本无法为其赋值,同时也没有相应的赋值函数,显然函数doc.appenditemvalue(fieldname,value)是专门给text属性赋值的函数。五、notes中视图和表单的关联在研发过

      8、程中,由于一次错误,我们意外地发现了notes中视图和表单的关联技巧。notes为每个表单都设置了名称和别名两个属性,这两个名字都能标识表单。在研发过程中,我们所研发的库有两个表单,分别命名为form1和form2,其各自的别名由于疏忽都设成了docu-ment,而每个表单都有一个视图和之对应。在设计form2的视图时,虽然指定视图中的列都和form2中的域相关联,不过在运行的时候从视图中双击某条文件欲对其进行编辑时,转换到的表单却是form1的,多方查找均不能解决这个问题,于是抱着试试看的心理改动了表单的别名,分别为document1和docu-ment2,结果问题解决。不过又出现了form1的视图无法转换到表单的情况,于是又将form1的别名改回document,两个视图均能正确转换到自己的表单上了。由此发现,notes在建立视图和表单的关联的时候,首先看表单是否具有别名,如果有,则用别名进行关联,一旦对表单的别名进行了改动就得重新设计视图,如果不想重新做视图就不能改动表单的别名。当然同时也能应用这一技巧实现从视图中转换到不同表单的功能。如果表单没有别名,则使用名称进行关联。 使用ODBC实现Domino与SQL Server数据交互2007年12月13日 17:47通过ODBCResultSet.AddRow向SQL Server数据库里写入数据,实现与关系数据库的数据交互。Uselsx *LSXODBCDim s As New notessessionDim db As notesdatabaseDim doc As notesdocumentDim con As New ODBCConnectionDim qry As New ODBCQueryDim result As New ODBCResultSetDim sunid As StringDim sname As StringOn Error Goto errorHandlerSet qry.Connec

      《利用ODBC实现Domino和关系数据库的互操作》由会员s9****2分享,可在线阅读,更多相关《利用ODBC实现Domino和关系数据库的互操作》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.