VB連接到LOTUS NOTES數據庫文件,把NOTES庫文件轉存到ACCESS或EXCEL?

sweig0721 2006-01-05 10:55:31
VB連接到LOTUS NOTES數據庫文件,把NOTES庫文件轉存到ACCESS或EXCEL?
...全文
268 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
visualKKK 2006-02-25
  • 打赏
  • 举报
回复
但是不清楚怎么用帳號登陸,只能更據本机的LOTUS帳號,要是沒有權限的用戶,怎么動態在內部用帳號連接?
-----
我也想知道
hxy2003 2006-01-06
  • 打赏
  • 举报
回复
Up....
sweig0721 2006-01-05
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim db1 As Database
Set db1 = OpenDatabase("c:\db\po_print.mdb")

Dim rec As Recordset
Set rec = db1.OpenRecordset("select * from PURCHASE_REQ")
Dim session As Object
Dim db As Object
Dim view As Object
Dim doc As Object
Set session = CreateObject("notes.notessession")

Set db = session.GetDatabase("cnm1/wuscn", "wuscnap\mainpurch.nsf")

Set view = db.GetView("daxing")

Set doc = view.GetFirstDocument


Dim ss As Date
Dim s1 As Variant
Dim s2 As Variant
Dim s3 As Variant
Dim s4 As Variant
Dim s5 As Variant
Dim s6 As Variant
Dim s7 As Variant
Dim s8 As Variant
Dim s9 As Variant
Dim s10 As Variant
Dim s11 As Variant
Dim TEST As String


While Not (doc Is Nothing)

rec.AddNew
s1 = doc.GetItemValue("prdate") '請購日期
s2 = doc.GetItemValue("PRNO1") '請購單號
s3 = doc.GetItemValue("itemname1") '料號
s4 = doc.GetItemValue("itemspec1") '品名
s5 = doc.GetItemValue("provide") '供應商
s6 = doc.GetItemValue("itemqty1") '數量
s7 = doc.GetItemValue("bibie") '幣別
s8 = doc.GetItemValue("pretotprice1") '總金額
s9 = doc.GetItemValue("caigouzhe1") '采購員
s10 = doc.GetItemValue("itemmemo1") '備注
s11 = doc.GetItemValue("prdesc") '用途

rec.Fields(1) = s1(0)
rec.Fields(2) = s2(0)
rec.Fields(3) = s3(0)
rec.Fields(4) = Trim(Left$(s4(0), 25))
rec.Fields(5) = s5(0)
rec.Fields(6) = IIf(Len(Trim(s6(0))) = 0, 0, Trim(s6(0)))
rec.Fields(7) = Trim(s7(0))
rec.Fields(8) = IIf(Len(Trim(s8(0))) = 0, 0, Trim(s8(0)))
rec.Fields(9) = s9(0)
rec.Fields(10) = Trim(s10(0))
rec.Fields(11) = Left$(Trim(s11(0)), 25)
rec.Update
Set doc = view.GetNextDocument(doc)
Wend
MsgBox "ok!"
End Sub

已經解決,但是不清楚怎么用帳號登陸,只能更據本机的LOTUS帳號,要是沒有權限的用戶,怎么動態在內部用帳號連接?
daisy8675 2006-01-05
  • 打赏
  • 举报
回复
to faysky2:抢分不一定是好习惯,当你帖出上面的代码,显示了你对DOMINO的一无所知,因为domino数据库的本质是文档数据库,而不是关系数据库,这是最最最基础的东西.

to WallesCai:可以导的,用odbc就可以,帖那段似乎是那找的:P
LotusScript本身就是和VB最相近的,是不是VB演变来的,我忘记了,好象是
可惜B/S结构不支持
daisy8675 2006-01-05
  • 打赏
  • 举报
回复
要导入就必须学习LEI或者DECS,目前暂时没时间研究这块,你可以参考帮助文件。

VB连接DOMINO是可以的,引用 lotus domino objects和lotus notes automation classes
不过导入似乎没必要经过VB啊,比如导到excel录一段宏,将将宏代码拷贝到LotusScript就可以了

给你一个示范:
Const xlThin = 2
Const xlAutomatic = 1
Const xlContinuous = 1
Const xlCenter = 3

Sub setRange()
  Dim i As Integer, j As Integer
  Dim tmpArray As Variant
  
  xlApp.Range(xlSheet.Cells(1,1), xlSheet.Cells(rows-1,cols+1)).Select
  
  xlapp.Selection.Font.Size = 9
  xlapp.Selection.NumberFormatLocal = "@"       '设置纯文本,避免对数值做科学计数处理
          '自动调整列宽
  If FisAutoFit Then
    xlapp.Selection.Columns.AutoFit
   For i = 1 To cols+1
     xlApp.Range(xlSheet.Cells(1,i), xlSheet.Cells(1,i)).Select
    If xlapp.Selection.ColumnWidth > 25 Then
     xlapp.Selection.ColumnWidth =  25    End If
   Next
  End If
  
  xlApp.Range(xlSheet.Cells(1,1), xlSheet.Cells(rows-1,cols+1)).Select
         'xlEdgeLeft:xlEdgeRight:xlEdgeTop:xlEdgeBottom:xlInsideHorizontal:xlInsideVertic al分别为 1,2,3,4,7,8
  If FisShowGridLine Then    '显示表格边线
   For i = 1  To 8
    Select Case i
    Case 5, 6     :  '5,6是斜线
    Case Else
      With xlapp.Selection.Borders( i )
      .LineStyle = xlContinuous
       .Weight = xlThin
      .ColorIndex = xlAutomatic
     End With
    End Select
   Next
  End If

  xlSheet.Cells(1,1).Select
 End Sub


熊孩子开学喽 2006-01-05
  • 打赏
  • 举报
回复
一般来说是不可以的,NOTES的数据库不同于MSOFFICE系列的东西,在NOTES的一个NSF数据库中既包含了数据又包含了设计,如果一定要比的话,你也应该和OUTLOOK来比,因为两者主要处理的都是邮件对象.
当然,你可以通过象创建EXCEL或WORD对象一样的方法来创建一个NOTES对象,但是你很难把一个邮件对象所包含的内容导出到一个表状数据库内(grid或table),因为光是邮件对象本身就比较难以处理,它既包含文档,又可能有附件,或者是多附件,甚至还有超链接.
如果你只是单单用来将收件人,发件人,信头最通用的部分导出,那还是可以的.
或者还有个更简单的方法,你在安装NOTES客户端的时候选择安装开发工具,那么就可以直接使用NOTES自带的NOTES SCRIPT语言来写相同的程序了.
尝试之后,你不要吃惊,NOTES SCRIPT在开发界面和语言特性上和VB6几乎是100%相同的,连API的支持都不例外.(除了它不能生成EXE文件)
faysky2 2006-01-05
  • 打赏
  • 举报
回复
LOSTUS NOTES 没用过,参考SQL导入Excel和Access:


'引用 Microsoft ActiveX Data Objects 2.X Library
Private Sub Command1_Click()
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=jtaf;Password=登陆密码;Initial Catalog=sql里的数据库;Data Source=sql服务器别名或IP"
cn.CursorLocation = adUseClient
cn.Open

'导入Excel用下面这句:
cn.Execute("insert into OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\Test.xls;','select * from [Sheet1$]') select top 25 * from table1")

'导入Access用下面这句:
'cn.Execute ("insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\Test.mdb','select * from 表1') select top 25 * from table1")
cn.Close
Set cn = Nothing
End Sub

cn.Close
Set cn = Nothing
End Sub

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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