Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mibo11 am 23.08.05 - 12:12:02

Titel: Eigenschaften dynamisch gestalten
Beitrag von: mibo11 am 23.08.05 - 12:12:02
Hallo zusammen,

ich experimentiere gerade mit der NoteCollection, die Frage ist allerdings eher allgemeiner Natur.

Kann man Eigenschaften auch dynamisch erzeugen? Folgender Hintergrund:

Über nc.SelectForms = True oder nc.SelectViews = True etc. wird bei der NoteCollection bestimmt welche Designelemente eigelesen werden sollen.

Nun benötige ich nur die Masken, Teilmasken und Ansichten, d.h. ich müsste 3x eine NoteCollection durchlaufen, die mir dann die Ergebnisse zurückliefert. Ich möchte nun eine allgemeine Funktion schreiben und nur die Eigenschaft nc.SelectForms = True, etc. dynamisch zuweisen. Etwa so:

Dim eigenschaft List as String

eigenschaft(0) = "nc.SelectForms = True"
eigenschaft(1) = "nc.SelectViews = True"
eigenschaft(2) = "nc.SelectSubForms = True"

Forall x in eigenschaft
.....
' hier sollte die Eigenschaft aufgelöst werden
' hier darf natürlich nicht der String aus der Listvariable eingelesen werden

End Forall

Hat jemand eine Idee? Geht das überhaupt?

Gruß Sascha

PS: Ich weiß, dass man die Eigenschaften auch zu Anfang mehrfach belegen kann und man dann nur einen Durchlauf statt 3 benötigt.
Titel: Re: Eigenschaften dynamisch gestalten
Beitrag von: diali am 23.08.05 - 12:28:22
Funktioniert mit BuildCollection
Code
Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection(False)
Call nc.SelectAllFormatElements(False)
nc.SelectForm = True
nc.SelectViews = True
nc.SelectSubForm = True
Call nc.BuildCollection
Titel: Re: Eigenschaften dynamisch gestalten
Beitrag von: mibo11 am 23.08.05 - 12:55:07
Funktioniert mit BuildCollection
Code
Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection(False)
Call nc.SelectAllFormatElements(False)
nc.SelectForm = True
nc.SelectViews = True
nc.SelectSubForm = True
Call nc.BuildCollection

Hallo Diali,

ich weiß, aber das war leider nicht die Fragestellung, trotzdem vielen Dank für Hilfe.

Ich habe mir jetzt anders geholfen, indem ich die Eigenschaft übewr ein Select Case abfrage. Anbei der relevante Teil des Codes.

 ......


design_elemente("Masken") = "elemente_masken"
design_elemente("Ansichten") = "elemente_ansichten"
   
......
   
Set zieldb_nc = ziel_db.CreateNoteCollection(False)
      Forall wert In design_elemente
         Call zieldb_nc.SelectAllNotes( False )   
         Select Case Listtag(wert)
         Case "Masken"
            zieldb_nc.SelectForms = True
         Case "Ansichten"
            zieldb_nc.SelectViews = True
         End Select         
         Call zieldb_nc.BuildCollection   
         DesignElementeUeberArrayFuellen(wert)
      End Forall      

Gruß Sascha
Titel: Re: Eigenschaften dynamisch gestalten
Beitrag von: Tode am 24.08.05 - 15:35:01
Deine Lösung ist so wie sie ist sauber.

Dein erster Ansatz sollte (imho) immer nur in Notfällen verwendung finden, oder wenn man eine extreme Konfigurierbarkeit braucht.
Wenn Du trotzdem mal die Möglichkeit suchst, zur Laufzeit bestimmten Code auszuführen, den Du irgendwo übergibst, dann versuche es so:

x = execute( eigenschaft(0) )

Gruß
Tode
Titel: Re: Eigenschaften dynamisch gestalten
Beitrag von: mibo11 am 24.08.05 - 19:49:25
Hallo Tode,

danke für den Hinweis. Ich hatte auch schon versucht über Execute zu arbeiten, leider ohne Erfolg. Ich bekomme leider nicht hin die fettgeschriebenen Teile dynamisch zu generieren, daher der Weg über den Select Case.

nc.SelectForms = True
nc.SelectViews = True
nc.SelectSubForms = True

Gruß Sascha
Titel: Re: Eigenschaften dynamisch gestalten
Beitrag von: Tode am 25.08.05 - 08:37:07
nur ein Schuss ins blaue, habs nicht probiert, das ganze ist hier in diesem Formular programmiert, also ohne jede Syntaxprüfung...:

Type eigenschaft
   prop as String
   op as String
   val as String
End Type

Dim eigenschaften( 1 ) as eigenschaft

eigenschaften(0).prop = "SelectForms"
eigenschaften(0).op = "="
eigenschaften(0).val = "True"
eigenschaften(1).prop = "SelectViews"
eigenschaften(1).op = "="
eigenschaften(1).val = "True"

exString = |With nc |
cr = Chr$( 10 )
for i = 0 to ubound( eigenschaften )
   exString = exString & cr & "." & eigenschaften( i ).prop & eigenschaften( i ).op & eigenschaften(i).val
Next i
exString = exString & cr & "|End With|"

x = execute( exString )

So oder so ähnlich könnte sowas aussehen.

HTH
Tode
Titel: Re: Eigenschaften dynamisch gestalten
Beitrag von: mibo11 am 26.08.05 - 00:05:55
Hallo Tode,

vielen Dank für den Code. Habe ihn geringfügig geändert und ausprobiert, jedoch ohne Erfolg.


   Type eigenschaft
       prop As String
       op As String
       val As String
   End Type

   Dim s As New notessession
   Dim zieldb As NotesDatabase
   Set zieldb = s.CurrentDatabase
   
   Set nc = zieldb.CreateNoteCollection(False)
   Dim eigenschaften( 1 ) As eigenschaft
   
   eigenschaften(0).prop = "SelectForms"
   eigenschaften(0).op = "="
   eigenschaften(0).val = "True"
   eigenschaften(1).prop = "SelectViews"
   eigenschaften(1).op = "="
   eigenschaften(1).val = "True"
   
   exString = |With nc |
   cr = Chr$( 10 )
   For i = 0 To Ubound( eigenschaften )
      exString = exString & cr & "." & eigenschaften( i ).prop & eigenschaften( i ).op & eigenschaften(i).val
   Next i
   exString = exString & cr & |End With|
   
   
   x = Execute( exString )


Hast du noch eine Idee?

Gruß Sascha