Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: HarryB am 25.01.06 - 09:42:21

Titel: Object NotesDatabase Property Categories
Beitrag von: HarryB am 25.01.06 - 09:42:21
Hi Forum,

ich habe Schwierigkeiten beim programmatischen Setzen der Categories Eigenschaft des NotesDatabase Objekt. Der Code sieht aus wie folgt:

Zitat
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
Titel: Re: Object NotesDatabase Property Categories
Beitrag von: Tode am 25.01.06 - 10:02:43
RTFM... denn wer lesen kann ist klar im Vorteil...

Auszug zu db.Categories aus der Designer- Hilfe:

Usage
The categories are separated by commas or semicolons in a single string.
These categories are also used for domain catalogs and searches.

ALSO: Array über Implode zum String machen und dann zuweisen.

Gruß
Tode
Titel: Re: Object NotesDatabase Property Categories
Beitrag von: HarryB am 25.01.06 - 10:28:51
RTFM... denn wer lesen kann ist klar im Vorteil...
Absolut, danke für den Hinweis. (http://www.clicksmilies.com/s0105/sprachlos/speechless-smiley-004.gif)

Den Beitrag habe ich zwar x mal gelesen, bin aber meist am Datentyp (Variant) hängen geblieben.

Viele Grüße
Harry