Hi Forum,
ich habe Schwierigkeiten beim programmatischen Setzen der Categories Eigenschaft des NotesDatabase Objekt. Der Code sieht aus wie folgt:
01 Sub Initialize
02
03 Dim uiws As New NotesUIWorkspace
04
05 Dim ses As New NotesSession
06 Dim currentDb As NotesDatabase
07
08 Dim tmpDialogBox As NotesDocument
09 Dim clickedOk As Boolean
10 Dim dbServer As String
11 Dim dbPath As String
12 Dim dbListInCatalog As Boolean
13 Dim dbCategories As Variant
14 Dim tmpCategories As Variant
15 Dim dbOverwriteCategories As Boolean
16
17 Dim dbDirectory As NotesDbDirectory
18 Dim db As NotesDatabase
19 Dim dbIsOpen As Boolean
20
21 Set currentDb = ses.CurrentDatabase
22 Set tmpDialogBox = currentDb.CreateDocument
23
24 Call tmpDialogBox.ReplaceItemValue("form","dlgBox:SetDbCatalog")
25
26 clickedOk = uiws.DialogBox("dlgBox:setDbCatalog",True,True,True,False,False,False,"Title",tmpDialogBox,True,True,False)
27
28 If clickedOk Then
29
30 dbServer = Cstr(tmpDialogBox.GetItemValue("$dbServer")(0))
31 dbPath = Cstr(tmpDialogBox.GetItemValue("$dbPath")(0))
32 dbListInCatalog = Cint(tmpDialogBox.GetItemValue("$dbListInCatalog")(0))
33 dbCategories = tmpDialogBox.GetItemValue("$dbCategories")
34 dbOverwriteCategories = Cint(tmpDialogBox.GetItemValue("$dbOverwriteCategories")(0))
35
36 Set dbDirectory = New NotesDbDirectory(dbServer)
37 Set db = dbDirectory.GetFirstDatabase(DATABASE)
38
39 While Not (db Is Nothing)
40
41 If (dbPath = Left(db.FilePath,Len(dbPath))) Then
42
43 dbIsOpen = db.Open("", "")
44 If dbIsOpen Then
45
46 db.ListInDbCatalog = dbListInCatalog
47 If Not (dbCategories(0) = "") Then
48 If dbOverWriteCategories Then
49 db.Categories = dbCategories
50 Else 'dbOverWriteCategories
51 tmpCategories = Arrayappend(db.Categories, dbCategories)
52 db.Categories = tmpCategories
53 End If 'dbOverWriteCategories
54 End If 'Not (dbCategories(0) = "")
55
56 End If 'dbIsOpen
57
58 End If '(dbPath = Left(db.FilePath,Len(dbPath)))
59
60 Set db = dbDirectory.GetNextDatabase
61
62 Wend 'Not (db Is Nothing)
63
64 Call uiws.ViewRefresh
65
66 End If 'clickedOk
67
68 End Sub
Auf der Maske 'dlgBox:setDbCatalog' ist das Feld '$dbCategories' ein Textfeld mit Mehrfachwerten. Nach dem Auslesen des Feldes (dbCategories = tmpDialogBox.GetItemValue("$dbCategories"), Zeile 33) enthält die Variable 'dbCategories' ein StringArray mit den Werten, die in der Dialogbox eingegeben wurde (Beispiel: dbCategories(0) = "Test").
Wenn ich diesen Wert den db.Categories zuordne (db.Categories = dbCategories, Zeile 49) enthält db.Categories allerdings Müll (z.B. tAÝ€AÝ").
Kann mir jemand erklären, wo das Problem liegt?
Falls ihr weitere Angaben benötigt, sagt mir bitte welche.
Viele Grüße
Harry