Lotus 插入与更新SQL数据库
来源:互联网 发布:软件测试女生做累吗 编辑:程序博客网 时间:2024/05/20 08:43
(Declarations)
Dim GSysSession As NotesSession
Dim GSysCdb As NotesDatabase'同步V1.0数据库
Dim GSysConfigView As NotesView'同步V1.0配置视图
Dim GSysConfigDoc As NotesDocument''同步V1.0配置文档
Dim GSysSqlConnect As Variant
Dim cdb As NotesDatabase
Dim GSysTaskTableName As String
Const adCmdText = &H0001
Const adCmdStoredProc = 4
Const adSmallInt = 2
Const adInteger = 3
Const adBoolean = 11
Const adVarChar = 200
Const adChar = 129
Const adDBTimeStamp = 135
Const adDouble = 5
Const adCurrency = 6
Const adDecimal=14
Const adParamInput = 1
Const adParamOutput = 2
Const adParamInputOutput = 3
Sub Initialize
Set GSysSession=New NotesSession
Set cdb=GSysSession.CurrentDatabase
Set GSysCdb=GSysSession.GetDatabase(cdb.Server,"config.nsf",False)
Set GSysConfigView=GSysCdb.GetView("VH_Config")
Set GSysConfigDoc=GSysConfigView.GetFirstDocument()
Set GSysSqlConnect=Nothing
GSysTaskTableName=GSysConfigDoc.F_SqlTaskTableName(0)
End Sub
Sub Terminate
Call CloseSqlConnect()
End Sub
Function GetSqlConnectString()
%REM
返回连接数据库字符串
%END REM
On Error Goto ErrHandler
Dim RetString As String
If GSysConfigDoc Is Nothing Then
Msgbox "Server:"+cdb.Server+",Database:"+cdb.FilePath+"LotusScript:LS_K2"+",Function:GetSqlConnectString()"+",未获取到连接SQL的数据库配置"
Exit Function
End If
RetString=|Provider=SQLOLEDB;|
RetString=RetString & |Data Source=| & GSysConfigDoc.GetItemValue("F_SqlConnectString")(0) & |;|
RetString=RetString & |Uid=| & GSysConfigDoc.GetItemValue("F_SqlConnectName")(0) & |;|
RetString=RetString & |Pwd=| & GSysConfigDoc.GetItemValue("F_SqlConnectPassword")(0) & |;|
RetString=RetString & |Database=| & GSysConfigDoc.GetItemValue("F_SqlDatabaseName")(0)
GetSqlConnectString=RetString
Exit Function
ErrHandler:
Msgbox "Server:"+cdb.Server+",Database:"+cdb.FilePath+"LotusScript:LS_K2_Task"+",Function:GetSqlConnectString()"+_
"Error:" & Cstr(Error) + ",Code:" & Cstr(Err) + ",Line:" & Cstr(Erl)
End Function
Function OpenSqlConnect() As Variant
%REM
创建数据连接对象实例
%END REM
On Error Goto ErrHandler
If GSysSqlConnect Is Nothing Then
Dim SqlConnectString As String
SqlConnectString=GetSqlConnectString()
If SqlConnectString=""Then
Exit Function
End If
Set GSysSqlConnect=CreateObject("ADODB.Connection")
GSysSqlConnect.ConnectionString=SqlConnectString
GSysSqlConnect.ConnectionTimeout=30
GSysSqlConnect.Open
Set OpenSqlConnect=GSysSqlConnect
End If
If GSysSqlConnect Is Nothing Then
Msgbox "Server:"+cdb.Server+",Database:"+cdb.FilePath+"LotusScript:LS_K2"+",Function:OpenSqlConnect()"+",连接数据库失败!"
End If
Exit Function
ErrHandler:
Set OpenSqlConnect=Nothing
Msgbox "Server:"+cdb.Server+",Database:"+cdb.FilePath+"LotusScript:LS_K2_Task"+",Function:OpenSqlConnect()"+_
"Error:" & Cstr(Error) + ",Code:" & Cstr(Err) + ",Line:" & Cstr(Erl)
End Function
Sub CloseSqlConnect()
%REM
创建数据连接对象实例
%END REM
On Error Goto ErrHandler
If Typename(GSysSqlConnect)="OBJECT" Then
If Not(GSysSqlConnect Is Nothing) Then
Call GSysSqlConnect.Close()
End If
End If
Exit Sub
ErrHandler:
Exit Sub
End Sub
Function GetRecordsetBySql(Sql As String) As Variant
On Error Goto ErrHandler
Dim Recordset As Variant
Set Recordset=Nothing
Call OpenSqlConnect()
If OpenSqlConnect Is Nothing Then
Exit Function
End If
Set Recordset=CreateObject("ADODB.Recordset")
Call Recordset.open(Sql,GSysSqlConnect,1,1,1)
If Recordset.state<>1 Then
Exit Function
End If
Set GetRecordsetBySql=Recordset
Exit Function
ErrHandler:
Msgbox "Server:"+cdb.Server+",Database:"+cdb.FilePath+"LotusScript:LS_K2_Task"+",Function:GetRecordsetBySql()"+_
"Error:" & Cstr(Error) + ",Code:" & Cstr(Err) + ",Line:" & Cstr(Erl)
End Function
Sub CloseRecordset(Recordset As Variant)
On Error Goto ErrorHandler
If Typename(Recordset)="OBJECT" Then
If Not(Recordset Is Nothing) Then
Call Recordset.close()
Set Recordset=Nothing
End If
End If
Exit Sub
ErrorHandler:
Exit Sub
End Sub
Function InsertTaskIntoSQL(taskDoc As NotesDocument)
%REM
插入数据到 SQL数据库
%END REM
On Error Goto ErrHandler
Call OpenSqlConnect()
If GSysSqlConnect Is Nothing Then
Exit Function
End If
Dim SqlCommand As Variant
Dim RetRecoredSet As Variant
Dim defaultsql As String
Set SqlCommand=CreateObject("ADODB.command")
Set SqlCommand.ActiveConnection=GSysSqlConnect
SqlCommand.CommandType=adCmdText
defaultsql = "insert into "+GSysTaskTableName+" (Subject,DocumentUNID,F_Application,F_DocType,F_Show,F_From,F_Readers_0,F_URL,F_CreatTime,F_LastModify) values ( ?,?,?,?,?,?,?,?,?,?)"
SqlCommand.CommandText = defaultsql
'定义字段
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("Subject" ,adVarChar,adParamInputOutput,255))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("DocumentUNID" ,adChar,adParamInputOutput,32))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_Application" ,adVarChar,adParamInputOutput,255))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_DocType" ,adInteger,adParamInputOutput,4))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_Show" ,adBoolean,adParamInputOutput,1))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_From" ,adVarChar,adParamInputOutput,255))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_Readers_0" ,adVarChar,adParamInputOutput,255))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_URL" ,adVarChar,adParamInputOutput,255))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_CreatTime" ,adDBTimeStamp,adParamInputOutput,8))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_LastModify" ,adDBTimeStamp,adParamInputOutput,8))
'插入值
Dim arrReaders As Variant
Dim i As Integer
arrReaders=taskDoc.GetItemValue("F_Readers_0")
For i=0 To Ubound(arrReaders)
SqlCommand.Parameters("Subject").value=taskDoc.Subject(0)
SqlCommand.Parameters("DocumentUNID").value=taskDoc.UniversalID
SqlCommand.Parameters("F_Application").value=taskDoc.F_DbTitle(0)
SqlCommand.Parameters("F_DocType").Value=taskDoc.F_DOCTYPE(0)
If taskDoc.F_Show(0)=1Then
SqlCommand.Parameters("F_Show").Value=True
Else
SqlCommand.Parameters("F_Show").Value=False
End If
SqlCommand.Parameters("F_From").Value=taskDoc.F_FROM(0)
SqlCommand.Parameters("F_Readers_0").Value=arrReaders(i)
SqlCommand.Parameters("F_URL").Value=taskDoc.F_URL(0)
SqlCommand.Parameters("F_CreatTime").Value=taskDoc.F_CREATETIME(0)
SqlCommand.Parameters("F_LastModify").Value=taskDoc.LastModified
SqlCommand.Execute
Next
Call CloseSqlCommand(SqlCommand)
Exit Function
ErrHandler:
Msgbox "Server:"+cdb.Server+",Database:"+cdb.FilePath+"LotusScript:LS_K2_Task"+",Function:InsertTaskIntoSQL()"+_
"Error:" & Cstr(Error) + ",Code:" & Cstr(Err) + ",Line:" & Cstr(Erl)
End Function
Function UpdateTaskIntoSQL(taskDoc As NotesDocument)
%REM
更新数据到 SQL数据库
%END REM
On Error Goto ErrHandler
Call OpenSqlConnect()
If GSysSqlConnect Is Nothing Then
Exit Function
End If
Dim SqlCommand As Variant
Dim RetRecoredSet As Variant
Dim defaultsql As String
Set SqlCommand=CreateObject("ADODB.command")
Set SqlCommand.ActiveConnection=GSysSqlConnect
SqlCommand.CommandType=adCmdText
'定义字段
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("Subject" ,adVarChar,adParamInputOutput,255))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("DocumentUNID" ,adChar,adParamInputOutput,32))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_Application" ,adVarChar,adParamInputOutput,255))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_DocType" ,adInteger,adParamInputOutput,4))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_Show" ,adBoolean,adParamInputOutput,1))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_From" ,adVarChar,adParamInputOutput,255))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_Readers_0" ,adVarChar,adParamInputOutput,255))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_URL" ,adVarChar,adParamInputOutput,255))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_CreatTime" ,adDBTimeStamp,adParamInputOutput,8))
Call SqlCommand.parameters.append(SqlCommand.CreateParameter("F_LastModify" ,adDBTimeStamp,adParamInputOutput,8))
Dim SearchSql As String
Dim arrReaders As Variant
Dim i As Integer
arrReaders=taskDoc.GetItemValue("F_Readers_0")
For i=0 To Ubound(arrReaders)
'更新值
SearchSql=|UPDATE | & GSysTaskTableName & | SET | & |Subject=?,DocumentUNID=?,F_Application=?,F_DocType=?,F_Show=?,F_From=?,F_Readers_0=?,F_URL=?,F_CreatTime=?,F_LastModify=?|
SearchSql=SearchSql &| WHERE DocumentUNID='| & taskDoc.UniversalID & |' And F_Readers_0='| & arrReaders(i) & |'|
SqlCommand.CommandText=SearchSql
SqlCommand.Parameters("Subject").value=taskDoc.Subject(0)
SqlCommand.Parameters("DocumentUNID").value=taskDoc.UniversalID
SqlCommand.Parameters("F_Application").value=taskDoc.F_DbTitle(0)
SqlCommand.Parameters("F_DocType").Value=taskDoc.F_DOCTYPE(0)
If taskDoc.F_Show(0)=1Then
SqlCommand.Parameters("F_Show").Value=True
Else
SqlCommand.Parameters("F_Show").Value=False
End If
SqlCommand.Parameters("F_From").Value=taskDoc.F_FROM(0)
SqlCommand.Parameters("F_Readers_0").Value=arrReaders(i)
SqlCommand.Parameters("F_URL").Value=taskDoc.F_URL(0)
SqlCommand.Parameters("F_CreatTime").Value=taskDoc.F_CREATETIME(0)
SqlCommand.Parameters("F_LastModify").Value=taskDoc.LastModified
SqlCommand.Execute
Next
Call CloseSqlCommand(SqlCommand)
Exit Function
ErrHandler:
Msgbox "Server:"+cdb.Server+",Database:"+cdb.FilePath+"LotusScript:LS_K2_Task"+",Function:UpdateTaskIntoSQL()"+_
"Error:" & Cstr(Error) + ",Code:" & Cstr(Err) + ",Line:" & Cstr(Erl)
End Function
Sub CloseSqlCommand(SqlCommand As Variant)
On Error Goto ErrHandler
%REM
关闭数据连接对象实例
%END REM
If Typename(SqlCommand)="OBJECT" Then
If Not(SqlCommand Is Nothing) Then
Set SqlCommand=Nothing
End If
End If
Exit Sub
ErrHandler:
Exit Sub
End Sub
- Lotus 插入与更新SQL数据库
- SQL——数据库的修改(删除、插入与更新)
- SQL Cookbook—插入、更新与删除
- SQL之插入、更新与删除
- kohana数据库更新与插入数据
- lotus文档数据库与关系数据库比较
- 数据库--SQL--有就更新,没有就插入
- java操作sql server数据库(读取、更新、插入、删除)
- mybatis--插入&更新sql-(采用mysql数据库计算)
- 【sql查询与优化】4.删除插入与更新
- SQL更新插入语句
- ds更新、插入数据库
- Lotus数据库与模板之间的关系
- 一句话实现插入与更新的sql语句
- SQL SERVER的批量插入与批量更新
- MySQL数据库中插入,更新与删除数据
- MySQL数据库 之 插入、更新与删除数据
- 批量插入与更新
- 【转】如何让TortoiseSVN仅导出新增或修改过(变更过)的文件
- GetData From RGBA8 RenderTarget on dx9
- C# 日志类
- Cadence Allegro SPB 16.5 完整下载 网盘(含破解)
- mainfest 解析
- Lotus 插入与更新SQL数据库
- VC:va_list用法---隐含参数的使用方法
- Android中如何修改系统时间(应用程序获得系统权限)
- Kernel. EXPORT_SYMBOL解析
- 简单的异常处理的尝试--来自C++入门经典。
- (win7)IIS7下配置php5.3
- 多核系统上的 Java 并发缺陷模式(bug patterns)
- 70种网页制作常用技巧
- check ubuntu release version