Autor Thema: DocumentCollection auf doppelte E-Mail Adressen prüfen  (Gelesen 3092 mal)

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Hallo,

in einer Serienjob Datenbank sollen in den
selektierten Dokumenten geprüft werden ob für
eine E-Mail Adresse bereits ein Dokument innerhalb der
Selektion vorhanden ist d.h. damit die Mail nicht zweimal
an den selben Empfänger geschickt wird. Wenn die Mail
Adresse bereits vorhanden ist soll das Document gelöscht
werden.

Kann mir jemand sagen wie es nach der DocumentCollection
weitergeht? Ich befürchte das ich mir alle E-Mail Adressen
aus der DocCollection erstmal in einen Array schreiben muss,
da ich nicht wirklich mit dem erstellen von Arrays vertraut bin,
bin ich über jeden Tip dankbar !!!
Das löschen von Dokumenten innerhalb einer DocCollection
wird wohl auch nicht so einfach gehen?

Danke & Gruß
Chris

Glombi

  • Gast
Re:DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #1 am: 23.09.04 - 16:34:50 »
Du brauchst kein Array.

Arbeite mit einer View, die nach E-Mail Adressen sortiert ist oder mit db.Search(...).
Wenn es ein anderes Dokument (doc.UniversalID <> currentdoc.UniversalID) gibt, dann kannst Du es löschen.

Wobei: Löschen, hmmm bist Du sicher.

Du kannst natürlich auch sicherstellen, dass die E-Mail-Adressen eindeutig sind.
Ein kleiner Evaluate Aufruf mit @Unique...

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #2 am: 23.09.04 - 16:42:09 »
Warum überträgst Du aus der Collection nicht die eMail-Adressen in eine List Variable ? ListTag ist dabei gleich Inhalt, es geht fix, und es garantiert von ganz alleine das Vermeiden doppelter Adressen.

HTH,
Bernhard

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re:DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #3 am: 23.09.04 - 16:45:20 »
Hallo Andreas,

das Problem dabei ist...

Ich hab nur eingeschränkten Zugriff auf das Template
der DB neue Views etc. wollte ich halt nicht erstellen
da ich dann bei jedem Update aufpassen muss das ich
alle von mir durchgeführten Änderungen in der neuen Version
habe.

Das mit dem löschen naja, die Dokumente werden nachdem sie
versand wurden ohnehin aus der Datenbank gelöscht.

Es ist wie gesagt eine SerianJob Datenbank in der Kategorosiert nach
den verschiedenen Campaigns Mail Dokumente od. Briefe erstellt werden.

Bei den Mails geht es darum das halt teiweise in den Adressen und in den
zugehörigen Kontakten die gleiche Mailadresse hinterlegt ist.

Damit jetzt eine Mail nicht zweimal od. dreimal,... an eine Adresse
geschickt wird, soll auf doppelte E-MailAdressen geprüft werden.

Auf die LS Funktion mit der die Dokumente erstellt werden habe ich keinen
Zugriff :-(( deshlab dachte ich mir gehts am schnellsten mit einem LS.Agent
den ich über die Selektierten Dokumente einer Camnpaign laufen lasse...

Naja, einfach :-(

Danke & Gruß
Chris

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re:DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #4 am: 23.09.04 - 16:46:36 »
@Bernhard

Sorry, das verstehe ich nicht :-((

Gruß
Chris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #5 am: 23.09.04 - 17:00:49 »
Schade, Chris, denn Lists sind ein mächtiges Werkzeug.

Guckst Du in der Designerhelp nach den Stichworten "Lists" und "Working with lists" (ACHTUNG - da gibt es auch ein Dokument, das sich auf @functions bezieht).

HTH,
Bernhard

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #6 am: 24.09.04 - 14:52:19 »
Hallo Bernhard,

das ist nicht meine Woche :-(

Wie bekomme ich die Mailadressen aus meiner
DocumentCollection in die Liste?

Danke & Gruß
Chris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #7 am: 24.09.04 - 15:02:27 »
Dim lstMailAddresses List As String

-> Deine Loop through NotesDocumentcollection

lstMailAddresses (docFromColl.MailAddress (0)) = docFromColl.MailAddress (0)

-> Ende Loop

Durch alle Elemente der Liste gehen und Mails senden:

Forall elemMailAddress in lstMailAddresses
  docMail.SendTo = lstMailAddresses (elemMailAddress)
  ....
End ForAll

ListTag und Wert stimmen jeweils überein, aber das macht ja nix. Ein ListTag kann nicht zweimal verwendet werden, beim zweiten Auftauchen der gleichen Mailadresse wird also die erste einfach überschrieben (in der oberen Schleife).

HTH,
Bernhard

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #8 am: 24.09.04 - 15:15:36 »
Hallo Bernhard,

damit werden mir die MailAdressen aller Dokumente
aus der DocCollection in docList übergeben.

Dim session As New NotesSession
Dim db As NotesDatabase
Dim col As NotesDocumentCollection
Dim doc As NotesDocument
Dim docList List As String
Dim counter As Integer
   
Set db = session.CurrentDatabase
Set col = db.UnprocessedDocuments
Set doc = col.GetFirstDocument
   
counter = -1
   
While Not (doc Is Nothing)
counter = counter +1
docList(counter) = doc.SendTo(0)   
Set doc = col.GetNextDocument(doc)
Wend

Wie schaffe ich es jetzt wenn innerhalb der Liste
docList eine MailAdresse mehrfach vorkommt das ich
in dem jeweiligem Dokument die Mailadresse
oder was noch besser wäre das Dokument lösche.

Versendet werden die Mails über eine Funktion aus dem
CRM System.

Danke & Gruß
Chris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #9 am: 24.09.04 - 15:25:10 »
Das hast Du falsch verstanden:
counter = counter +1
docList(counter) = doc.SendTo(0)   

Damit machst Du ja gerade das, was ich oben als Nicht-gewollt angemerkt habe - Du erzeugst zwingend einen neuen Listeintrag für jede Adresse. Lies Dir meinen Beitrag bitte nochmal durch.

Was mir aber noch völlig unklar ist: Wie übergibst Du Mail-Adressen denn dann dem CRM-System ?

Bernhard

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #10 am: 24.09.04 - 15:38:48 »
OK, ich schau mir das nochmal genauer an.....

Das CRM-System hat eine eigene
Funktion über die man die Dokumente
versenden kann.

Gruß
Christian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #11 am: 24.09.04 - 15:42:39 »
Das CRM-System hat eine eigene Funktion über die man die Dokumente versenden kann.

Hallo, Christian,

das beantwortet aber noch nicht meine Frage ... Nicht, dass es dann noch Risiken und Nebenwirkungen gibt.

By the way: Vor dem Einfügen eines neuen Listeneintrags kannst Du mit IsElement auch prüfen, ob dieser schon vorhanden ist (natürlich nicht mit Deinem Verfahren mit "counter"  ;) ) und dann - wenn Du willst - das zugehörige Dokument löschen.

Bernhard

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #12 am: 24.09.04 - 16:31:16 »
Risiken hätte ich dann nicht gesehen, wenn mein Script ordenlich tun würde :-))

Ich geb´s auf,  irgendwie steh ich auf der Leitung....

Ich habe eine Kategorisierte View (Kategorie auf Campaign-Title)
die letzte Spalte beinhaltet die Mailadresse des jeweiligen Empfängers.

Jetzt soll der User die Dokumente innerhalb der Campaign markieren
und über Actions meinen Agent starten der die Dokumente löscht die
an den gleichen Empfänger gerichtet sind, damit nur eine Mail verschickt
wird.
Wenn der Agent fertig ist, kann der User irgendwann die Infos über
die CRM eigene Funktion versenden.

Wie bekomme ich die Adressen in die Liste wenn nicht über den
Collection-Count?

Danke & Gruß
Christian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #13 am: 24.09.04 - 16:45:53 »
Habe ich das jetzt richtig verstanden: Die Action soll "nur" Docs mit doppelter Mailadresse 'rausknallen ?

Naja, dann sind natürlich Lists das Mittel der Wahl. Wenn IsElement wahr ist, dann löschst Du das Dokument, das Du gerade in Deiner Collection bearbeitest.

Bernhard

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #14 am: 24.09.04 - 16:52:20 »
Genau das ist es !!!!!

Und wenn Du mich jetzt noch etwas
unterstützen könntest beim erstellen der
Liste bzw. beim löschen der Dokumente :-))))


Bitte, bitte DANKE :-)

Gruß
Chris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #15 am: 24.09.04 - 17:16:25 »
Ich dächte, ich hätte schon alles geschrieben. Was geht Dir denn noch ab ? Du musst doch nur vor dem Erweitern der List auf das eventuelle Vorhandensein des Elements prüfen und im positiven Fall das gerade bearbeitete Dokument löschen.

Bernhard

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #16 am: 27.09.04 - 09:45:19 »
Hallo Bernhard,

wenn ich mit IsElement meine Liste auf doppelte
Werte im SendTo Feld prüfen möchte bekomme
ich Object Variable not set :-(

Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim col As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim docList List As String
   Dim counter As Integer
   
   Set db = session.CurrentDatabase
   Set col = db.UnprocessedDocuments
   Set doc = col.GetFirstDocument
   
   counter = -1
   
   While Not (doc Is Nothing)
      counter = counter +1
      docList(counter) = doc.SendTo(0)
      Set doc = col.GetNextDocument(doc)
   Wend
   If Iselement (docList(doc.SendTo(0))) = True Then
      Call doc.Remove(True)
   End If

Danke & Gruß
Chris

Offline chris2212

  • Aktives Mitglied
  • ***
  • Beiträge: 162
  • Geschlecht: Männlich
Re: DocumentCollection auf doppelte E-Mail Adressen prüfen
« Antwort #17 am: 27.09.04 - 13:02:49 »
Hallo,

jetzt geht´s  :-)


Falls jemand mal ein ähnliches Problem hat

Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim col As NotesDocumentCollection
Dim doc As NotesDocument
Dim docDelete As NotesDocument
Dim docList List As String
Dim counter As Integer
   
Set db = session.CurrentDatabase
Set col = db.UnprocessedDocuments
Set doc = col.GetFirstDocument
   
counter = -1
   
While Not (doc Is Nothing)
   counter = counter +1
   If Iselement (docList(doc.SendTo(0))) Or doc.SendTo(0) = "" Then
      Set docDelete = doc
   Else
      docList(doc.SendTo(0)) = doc.SendTo(0)         
   End If
   Set doc = col.GetNextDocument(doc)
   If Not (docDelete Is Nothing) Then
      Call docDelete.Remove(True)   
   End If
Wend   
End Sub

Gruß
Chris

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz