Autor Thema: Email-Auswahl  (Gelesen 2653 mal)

Offline taheri

  • Senior Mitglied
  • ****
  • Beiträge: 380
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Email-Auswahl
« am: 08.08.02 - 10:33:03 »
Hallo liebe Entwickler,
Ich habe ein Problem und wie Ihr weiß bin Ich keine Entwickler vor allem wenn es um Scrip geht. Aber der Chef will das.

Hier sieht Ihr ein Agent. Was er macht ist euch sicherlich uninteressant. Auf jedenfalls bringt er Information in einer Maske.und die Maske wird als Email an eine feste Adresse geschickt.
Feste Adresse wird in Zeile 30 geschrieben (Send to.)  Jetzt genau in dieser stelle soll kein feste Adresse mehr sein, sondern so eine Art Auswahl Adresse von mir Aus entweder persönliche Adressbuch. Oder Anstichauswahl in Datenbank selber (Datenbank hat seine eigene Maskenadresse mit Email und Ansichten) oder so was ähnliches.
.ist das möglich?

danke

Sub Initialize
     Dim session As New Notessession
     Dim ws As New NotesUIWorkspace
     Dim uidoc As NotesUIDocument    
     Dim db As NotesDatabase    
     Dim newdoc As NotesDocument  'neuer Reproauftrag in DB
     Dim doc As NotesDocument     'Plandokument in DB
     Dim vdoc As NotesDocument   'Verteilerdokument in DB
     Dim profile As notesdocument      
     Dim rtitem As NotesrichtextItem
     Dim plitem As NotesItem
     Dim profitem As Notesitem
     Dim view As NotesView
     Dim user As String
     
     Set db = session.Currentdatabase
     Set View = db.GetView("ReproAuswahl")
     Set profile = db.GetProfileDocument("DBProfil")
     Nummern = profile.GetItemValue("Nummern")        
     
     Set newdoc = New NotesDocument(db)
     newdoc.Form = "ReproAuftrag"
     user=session.CommonUserName
     Call newdoc.ReplaceItemValue("Autor",user)
     Call newdoc.ReplaceItemValue("Ersteller",user)
     'als Autorenfeld setzen:    
     Set plitem=newdoc.GetFirstItem("Autor")
     plitem.IsAuthors=True
     plitem.IsSummary=True
    'SendTo-Feld erzeugen:
[[[[[      Call newdoc.ReplaceItemValue("SendTo", "entwicklung@domäne.de")   ]]]]]  
     
     For i = 0 To Ubound(Nummern)
           zw = ""
           Set doc = view.GetDocumentByKey(Nummern(i))
           
%REM
Die Plan-Dateien werden nicht mehr mit dem Auftrag verschickt...
           Set rtitem = doc.GetFirstItem("Plot")
           Call newdoc.CopyItem(rtitem,"Anlage_" & i)
%END REM
           
           '... dafür wird jetzt die Doc-ID des Plandocumentes mitverschickt...
           Call newdoc.replaceitemvalue( "PlanUnid_" & Cstr(i), doc.universalid)
           
           '... und der Name des Attachments
           Set rtitem = doc.getfirstitem("Plot")
           If Isarray( rtitem.embeddedObjects) Then
                 Forall att In rtitem.embeddedObjects
                       If att.type = Embed_Attachment Then
                             zw = zw + att.name
                       End If
                 End Forall
           End If
           If zw <> "" Then
                 Call newdoc.replaceitemvalue( "AttName_" & Cstr(i), zw)
           Else
                 Call newdoc.replaceitemvalue( "AttName_" & Cstr(i), "Kein Attachment vorhanden!")
           End If
           
           
           Set plitem=doc.GetFirstItem("PlanFormat")
           Call newdoc.CopyItem(plitem, "Größe_" & i)            
           
           Set plitem=doc.GetFirstItem("Verteilerschluessel")          
           Call newdoc.CopyItem(plitem,"VS_" & i)        
           
           Set plitem=doc.GetFirstItem("PlanID")          
           Call newdoc.CopyItem(plitem,"PlanID_" & i)
           
           
           
           Anz=0
           For j=0 To 9              
                 zw=doc.GetItemValue("Farbe_" & Cstr(j))          
                 Anz= Anz+Cint(zw(0))
           Next j
           Call newdoc.ReplaceItemValue("pafa_" & i, Anz)
           
           Anz=0
           For j=0 To 9              
                 zw=doc.GetItemValue("sw_" & Cstr(j))          
                 Anz= Anz+Cint(zw(0))
           Next j
           Call newdoc.ReplaceItemValue("pasw_" & i, Anz)
           
     Next i
     
     Call newdoc.save(True,True)    
     
     Call view.Refresh
     Set uidoc = ws.EditDocument(True,newdoc)    
     
End Sub
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Email-Auswahl
« Antwort #1 am: 08.08.02 - 13:03:30 »
Hi Taheri!

Nur mal so eine Frage, weil ich die Angabe nicht richtig kapiert habe. Soll WÄHREND dieser Agent ausgeführt werden, ein Adressauswahldialog erscheinen, oder sollte diese Adresse schon im VORHINEIN irgendwo angegeben und später nur noch ausgelesen werden?
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline taheri

  • Senior Mitglied
  • ****
  • Beiträge: 380
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Email-Auswahl
« Antwort #2 am: 08.08.02 - 13:22:22 »
Beim Erzeugen einen Auftrag wird eine Maske gestartet. Diese Agent fühlt diese Maske mit Informationen. Was ist bestellt wurde, Anzahl und usw. es gibt eine Klickfunktion in Maske (auftrag senden)  und Auftrag wird  an Adresse  in Agent geschickt.  Das heißt der Anwender wählt keine Adresse, sondern der Auftrag  wird an je nachdem welche Adresse in Agent ist gesendet.

Nachteil ist , die Aufträge landen immer nur bei einem ,desen  Adresse in Agent ist.

Jetzt soll es so sein. , Bei Klickfunktion in der Maske  (auftarg senden)  soll  der Anwender in der Lage sein eine Auswahl zu treffen. An wem soll es gesendet werden.

Woher er auswählen soll. Habe ich zwei Möglichkeit entweder soll er die Auswahl aus seinem persönliche Adressbuch treffen. Oder gibt es in Datenbank auch die Möglichkeit der Name mit Email eingebn

danke
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Email-Auswahl
« Antwort #3 am: 08.08.02 - 13:34:22 »
Ok, kapiert! Du könntest es folgendermaßen versuchen.

Mache in deiner Maske noch ein zusätzliches Feld, das du 'SendTo' nennst. Nun machst du eine zusätzliche Aktion oder Schaltfläche, die du mit folgender Formel belegst:

@Command([MailAddress])

Durch diese Formel erscheint der Adressauswahldialog, und die ausgewählte/n Adresse/n wird/werden automatisch in das Feld SendTo geschrieben.

Die Zeile im Scriptcode schreibst du so:

Call newdoc.ReplaceItemValue("SendTo", ws.CurrentDocument.FieldGetText("SendTo"))


lg
Manuel
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline taheri

  • Senior Mitglied
  • ****
  • Beiträge: 380
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Email-Auswahl
« Antwort #4 am: 08.08.02 - 13:52:08 »
ich werde sofort testen.

noch eine frage
@Command([MailAddress])

was wird hier aktiv?

danke
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Email-Auswahl
« Antwort #5 am: 08.08.02 - 14:00:25 »
Durch @Command([MailAddress]) öffnet sich der Adressauswahldialog, so wie du ihn gewöhnt bist, wenn du eine Mail schreibst.

Zitat
MailAddress  

Öffnet das Fenster "Mail-Adresse", aus dem Sie die Namen von Personen und Arbeitsgruppen für die Aufnahme in ein Adreßfeld eines Mail-Dokuments wählen können.
Syntax
@Command([MailAddress])
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline taheri

  • Senior Mitglied
  • ****
  • Beiträge: 380
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Email-Auswahl
« Antwort #6 am: 08.08.02 - 14:13:40 »
Danke ersmal

mit Command hat es sehr gut geklappt. ich kann jetzt ein auswahl treffen. mit Agent nicht. kommt felhler Meldung.

für  Anfang ist klasse. der Anwender soll nur den erste Emfänger entfernen . es ist automatische in auswahl eingetragen

mfg
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Email-Auswahl
« Antwort #7 am: 08.08.02 - 14:22:04 »
Ups, hab ich nicht mitgedacht, ist eh klar. Mit ws.CurrentDocument greift man auf das aktuelle Frontend-Dokument zu, nur im Agenten kann das nicht funktionieren. Du könntest die Adresse in ein Profildokument schreiben und dann auslesen. Weißt wie das funktioniert?
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline taheri

  • Senior Mitglied
  • ****
  • Beiträge: 380
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Email-Auswahl
« Antwort #8 am: 08.08.02 - 14:25:49 »
so was habe ich mir auch gedacht. so ein art profil.weil die Emfänger maximal 3 personen sind.Leider weiss ich nicht wie . abgesehen von maske erstellen und Ansichten

mfg
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Email-Auswahl
« Antwort #9 am: 08.08.02 - 14:49:21 »
Erstelle eine neue Maske, Name könnte lauten "MailAddress". Diese Maske enthält ein Feld mit dem Namen "SendTo". Das Feld "SendTo" in der anderen Maske bleibt aber dennoch erhalten.

Die Aktion "Adresse" muss nun so aussehen:
@Command([MailAddress]);
@SetProfileField("MailAddress"; "SendTo"; SendTo; @UserName)

In das Profildokument "MailAddress", das einem bestimmten User zugeordnet ist, wird in das Feld SentTo der Inhalt des Feldes SentTo der Auftragsmaske geschrieben.

Im Script musst du natürlich auch noch ein paar Zeilen ergänzen:

Sub Initialize
Dim session As New Notessession
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument      
Dim db As NotesDatabase      
Dim newdoc As NotesDocument  'neuer Reproauftrag in DB
Dim doc As NotesDocument     'Plandokument in DB
Dim vdoc As NotesDocument   'Verteilerdokument in DB
Dim profile As notesdocument  
Dim profileMail As NotesDocument
Dim rtitem As NotesrichtextItem
Dim plitem As NotesItem
Dim profitem As Notesitem
Dim view As NotesView
Dim user As String
 
Set db = session.Currentdatabase
Set View = db.GetView("ReproAuswahl")
Set profile = db.GetProfileDocument("DBProfil")
Set profileMail = db.GetProfileDocument("MailAddress", session.UserName)
Nummern = profile.GetItemValue("Nummern")    
 
Set newdoc = New NotesDocument(db)
newdoc.Form = "ReproAuftrag"
user=session.CommonUserName
Call newdoc.ReplaceItemValue("Autor",user)
Call newdoc.ReplaceItemValue("Ersteller",user)
'als Autorenfeld setzen:      
Set plitem=newdoc.GetFirstItem("Autor")
plitem.IsAuthors=True  
plitem.IsSummary=True
    'SendTo-Feld erzeugen:
    Call newdoc.ReplaceItemValue("SendTo", profileMail.SendTo(0))
 
For i = 0 To Ubound(Nummern)
 zw = ""
 Set doc = view.GetDocumentByKey(Nummern(i))
 
%REM
Die Plan-Dateien werden nicht mehr mit dem Auftrag verschickt...
 Set rtitem = doc.GetFirstItem("Plot")
 Call newdoc.CopyItem(rtitem,"Anlage_" & i)
%END REM
 
 '... dafür wird jetzt die Doc-ID des Plandocumentes mitverschickt...
 Call newdoc.replaceitemvalue( "PlanUnid_" & Cstr(i), doc.universalid)
 
 '... und der Name des Attachments
 Set rtitem = doc.getfirstitem("Plot")
 If Isarray( rtitem.embeddedObjects) Then
  Forall att In rtitem.embeddedObjects
   If att.type = Embed_Attachment Then  
    zw = zw + att.name
   End If
  End Forall
 End If
 If zw <> "" Then
  Call newdoc.replaceitemvalue( "AttName_" & Cstr(i), zw)
 Else  
  Call newdoc.replaceitemvalue( "AttName_" & Cstr(i), "Kein Attachment vorhanden!")
 End If
 
 
 Set plitem=doc.GetFirstItem("PlanFormat")
 Call newdoc.CopyItem(plitem, "Größe_" & i)    
 
 Set plitem=doc.GetFirstItem("Verteilerschluessel")      
 Call newdoc.CopyItem(plitem,"VS_" & i)    
 
 Set plitem=doc.GetFirstItem("PlanID")      
 Call newdoc.CopyItem(plitem,"PlanID_" & i)
 
 
 
 Anz=0
 For j=0 To 9      
  zw=doc.GetItemValue("Farbe_" & Cstr(j))      
  Anz= Anz+Cint(zw(0))
 Next j
 Call newdoc.ReplaceItemValue("pafa_" & i, Anz)
 
 Anz=0
 For j=0 To 9      
  zw=doc.GetItemValue("sw_" & Cstr(j))      
  Anz= Anz+Cint(zw(0))
 Next j
 Call newdoc.ReplaceItemValue("pasw_" & i, Anz)
 
Next i
 
Call newdoc.save(True,True)      
 
Call view.Refresh
Set uidoc = ws.EditDocument(True,newdoc)      
 
End Sub


Ich hoffe es funktioniert!
lg
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz