Autor Thema: Dokumente in Datenbank suchen und Werte ändern  (Gelesen 10651 mal)

Offline Blitz

  • Frischling
  • *
  • Beiträge: 35
  • Geschlecht: Männlich
Dokumente in Datenbank suchen und Werte ändern
« 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?

klaussal

  • Gast
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #1 am: 29.07.08 - 15:55:22 »
Du möchtest in der Designer-Hilfe unter dem Stichwort "NotesDocumentCollection" nachlesen....

Offline Blitz

  • Frischling
  • *
  • Beiträge: 35
  • Geschlecht: Männlich
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #2 am: 30.07.08 - 09:21:41 »
Vielen Dank!

Werde es damit mal Probieren. Muss nur noch die genaue Formel damit erstellen!

klaussal

  • Gast
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #3 am: 30.07.08 - 09:27:51 »
Zitat
Muss nur noch die genaue Formel damit erstellen!
  ???

Offline Speedy

  • Frischling
  • *
  • Beiträge: 16
  • Geschlecht: Männlich
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #4 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

Offline Blitz

  • Frischling
  • *
  • Beiträge: 35
  • Geschlecht: Männlich
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #5 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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #6 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

Offline Blitz

  • Frischling
  • *
  • Beiträge: 35
  • Geschlecht: Männlich
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #7 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?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #8 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

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #9 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

Offline Blitz

  • Frischling
  • *
  • Beiträge: 35
  • Geschlecht: Männlich
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #10 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.

klaussal

  • Gast
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #11 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 ?

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #12 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
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

klaussal

  • Gast
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #13 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)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #14 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.
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #15 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
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #16 am: 22.09.08 - 10:20:56 »
Set doc = collection.GetNextDocument(doc)

Woher kommt collection?
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

klaussal

  • Gast
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #17 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

Offline Blitz

  • Frischling
  • *
  • Beiträge: 35
  • Geschlecht: Männlich
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #18 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.

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Dokumente in Datenbank suchen und Werte ändern
« Antwort #19 am: 22.09.08 - 11:51:35 »
Ahem. Du solltest doc auch einen initalen Wert zuweisen, ansonsten kommst Du nie in die While-Schleife. ;)
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz