Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Blitz am 29.07.08 - 15:49:09

Titel: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Blitz am 29.07.08 - 15:49:09
Hallo,

habe noch ein Problem bei meiner Berechtigungsverwaltung.

Wenn ein User gelöscht wird, ändere ich das Feld Status von 7 auf 8.
Dies funktioniert auch. Jetzt muss ich aber noch alle Dokumente mit diesem User in der Datenbank finden und auch das Feld Status von 7 auf 8 ändern.

Als Such kann ich die USER-ID verwenden, da diese bei allen Dokumenten eines Mitarbeiters gleich ist.

Macht man so was am besten über einen Agenten? Wie ist die Formel hierfür?
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: klaussal am 29.07.08 - 15:55:22
Du möchtest in der Designer-Hilfe unter dem Stichwort "NotesDocumentCollection" nachlesen....
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Blitz am 30.07.08 - 09:21:41
Vielen Dank!

Werde es damit mal Probieren. Muss nur noch die genaue Formel damit erstellen!
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: klaussal am 30.07.08 - 09:27:51
Zitat
Muss nur noch die genaue Formel damit erstellen!
  ???
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Speedy am 30.07.08 - 12:10:01
Ich habe für solche Fälle eine Ansicht in der ich nach diversen Dingen kategorisiere.
In Deinem Fall also User-ID
Dann kann ich relativ simpel mit GetAllDokumentsByKey alle zugehörigen Dokumente finden, ohne das ich eine Suche durchführen muss (ist ja ohne Volltextindex u.U. ziemlich langsam!).
Ich erhalte eine NotesDocumentCollection.

Solong
speedy
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Blitz am 04.09.08 - 14:38:56
Hallo,

vielen Dank für die Hilfe.

Eine Ansicht nach User-ID habe ich mir jetzt gemacht.

Mit Lotus Script kenne ich mich leider nicht sehr gut aus.

Wie muss ich mit getalldokumentsbykey machen?

Ein kurzes Beispiel wäre Hilfreich.

Danke
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: koehlerbv am 04.09.08 - 14:43:38
Kurze und gute Beispiele findet man in der DesignerHelp. Wir können da kaum etwas "besseres" posten.

Bernhard
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Blitz am 04.09.08 - 17:40:15
Hallo,

habe jetzt mal ein Script angefangen. Funktioniert aber leider noch nicht. Fehlt glaube noch ein paar Zeilen.

Zur Situation:
Ich stehe in einer Ansicht (A1) auf einem Dokument und löse eine Aktion aus.

In der Ansicht S1 sind alle Dokument nach dem Mitatbeitername (A_User) sortiert.

Nun soll bei allen Dokumenten, die den Mitarbeiternamen des gewählten Dokumentes (A_User) haben, das Feld Status auf 7 geändert werden.

Sub Exiting(Source As Field)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument   
   Dim Mitarbeiter As String
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   Set uidoc = workspace.CurrentDocument   
   Mitarbeiter = uidoc.FieldGetText( "A_User" )
   Set doc = view.GetDocumentByKey( Mitarbeiter )
   Call doc.ReplaceItemValue("Status", "7")
   Call doc.Save(True,True)
End Sub

Muss ich da noch eine Schleife einbauen?
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: koehlerbv am 04.09.08 - 17:42:57
Ich stehe in einer Ansicht (A1) auf einem Dokument und löse eine Aktion aus.
...
Sub Exiting(Source As Field)

Das ist ein Widerspruch in sich!

Ausserdem war die Rede von GetAllDocumentsByKey und nicht von GetDocumentByKey.

Bernhard
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: WildVirus am 05.09.08 - 08:20:37
Hallo Blitz (oder wie auch immer Du heißt),

schalte mal Option Declare ein, baue ein
Code
Set View = .....
ein. Danach siehst Du im Debugger, woran es scheitert.

Schönen Tag noch
Axel
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Blitz am 22.09.08 - 10:02:08
Hallo,

bin jetzt wieder aus den Urlaub zurück und probire es noch mal:

Habe jetzt folgenden Code:

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim dc As NotesDocumentCollection
   Set db = session.CurrentDatabase
   Dim A_USER As String
   Set view = db.GetView( "A_User" )
   Set dc = view.GetAllDocumentsByKey("A_USER")
   While Not(doc Is Nothing)
      Call doc.ReplaceItemValue("Status", "7")
      Call doc.Save( True, False )
      Set doc = collection.GetNextDocument(doc)   
   Wend      
End Sub

Leider kommt der Fehlerhinweis: Object Variable not set.

Welche wird da gemeint? Stehe voll auf der Leitung. Mit Lotus Script tue ich mir noch echt schwer!

Vielen Dank im Voraus.
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: klaussal am 22.09.08 - 10:05:28
Sollte da ein "Dim doc as.... " fehlen ?

Was sagt der Debugger ?

Zitat
schalte mal Option Declare ein

Hast Du das getan ?
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Klafu am 22.09.08 - 10:07:00
Du hast z.B.: "doc" nicht deklariert und willst dann damit arbeiten

Code
Dim doc as NotesDokument

und

Code
Set doc = view.GetAllDocumentsByKey("A_USER")
würd ich sagen


Chris
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: klaussal am 22.09.08 - 10:12:44
Zitat
Set doc = view.GetAllDocumentsByKey("A_USER")

Nein: so war schon richtig !

Zitat
Set dc = view.GetAllDocumentsByKey("Spanish leather", False)
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Klafu am 22.09.08 - 10:18:22
Hm, dann ist das aber nicht der ganze Code, oder ?
Weil er nach Set dc = view.GetAllDocumentsByKey("A_USER") nicht mehr mit dc arbeitet und auch doc nirgends setzt.
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: DAU-in am 22.09.08 - 10:18:52
Dim A_USER As String
Set view = db.GetView( "A_User" )
Set dc = view.GetAllDocumentsByKey("A_USER")



Ich verstehe diese Zeilen nicht.
Du deklarierst eine Stringvariable mit Namen A_User
Du setzt eine Ansicht mit dem Namen (nicht dem Wert) der Stringvariablen.
Dann erstellst du eine Collection aller Dokumente dieser Ansicht, die in der ersten Spalte den Namen der Ansicht in Grossbuchstaben enthalten.
Wozu?
Ist es das, was du wirklich willst?

Grüsse

Dau-in
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: DAU-in am 22.09.08 - 10:20:56
Set doc = collection.GetNextDocument(doc)

Woher kommt collection?
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: klaussal am 22.09.08 - 10:24:04
Und in der Hilfe gibt es dieses schöne Beispiel:

Zitat
Sub Initialize
  Dim session As New NotesSession
  Dim db As NotesDatabase
  Dim view As NotesView
  Dim dc As NotesDocumentCollection
  Dim keyString As String
  keyString = Inputbox("Subject starts with?")
  Set db = session.CurrentDatabase
  Set view = db.GetView("By Category")
  Set dc = view.GetAllDocumentsByKey(keyString, False)
  Set doc = dc.GetFirstDocument()
  If dc Is Nothing Then
     Messagebox keyString,, "Not found"
     Exit Sub
  End If
  While Not(doc Is Nothing)
     Messagebox doc.Subject(0)
     Set doc = dc.GetNextDocument(doc)
  Wend
End Sub
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Blitz am 22.09.08 - 11:48:04
Danke für die vielen schnellen Antworten! Brauche nur immer etwas zeit zum Probieren, da ich nur nebenher programmieren kann.

Habe es jetzt eingefügt.

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim dc As NotesDocumentCollection
   Set db = session.CurrentDatabase
   Set view = db.GetView( "A1" )
   Set dc = view.GetAllDocumentsByKey("A_USER")
   While Not(doc Is Nothing)
      Call doc.ReplaceItemValue("Status", "7")
      Call doc.Save( True, False )
      Set doc = collection.GetNextDocument(doc)   
   Wend      
End Sub

Die Ansicht heißt A1

Wenn ich "Dim doc as NotesDokument" einfüge lässt sich das Script nicht mehr speichern.

Es kommt Class or Type not found - Notesdocument

Ich möchte im Prinzip nur, dass in alle Dokumenten in der Ansicht A1 das Feld Status in 7 geändert wird, bei denen die Variable A_User gleich mit dem ausgewählten Dokument ist.

Danke schon im Voraus.
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: m3 am 22.09.08 - 11:51:35
Ahem. Du solltest doc auch einen initalen Wert zuweisen, ansonsten kommst Du nie in die While-Schleife. ;)
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: klaussal am 22.09.08 - 11:55:38
Zitat
Set doc = dc.GetFirstDocument()

Wer lesen kann, ist eindeutig im Vorteil.
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: DAU-in am 22.09.08 - 11:55:53
Wenn ich "Dim doc as NotesDokument" einfüge lässt sich das Script nicht mehr speichern.

Dann würde ich es mal mit

 "Dim doc as NotesDocument"

versuchen.

Und schalte doch mal Option declare ein.
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: klaussal am 22.09.08 - 12:02:37
Zitat
Und schalte doch mal Option declare ein.

Das haben wir schon ein paar Mal empfohlen: er hört aber nicht auf uns !
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: m3 am 22.09.08 - 12:03:05
Zitat
Set doc = dc.GetFirstDocument()

Wer lesen kann, ist eindeutig im Vorteil.
Ja, da stimme ich Dir zu. Nur wo siehst Du das in dem Code VOR dem While() ? ;)

Code
Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim dc As NotesDocumentCollection
   Set db = session.CurrentDatabase
   Set view = db.GetView( "A1" )
   Set dc = view.GetAllDocumentsByKey("A_USER")
   While Not(doc Is Nothing)
      Call doc.ReplaceItemValue("Status", "7")
      Call doc.Save( True, False )
      Set doc = collection.GetNextDocument(doc)   
   Wend      
End Sub
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: DAU-in am 22.09.08 - 12:05:12
Zitat
Und schalte doch mal Option declare ein.

Das haben wir schon ein paar Mal empfohlen: er hört aber nicht auf uns !

Auf euch nicht, aber vielleicht auf eine T.....trägerin.   ;)

Männer brauchen manchmal eine Konzentrationshilfe  ;D
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Blitz am 22.09.08 - 12:06:43
Danke!

Wie muss ich das Machen?

set doc = ???


Jetzt blick ich bald gar nicht mehr durch.
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Blitz am 22.09.08 - 12:08:13
Habe die Antworten nicht gesehen.

Ich melde mich nochmal!

Danke
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Klafu am 22.09.08 - 12:09:03
Na, du hast eine Schleife in der du prüfst, ob doc leer ist.
Das ist es aber immer, da du im erst IN der Schleife einen Wert zuweist.
Und da kommst du nicht rein wegen dem WHILE NOT(doc is Nothing)

 ;)
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: DAU-in am 22.09.08 - 12:15:58
Und das Zuweisen innerhalb der Scheife würde auch nicht funzen, da du ja doc immer den Nachbarn des alten docs zuweist. Ohne doc jubts aber auch kein Nextdoc.

du brauchst getfirstdocument  (siehe Hilfe oder Beitrag von Klauss)
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Blitz am 22.09.08 - 12:36:10
Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDokument   
   Set db = session.CurrentDatabase
   Set view = db.GetView( "A1" )
   Set dc = view.GetAllDocumentsByKey("A_USER")
   Set doc = dc.GetFirstDocument()   
   While Not(doc Is Nothing)
      Call doc.ReplaceItemValue("Status", "7")
      Call doc.Save( True, False )
      Set doc = collection.GetNextDocument(doc)   
   Wend      
End Sub

Habe das Script jetzt so geändert.

Kann aber leider declare nicht einschalten, da das Script sich nicht speichern lässt.

Class or Type not found: Notesdocument

Tut mir leid, wenn ich so oft nachfargen muss. Hoffe ich komme bald dahinter!

Danke
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: DAU-in am 22.09.08 - 12:37:45
Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDokument   
   Set db = session.CurrentDatabase
   Set view = db.GetView( "A1" )
   Set dc = view.GetAllDocumentsByKey("A_USER")
   Set doc = dc.GetFirstDocument()   
   While Not(doc Is Nothing)
      Call doc.ReplaceItemValue("Status", "7")
      Call doc.Save( True, False )
      Set doc = collection.GetNextDocument(doc)   
   Wend      
End Sub

Habe das Script jetzt so geändert.

Kann aber leider declare nicht einschalten, da das Script sich nicht speichern lässt.

Class or Type not found: Notesdocument

Tut mir leid, wenn ich so oft nachfargen muss. Hoffe ich komme bald dahinter!

Danke


vergleich doch mal deine Schreibweise mit der Schreibweise der collection eine Zeile weiter oben

Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: Blitz am 22.09.08 - 14:09:33
Danke.

War echt blind.

Jetzt kann ich weiter testen!
Titel: Re: Dokumente in Datenbank suchen und Werte ändern
Beitrag von: bikerboy am 22.09.08 - 14:54:48
Warum eigentlich eine Schleife die alle Dokumente durchgeht, wenn er sowieso keine Prüfung vornimmt. Wie is es denn mit NotesDocumentCollection.StampAll ?