Domino 9 und frühere Versionen > ND6: Administration & Userprobleme

Script-Datenabank

(1/2) > >>

JanHoener:
Hallo zusammen.
Nachdem ich meine prototypische Datenbank vorgestellt hatte, meinte mein Betreuer, dass diese deutlich generischer sein sollte.

Ich habe mir überlegt, eine eigenen Scriptdatenbank zu erstellen, in der ich dann den Script laufen lasse. Dafür muss ich eine Auswahl der vorhandenen Ansichten geliefert bekommen, die in der Zieldatenbank vorhanden sind, um mir dann die richtige DB auszusuchen.

Ich habe leider keine Ahnung, wie das funzt.
Bitte um eure Hilfe.
Vielen Dank.
Gruß Jan

Axel:
Hi,

schau dir mal die Eigenschaft Views in der NotesDatabase-Klasse an. Die liefert dir alle Ansichten und Ordner, die in einer Db enthalten sind. In der Designerhilfe sind auch Beispiele enthalten.


Axel

JanHoener:
oder noch besser: das Script über einen Toolbaricon aufrufen. Das wäre natürlich der Hammer. Dann müsste ich ach keine Auswahl von vorhanden Ansichten erstellen sonder kann direkt in der Ansicht arbeiten.
Script liegt dabei natürlich in einer eigenen DB.

Gruß Jan

Marinero Atlántico:

--- Code: ---Dim notesUIWorkspace as New NotesUiWorkspace
Set notesUIView = notesUIWorkspace.CurrentView
Set vw = notesUIView.View

--- Ende Code ---
... wobei ich das nicht für den Hammer halte.
Warum gehst du eigentlich über Ansichtsspalten und nicht über Felder von Dokumenten.
Die Daten werden in den Feldern gehalten. Die View ist eigentlich mehr ein Gestaltungselement, dass Daten präsentiert und nicht Daten hält.
Ich würd über alle Dokumente einer Ansicht iterieren und dann NotesItems (also Felder) vergleichen.
Die Namen der Felder kannst du in einem Konfigurationsdokument hinterlegen.
Das geht auch als externe DB die auf andere DBs zugreift. Nur musst du dann auch auf die Views verweisen.
 

JanHoener:
Naja, ich vergleiche in meinem Script immer einenen Eintrag der View mit der nächsten.
Sub Doppelt(View As NotesView)
   Dim ws As New NotesUIWorkspace
   
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim vec As NotesViewEntryCollection
   Dim ve, oldVe As NotesViewEntry
   Dim newDoc As NotesDocument
   Dim oldDoc As NotesDocument
   
   Set db = s.CurrentDatabase
   Set vec= view.AllEntries
   
   'Ersten Eintrag im View holen
   Set ve = vec.GetFirstEntry()
   
   While Not ve Is Nothing
      
      'Wert der ersten Spalte holen
      oldValue = ve.ColumnValues(0)
      oldValue1 = ve.ColumnValues(1)
      oldValue2 = ve.ColumnValues(2)
      oldValue3 = ve.ColumnValues(3)
      oldValue4 = ve.ColumnValues(4)
      oldValue5 = ve.ColumnValues(5)
      oldValue6 = ve.ColumnValues(6)
      oldValue7 = ve.ColumnValues(7)
      oldValue8 = ve.ColumnValues(8)
      
      'Nächsten eintrag im View holen
      Set ve = vec.GetNextEntry(ve)
      'Wenn es einen nächsten Eintrag gibt
      If Not ve Is Nothing Then
         newValue = ve.ColumnValues(0)
         newValue1 = ve.ColumnValues(1)
         newValue2 = ve.ColumnValues(2)
         newValue3 = ve.ColumnValues(3)
         newValue4 = ve.ColumnValues(4)
         newValue5 = ve.ColumnValues(5)
         newValue6 = ve.ColumnValues(6)
         newValue7 = ve.ColumnValues(7)
         newValue8 = ve.ColumnValues(8)
         
         If newValue = oldValue And newValue1 = oldValue1 And newValue2 = oldValue2 And newValue3 = oldValue3 And newValue4 = oldValue4 And newValue5 = oldValue5 And newValue6 = oldValue6 And newValue7 = oldValue7 Then
            Set oldDoc = vec.GetPrevEntry(ve).Document
            Set newDoc = ve.Document
            
            Dim tmpDoc As New NotesDocument(db)
            Dim item As New NotesItem(tmpDoc,"DUIDS","")
            Call item.AppendToTextList(oldDoc.UniversalID)
            Call item.AppendToTextList(newDoc.UniversalID)
            flag =  ws.DialogBox("dialoge_compareTwoDocs_doppelt_besser",True,True,False,False,False,False,"doppelte Daten",tmpDoc,True,False,True)
            
            If flag Then
               If Isempty(tmpDoc.Vorname) Then newDoc.Vorname=tmpDoc.Vorname Else newDoc.Vorname=tmpDoc.Vorname_1
               If Isempty(tmpDoc.f1) Then newDoc.Strasse=tmpDoc.f1 Else newDoc.Strasse=tmpDoc.f1_1
               If Isempty(tmpDoc.PLZ) Then newDoc.PLZ=tmpDoc.PLZ Else newDoc.PLZ=tmpDoc.PLZ_1
               If Isempty(tmpDoc.Ort) Then newDoc.Ort=tmpDoc.Ort Else newDoc.Ort=tmpDoc.Ort_1
               If Isempty(tmpDoc.Telefon) Then newDoc.Telefon=tmpDoc.Telefon Else newDoc.Telefon=tmpDoc.Telefon_1
               If Isempty(tmpDoc.Handy) Then newDoc.Handy=tmpDoc.Handy Else newDoc.Handy=tmpDoc.Handy_1
               If Isempty(tmpDoc.WWW) Then newDoc.WWW=tmpDoc.WWW Else newDoc.WWW=tmpDoc.WWW_1
               If Isempty(tmpDoc.Geburtstag) Then newDoc.Geburtstag=tmpDoc.Geburtstag Else newDoc.Geburtstag=tmpDoc.Geburtstag_1
               Call newDoc.Save(True,True)
               
               Call oldDoc.Remove(True)
            End If
            
            
         End If
         
      End If
      
   Wend
   
   Call ws.ViewRefresh
End Sub

Falls das hilft. Ansonsten sorry.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln