Autor Thema: periodischer Agent  (Gelesen 3835 mal)

Offline Ralph

  • Frischling
  • *
  • Beiträge: 18
  • ohne Forum wäre ich ein nichts
periodischer Agent
« am: 31.10.02 - 15:18:27 »
hab ein großes Problem.
Ich hab ein LSkript für die Datenübernahme aus einer anderen Datenbank und muß dieses  mit einem Agenten starten.
1. Wenn ich den Agenten manuell starte funktioniert auch alles bestens.
2. sobald er es periodisch alleine machen soll, läuft er zwar laut Protokoll aber er liest keine Daten ein.

Was mache ich verkehrt ?
Hier der Code ( ist in Zusammenarbeit mit ATA entstanden )

Sub Click(Source As Button)
   ' # #### Übernahme von Adressen #####
' # Denkbar in einer Ansichts-Aktion oder einem Button...
   Dim ws As New NotesUIWorkspace
   Dim session As New NotesSession
   Dim dbThis As NotesDatabase
   Dim dbNAB As NotesDatabase
   Dim vwParDocID As NotesView
   Dim dc As NotesDocumentCollection
   Dim sSearch As String
   Dim dateTime As NotesDateTime
   Set dateTime = New NotesDateTime("01/01/1990")
   
   Dim docNew As NotesDocument
   Dim i As Integer
   
   Set dbThis = session.CurrentDatabase
   Set vwParDocID = dbThis.getView("PersonByParDocId")
   Call vwParDocID.Refresh
   Set dbNAB = session.GetDatabase("pcoi4","names_test.nsf")
   sSearch = | Select Form = "Person" |
   Set dc = dbNAB.Search (sSearch ,dateTime,0)
   'Set dc = ws. PickListCollection(1,True,"pcoi4","names_test.nsf","People","Auswahl der Dokumente","Wählen Sie die gewünschten Dokumente")
   If dc.Count > 0 Then
      Set docNAB = dc.GetFirstDocument
      For i = 1 To dc.Count
      ' # Überprüfen. ob es dieses Dokument bereits gibt
         Set docNew = vwParDocID.GetDocumentByKey(docNAB.UniversalID)
         If docNew Is Nothing Then
        ' # Die Adresse ist noch nicht vorhanden
            Set docNew = dbThis.CreateDocument
            With docNew
               .Form = "TeleMask"
               .ParDocID = docNAB.UniversalID
               .LastName = docNAB.LastName
               .FirstName = docNAB.FirstName
               .OfficePhoneNumber = docNAB.OfficePhoneNumber
               .OfficeFaxPhoneNumber = docNAB.OfficeFaxPhoneNumber
               .FullName = docNAB.FullName
               .CompanyName = docNAB.CompanyName
               .Department = docNAB.Department
               .Location = docNAB.Location
               .MailDomain = docNAB.MailDomain
               .MailAdress = docNAB.Address
               .InternetAddress = docNAB.InternetAddress
   ' # ... die gewünschten Felder eben...
               Call .Save(True, True)
            End With      
         Else
        ' # Die Adresse gibt es bereits - überspringen
         End If        
         Set docNAB = dc.GetNextDocument(docNAB)
         
         
      Next      
   Else
   ' # Es wurden keine Dokumente gewählt      
   End If
' # #### ENDE: Übernahme von Adressen #####
   
End Sub


Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:periodischer Agent
« Antwort #1 am: 31.10.02 - 15:29:33 »
... in einem periodischen Agent kann das eigentlich nicht funktionieren...,

... denn du verwendest eine PickList, daß ist UI - und damit kann der Agent nicht...


ata
Grüßle Toni :)

Offline Ralph

  • Frischling
  • *
  • Beiträge: 18
  • ohne Forum wäre ich ein nichts
Re:periodischer Agent
« Antwort #2 am: 31.10.02 - 15:33:37 »
Hi Ata,

nein Picklist ist auskommentiert,
ich wähle die Dokumente so aus

sSearch = | Select Form = "Person" |
   

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:periodischer Agent
« Antwort #3 am: 31.10.02 - 15:37:01 »
... nimm in die Deklaration des ws heraus, vielleicht stört er sich daran...

ata
Grüßle Toni :)

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re:periodischer Agent
« Antwort #4 am: 31.10.02 - 15:37:50 »
nicht nur vielleicht

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:periodischer Agent
« Antwort #5 am: 31.10.02 - 15:39:41 »
@Till_21

... danke für den Beistand - bei mir is wieder mal Kaffee angesagt... ;D ;D ;D

ata
Grüßle Toni :)

Offline Ralph

  • Frischling
  • *
  • Beiträge: 18
  • ohne Forum wäre ich ein nichts
Re:periodischer Agent
« Antwort #6 am: 31.10.02 - 15:47:25 »
 ???
war es leider nicht.

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:periodischer Agent
« Antwort #7 am: 31.10.02 - 16:00:22 »
.. kannst du mir ein Exemplarder DB zukommen lassen, dann kann ich mich mal durch-debuggen...

ata
Grüßle Toni :)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:periodischer Agent
« Antwort #8 am: 31.10.02 - 16:02:23 »
Hi,

findet er überhaupt Dokumente, d.h. ist der Search-String richtig ?

Du hast geschrieben, dass der Agent, wenn du ihn manuell aufrufst sauber funktioniert. Hast du es da nur mit der Picklist versucht oder auch mit Search?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Ralph

  • Frischling
  • *
  • Beiträge: 18
  • ohne Forum wäre ich ein nichts
Re:periodischer Agent
« Antwort #9 am: 31.10.02 - 16:05:10 »
auch mit search
er findet die documente in meiner DB aber scheinbar übernimmt er keine von der names.nsf
wie gesagt manuell kein Problem

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:periodischer Agent
« Antwort #10 am: 31.10.02 - 16:53:36 »
... hast du die erforderlichen Rechte im Server-Dokument des Servers?

... du kannst die DB auch mit der ID des Servers unterzeichnen, auch das könnte Abhilfe schaffen - vorausgesetzt der Server hat die Berechtigung...

ata
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:periodischer Agent
« Antwort #11 am: 31.10.02 - 17:30:40 »
... ich denke ich bin der Sache auf der Spur. Ich habe die Situation bei mir nachgestellt - da sind Denkfehler bezüglich der Positionierung des Agenten drin...

... soweit ich das übersehe muß der periodische Agent vom Adressbuch aus gestartet werden um dann die Dokumente in deiner Address.DB aktualisieren, bzw. zu exportieren, wenn neue Adressen vorhanden sind...

Wenn ich es heute noch schaffe (hab gerade loose), dann lege ich dir morgen eine Demo vor, so wild ist der Umbau nicht...

ata
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:periodischer Agent
« Antwort #12 am: 31.10.02 - 19:12:09 »
Hallo Ralph,

meine Vermutung war richtig. Der Agent muß aus dem Adressbuch heraus die Dokumente in deiner Zieldatenbank aktualisieren, bzw. hinzufügen.

Ich habe den unteren Code in einen zeitgesteuerten Agent im Initialize eingefügt.
Der Agent gilt für alle Dokumente in der Datenbank, den Terminplan kannst du entsprechend wählen, wie du es brauchst.

Meine Zieldatenbank befindet sich auf demselben Server im Data-Verzeichnis und heißt "Address.nsf" - hier muß du also noch deine Anpassungen fahren.

Und hier der Code:
Code
' # #### Export von Adressen #####
   Dim session As New NotesSession
   Dim dbExport As NotesDatabase
   Dim dbNAB As NotesDatabase
   Dim docNAB As NotesDocument
   Dim vwParDocID As NotesView
   Dim dc As NotesDocumentCollection
   Dim sSearch As String
   Dim dateTime As NotesDateTime
   Set dateTime = New NotesDateTime("01/01/1990")
   
   Dim docNew As NotesDocument
   Dim i As Integer
   
   Set dbNAB = session.CurrentDatabase   
   
   Set dbExport = session.GetDatabase(dbNAB.Server,"address.nsf")
   If dbExport Is Nothing Then
      Print "Keine Export-DB gefunden"
      Exit Sub
   End If
   
   Set vwParDocID = dbExport.getView("PersonByParDocId")
   sSearch = | Select Form = "Person" |
   Set dc = dbNAB.Search (sSearch ,dateTime,0) ' # alle Personen-Dokumente aus dem NAB
   If dc.Count > 0 Then
      Set docNAB = dc.GetFirstDocument
      For i = 1 To dc.Count
      ' # Überprüfen. ob es dieses Dokument bereits gibt
         Set docNew = vwParDocID.GetDocumentByKey(docNAB.UniversalID)
         If docNew Is Nothing Then
        ' # Die Adresse ist noch nicht vorhanden
            Set docNew = dbExport.CreateDocument
            With docNew
               .Form = "TeleMask"
               .ParDocID = docNAB.UniversalID
               .LastName = docNAB.LastName
               .FirstName = docNAB.FirstName
               .OfficePhoneNumber = docNAB.OfficePhoneNumber
               .OfficeFaxPhoneNumber = docNAB.OfficeFaxPhoneNumber
               .FullName = docNAB.FullName
               .CompanyName = docNAB.CompanyName
               .Department = docNAB.Department
               .Location = docNAB.Location
               .MailDomain = docNAB.MailDomain
               .MailAdress = docNAB.Address
               .InternetAddress = docNAB.InternetAddress
  ' # ... die gewünschten Felder eben...
               Call .Save(True, True)
            End With      
         Else
        ' # Die Adresse gibt es bereits - akzualisieren
            With docNew               
               .LastName = docNAB.LastName
               .FirstName = docNAB.FirstName
               .OfficePhoneNumber = docNAB.OfficePhoneNumber
               .OfficeFaxPhoneNumber = docNAB.OfficeFaxPhoneNumber
               .FullName = docNAB.FullName
               .CompanyName = docNAB.CompanyName
               .Department = docNAB.Department
               .Location = docNAB.Location
               .MailDomain = docNAB.MailDomain
               .MailAdress = docNAB.Address
               .InternetAddress = docNAB.InternetAddress
               
               Call .Save(True, True)            
            End With
         End If        
         Set docNAB = dc.GetNextDocument(docNAB)         
      Next      
   Else
  ' # Es wurden keine Dokumente gewählt      
   End If
' # #### ENDE: Übernahme von Adressen #####

Viel Spaß ...

ata
Grüßle Toni :)

Offline Ralph

  • Frischling
  • *
  • Beiträge: 18
  • ohne Forum wäre ich ein nichts
Re:periodischer Agent
« Antwort #13 am: 01.11.02 - 11:00:14 »
 :)
Danke hat alles geklappt.
Da soll nun einer draufkommen das der Agent in der Quell DB laufen muß. Wobei mir das noch nicht einleuchtet warum es andersrum manuell aber nicht automatisch funktioniert. Vielleich habe ich auch zu einfach gedacht.
Meine Gedanken waren das der periodische Agent "im Prinzip für mich auf den Button clickt " habe ich wohl falsch gedacht :-X

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:periodischer Agent
« Antwort #14 am: 01.11.02 - 11:53:36 »
... machmal ist es besser nicht alles zu verstehen, es lässt einen ruhiger schlafen...

ata
Grüßle Toni :)

Offline Ralph

  • Frischling
  • *
  • Beiträge: 18
  • ohne Forum wäre ich ein nichts
Re:periodischer Agent
« Antwort #15 am: 02.12.02 - 18:47:15 »
Hi ata,
ist zwar schon ein bischen her aber ich bin der sache auf die spur gekommen. Unter Datei /vorgaben/Benutzervorgaben muß man den periodischen Agenten explizit aktivieren, hab ich gemach und siehe da er startet und erfüllt seine aufgaben auch von der zieldb aus.

aus unserem anfänglichen quellcode der datenübernahme ist mitlerweile eine ziemlich umfangreiche sache geworden " mit einigem luxus für den anwender" ich werd morgen mal den cod reinstellen, ist bestimmt für andere anfänger auch interessant.

jetzt noch eine Frage.
ich möchte mir gedanken um eine urlaubsplanung machen, habe auch in der downloadarea einen hinweis gefunden leider funzt der link nicht, kannst du mir zu einen gedanken verhelfen.

gruß ralph

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:periodischer Agent
« Antwort #16 am: 02.12.02 - 19:14:25 »
... an die Benutzervorgaben hätte ich auch denken können... na super, daß du das lösen konntest...

... ich habe vor einiger Zeit mal eine DB zur Urlaubsplanung geschrieben. Wenn ich die wieder finde, dann kann ich sicherlich Ausschnitte davon ins Forum stellen.

... wenn du schneller 'ne Antwort brauchst, dann solltest du mal beschreiben, was das Ding können muß:

- Genehmigungsworkflow? Wieviele Positionen?
- zeitkritische Überwachung des Antrages?
- Urlaubs und Zeitkontenverwaltung?
- einheitliche Urlaubsregelug, oder wie im BAT altersgestaffelt...
- Behinderte haben 5 Tage Sonderurlaub
- Resturlaub-Handling:
- - Wieviele Tage dürfen ins neue Jahr genommen werden
- - Gibt es ein Verfalldatum für alten Urlaub z.B. 31.03....
- - Wie werden Ausnahmen gehandelt
- Grafische Ausgaben => Excel?
- Web-fähige Ausgabe?

... du siehst, das Thema kann recht kompliziert werden...

ata   ;)
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz