Domino 9 und frühere Versionen > ND6: Entwicklung

Agent - Kundennummer prüfen

(1/4) > >>

dengao:
Hallo zusammen,

ich habe eine Datenbank erstellt wo eine Geräteausgabe vermerkt wird. In der Ausgabemaske soll nach Eingabe der Kundennummer geprüft werden ob der Kunde nicht schon ein Gerät bekommen hat. Wenn ja soll eine Meldung am Bildschirm erscheinen.
Leider kann ich die Prüfung nicht direkt in der Eingabemaske machen sondern über einen Agent, da die Mitarbeiter nicht alle Dokumente sehen können (Leserfeld).
Mit diesem LS rufe ich den Agent auf:

Sub Exiting(Source As Field)
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim doc2 As NotesDocument
   Dim agent As NotesAgent
   Dim ws As New NotesUIWorkspace
   
   Set db = s.CurrentDatabase
   Set doc2=ws.CurrentDocument.Document

 'Dokument erstellen um Kundennummer zu übergeben
   Set doc = New NotesDocument(db)
   doc.Kundennummer = doc2.GetItemValue("Kundennummer")
   Call doc.Save(True, False)
   
  'Agent mit übergabe der Dokumenten ID starten
   Set agent = db.GetAgent("Kdpruf")
   Call agent.Run(doc.NoteID)
End Sub


Der Agent sieht so aus:

Sub Initialize
   Dim ws As New NotesUIWorkspace
   Dim doc As NotesDocument
   Dim note As NotesDocument
   Dim kunde As Variant
   Dim gefkunde As Variant
   Dim session As New NotesSession
   Dim collection As NotesDocumentCollection
   Dim sSelection As String
   Dim dtCutOff As New NotesDateTime("")
   Dim zaehler As Long
   Dim mtext As String
   Dim filiale As Variant
   Dim erstellt As Variant
   Dim kdname As Variant
   Dim umtext As String
   Dim agent As NotesAgent
   Dim db As NotesDatabase
   
   Set db=session.CurrentDatabase
   Set agent = session.CurrentAgent
   
   zaehler=0   
   Set doc=db.GetDocumentByID(agent.ParameterDocID)
   kunde= doc.Kundennummer(0)
   Call doc.Remove(True)
   
'Alle Dokumente des Kunden mit dem Formular Ausgabe suchen
   sSelection = |Form = "Ausgabe"|
'Führe Suche aus
   Set collection = session.CurrentDatabase.Search(sSelection, _
   dtCutOff, 0)
   
   Set note = collection.GetFirstDocument
   While Not note Is Nothing
      gefkunde=note.GetItemValue("Kundennummer")
      If gefkunde(0) = kunde(0) Then
         zaehler=zaehler+1
         erstellt=note.Created
         filiale=note.GetItemValue("Filiale")
         kdname=note.GetItemValue("KdName")
         mtext= mtext & filiale(0) & "          " & erstellt & "          "& kdname(0) & Chr(10)
      End If
      Set note = collection.GetNextDocument(note)
   Wend
   umtext= Chr(10) & Chr(10) & "Filiale   Ausgabe am                         Kunde" & Chr(10) & "-----------------------------------------------------------------------------"& Chr(10)
'Wieviele Leser hat der Kunde bereits?
   If zaehler> 0 Then
      Messagebox "Der Kunde hat bereits " & zaehler & " Geräte bekommen"& Chr(10) & umtext & mtext & Chr(10) & "Bitte prüfen Sie ob der Kunde noch ein Gerät benötigt.", _
      48, "Wichtiger Hinweis"
   End If
End Sub


Kann mir ggf. jemand einen Tipp geben was ich falsch mache?

Danke

DerAndre:
What´s the problem?

Errorhandling wäre gut und Du hast keinerlei überprügung ob der Agent gelaufen ist oder nicht, Du rufst Ihn einfach nur auf.

Agenten lassen keine Interaktion mit dem Benutzer zu. Schau mal in der Hilfe nach agent.run.

P.S. Agenten laufen mit Benutzerrechten.

dengao:

--- Zitat von: DerAndre am 07.02.07 - 13:34:26 ---Agenten lassen keine Interaktion mit dem Benutzer zu. Schau mal in der Hilfe nach agent.run.

--- Ende Zitat ---
Kann ich dann kein "Messagebox" aufrufen? Wenn ich den Agent umbiege und über "Aktionen" aufrufe hat der mir die Messagebox gezeigt.

--- Zitat von: DerAndre am 07.02.07 - 13:34:26 ---P.S. Agenten laufen mit Benutzerrechten.

--- Ende Zitat ---
Dann hilft mir mein Ansatz nicht weiter. Gibt es denn mit "collection" eine Möglichkeit alle Dokumente (auch die die nicht gelesen werden dürfen) zu bekommen?

klaussal:
Mach doch einen Knopf in der Maske. Dahinter steckt sinngemäss der Code des o.a. Agenten und dann wertest du das Ergebnis aus.

Ohne den Knopf gedrückt zu haben lässt sich z.Bsp. das Doc nicht speichern, o.ä.

DerAndre:
Die Idee ist gut, aber Löst das Problem wegen der fehlenden Leseberechtigung nicht...

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln