公司有一个流程,申请人需要在ERP维护工作流中确认他提交的一个ERP维护单数据中心文员是否在ERP中维护正确。申请人往往需要打开ERP和LOTUS才能核对,比较浪费时间,而且维护的内容很有可能在ERP的好几个地方查看,才能一一核对,很浪费时间,可不可以在申请人确认处增加一个按钮,确认人在LOTUS中就可以把ERP中对应数据拉取过来,申请人直接对比核对,这样不就很方便么。
查了下资料,VB可以用ADODB直接访问数据库,LS又和VB很相似,因为之前没研究过,就先在VB中做了下试验,结果成功了,以下是VB的代码
- PrivateSubCommand1_Click()
- DimcnAsADODB.Connection
- DimrsAsADODB.Recordset
- DimsqlStrAsString
- Setcn=NewADODB.Connection
- Setrs=NewADODB.Recordset
- cn.ConnectionString="Provider=sqlOLEDB.1;Password=xxxxxxx;PersistSecurityInfo=True;UserID=sa;InitialCatalog=数据库名称;DataSource=10.1.1.x"'数据连接字符串
- sqlStr="selectitemnamefromoitmwhereitemcode='"&Text1.Text&"'"
- cn.Open
- rs.OpensqlStr,cn
- IfNotrs.EOFThen
- 'MsgBoxrs.Fields("itemname")
- Text2.Text=rs.Fields("itemname")
- Else
- MsgBox"对不起,不存在该编码"
- EndIf
- rs.Close
- cn.Close
- EndSub
这样成功了,在LS中就很简单啦!
模拟情况为研发部(申请人)提交维护ERP中某一个项目代码对应的项目名称,数据中心也维护了,现在申请人确认处,申请人只要点一下按钮,自动把ERP中现在该编码对应的项目名称给拉取过来,以方便申请人核对。
以下为在LS的代码。
- SubClick(SourceAsButton)
- DimSessionAsNotesSession
- DimDBAsNotesDatabase
- DimViewAsNotesView
- DimCurDocAsNotesDocument
- DimuidocAsNotesUIDocument
- DimWsAsNewNotesUIWorkspace
- '定义ADO对象变量,供sql用
- DimConnectAsVariant
- DimADOCommandAsVariant
- DimRecordSetAsVariant
- OnErrorGotoErrorHandle
- SetSession=NewNotessession
- SetDB=Session.CurrentDatabase
- SetDoc=Session.DocumentContext
- SetUidoc=Ws.CurrentDocument
- SetCurdoc=Uidoc.Document
- SetConnect=CreateObject("ADODB.Connection")'创建ADO连接对象
- SetRecordset=CreateObject("ADODB.Recordset")'创建返回结果集对象
- '取得sql服务器的IP地址
- sqlSERVER="10.1.1.x"
- '要连接的sql库
- sqlDB="数据库名称"
- 'sql用户名
- sqlUID="sa"
- 'sql密码
- sqlPWD="xxxxxxx"
- '与sql服务器连接的语句
- ConnectionString=|Driver={sqlSERVER};SERVER=|+sqlSERVER+|;DATABASE=|+sqlDB+|;UID=|+sqlUID+|;PWD=|+sqlPWD+|;|
- Connect.OpenConnectionString'创建sql连接
- IfConnect.State<>1Then
- MsgBox"连接中断,请稍后再试!"
- ExitSub
- EndIf
- Query="SELECTPrjnameFROMOPRJwhereprjcode='"&Curdoc.Prjcode(0)&"'"
- RecordSet.OpenQuery,Connect'执行sql语句并返回结果
- '从sql读取主表信息
- IfNotRecordset.EofThen
- Curdoc.Prjname=RecordSet.Fields("Prjname").Value
- Else
- MsgBox"对不起,不存在该编码"
- EndIf
- CallRecordset.Close'关闭结果集
- CallConnect.close'关闭sql连接
- ExitSub
- ErrorHandle:
- MsgBoxStr(Erl())+Error()
- EndSub