super vielen Dank, das hat geholfen
Beiträge von Weissnix
-
-
beim initialisieren gebe ich am Ende ein Print HTMLBody aus
Das ist meine Variabel für das HTML Grundgerüst, jedoch steht dass dann innerhalb des Body vom Agenten
HTML
Alles anzeigen<html> <head> </head> <body text="#000000"> <!DOCTYPE HTML> <html> <head> <title>Kreis Kleve Raumbelegungsplan</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="main.css" /> <link rel="shortcut icon" type="image/x-icon" href="favicon.ico"> </head>
Nur das <h2>Agent ist fertig</h2> ist raus
-
Hallo Zusammen,
ich möchte einen neuen Agenten erstellen, welcher anschließend Einträge aus der DB im Browser wieder gibt.
Direkt zu Anfang gibt mir der Browser folgendes HTML bereits aus:
HTML<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body text="#000000"> <h2>Agent ist fertig</h2></body> </html>
Besteht die Möglichkeit das abzuschalten, um selbst alles zu kontrollieren was ausgegeben wird?
-
Vielen Dank für deine Rückmeldung und Infos.
Ich habe nun dies als erstes via QuerySave- Event versucht:
@MailSend("empfaenger@domain.de";"";"";"Test E-Mail";"Gerade reingekommen";"Bodyfeld1":"Bodyfeld2";"")
- Die E-Mail kam nun beim Epfänger an, jedoch wurde die Eingabe nicht mehr in der Datenbank aufgenommen und auch nicht mehr an den Mailverteiler als Infos gesendet.
- Ich möchte auf ein Bodyfeld zugreifen und dies beim "sendTo" verwenden, dies klappt so zumindest nicht:
@MailSend("BodyfeldDropDown";"";"";"Test E-Mail";"Gerade reingekommen";"Bodyfeld1":"Bodyfeld2";"")
Gelöst: Wenn man die Anführungszeichen weg lässt, wird das Dropdownfeld als Empfänger genutzt
- Kann man den Absender abändern?
-
Hallo Zusammen,
ich versuche mal zu umschreiben was ich bisher umgesetzt habe.
- Internetseite aus Notes mit Snippet Eingabeformular
- Das Formular wurde konfiguriert, ebenso ein Workflow dazu
Die Daten vom Formular landen bereits in der DB und werden mittels individueller Ansichts angezeigt.
Nun wäre der Wunsch, zusätzlich eine Mail zu verschicken, mit den übertragenden Daten, jedoch an eine E-Mail Adresse die man aus dem Formular wählt.
Ein Mailtemplate habe ich bereits gebaut.
Wie würdet Ihr dies lösen? via Workflow? Kann man im WF auf Informationen aus einem Formular zugreifen?
oder muss dies über einen eigenen Agenten geschehen, der alle X Minuten in die DB schaut und Einträge versendet? Falls dies überhaupt geht
Bin wie gesagt neu in der IBM Welt ...
-
Thema somit erledigt
-
Thema somit erledigt
-
Klasse, vielen Dank Torsten, das hat mich auf den richtigen Weg gebracht
-
Hallo Zusammen,
könnt ihr mir sagen, ob in einer ForAll-Schleife Duplikate finden lassen?
Der erste Gedanke war, alles in eine Liste zu schreiben, oder in ein Array und dies innerhalb der ForAll mit iselement zu prüfen...
Ist das der richtige Weg?
Code
Alles anzeigen....... Set doc = view.Getfirstdocument() While Not doc Is Nothing counter=0 dlTitel="" nameInnerXml="" locationInnerXml="" pointsInnerXml="" leitsystempoint="" ...... 'Array der Dokumentenlinks der Ansprechpartner holen und zerlegen ApDokumentLinkstr="" Set item_ApDokumentLink=doc.GetFirstItem("AP_D115_Link") If Not(item_ApDokumentLink Is Nothing) Then orgadocZimmernr="" ForAll refVar In item_ApDokumentLink.Values 'Werte in ein Array um zu prüfen ob schon vorhanden? 'ReDim Preserve leitsystempointarray(counter) 'leitsystempointarray(counter)=refVar 'counter=counter+1 ApDokumentLinkstr=refVar ApDokumentLinkstr=StrRight(ApDokumentLinkstr,ApDokumentLinkstrRight) ApDokumentLinkstr=StrLeft(ApDokumentLinkstr,ApDokumentLinkstrLeft) 'Anhand der Dokumenten ID die Zimmernummer der APs ausgeben If ApDokumentLinkstr<>"" Then Set orgadoc = orgadb.GetDocumentByUNID(ApDokumentLinkstr) Set item_orgadoc=orgadoc.GetFirstItem("Zimmernummer") If Not(item_orgadoc Is Nothing) Then orgadocZimmernr=+item_orgadoc.Values(0) 'Leitsystem Point ermitteln, Innerhalb aller Zimmernummern des Raumes anhand des Schlüssels zimmernummer Set entryMapping = viewMapping.GetEntryByKey(orgadocZimmernr) If Not (entryMapping Is Nothing) Then leitsystempoint = entryMapping.Columnvalues(0) pointsInnerXml=pointsInnerXml+space8+|<point>|+leitsystempoint+|</point>|+Chr(13) Else pointsInnerXml=pointsInnerXml+space8+|<point>L00P0000</point>|+Chr(13) End If locationInnerXml=locationInnerXml+space8+|<location>|+orgadocZimmernr+|</location>|+Chr(13) End If End If End ForAll End If ....... 'Ergebnis zusammen setzen wenn eins der beiden Felder gefüllt ist 'If orgadocZimmernr <> "" Or dlOhneApstr <> "" Then dlRaumNr=orgadocZimmernr+dlOhneApstr 'End If 'XML Struktur Aufbau pointsOuterXml=+space6+|<points>|+Chr(13)+pointsInnerXml+space6+|</points>|+Chr(13) locationOuterXml=space6+|<locations>|+Chr(13)+locationInnerXml+space6+|</locations>|+Chr(13) setInnerXml=space8+|<set>set_03</set>|+Chr(13) setOuterXml=space6+|<sets>|+Chr(13)+setInnerXml+space6+|</sets>|+Chr(13) 'Zusammensetzen der XML Ausgabe: LeseDl=LeseDl+space4+|<destination id="P|+CStr(id)+|" display="true">|+Chr(13)+pointsOuterXml+nameInnerXml+locationOuterXml+setOuterXml+space4+|</destination>|+Chr(13) id=id+1 Set doc = view.Getnextdocument(doc) Wend
-
Du könntest auch einfach per GetDocumentByKey bzw GetEntryByKey nach deiner Raummnummer anstatt der zweiten Schleife suchen, dann müsstest du da nicht alle Dokumente durchgehen
Vielen Dank für den Hinweis, mit GetDocumentByKey konnte ich die Abfrage schnell genug machen
-
Vielen Dank für Deine Rückmeldung, mit Hilfe der Klasse konnte ich dies zumindest lösen und ausgeben.
Das Set... habe ich außerhalb der Schleife gepackt, vielen Dank für den Hinweis.
Das mit der StringBuffer- Klasse habe ich leider nicht verstanden bisher, ansonsten hätte ich dies mit umgesetzt
-
Ich würde jetzt das ganze in eine Klasse einbauen. Die beiden Arrays nur 1 mal als Klassenvariable initialisieren und nicht bei jedem Funktionsaufruf und beim Errorhandler fehlt ein Resume....
Vielen Dank an Umeli für Deine Hilfe, ich habe mit seiner Hilfe nun versucht dies als Klasse zu lösen.
Ich habe nur ein komisches Phänomen, das eine Variabel, die ich an die Funktion der Klasse übergebe auch geändert wird...
Ich versuche den Code mal abzubilden:
Klasse:
Code
Alles anzeigen%REM Class TauscheRaumPrefix Description: Die Prefixe O. oder D. gegen 1. oder 2. tauschen %END REM Class TauscheRaumPrefix Private replaceStr(1) As String Private replaceWithStr(1) As String %REM Sub New Description: Comments for Sub %END REM Public Sub New() replaceStr(0) = "O" replaceStr(1) = "D" replaceWithStr(0) = "1" replaceWithStr(1) = "2" End Sub Public Function TauscheRaumzeichen (orgStr As String) As Variant On Error GoTo ErrHandler orgStr=Replace(orgStr,me.replaceStr,me.replaceWithStr) TauscheRaumzeichen=orgStr Exit Function ErrHandler: Print |Error: LeitsystemXML Agent: Class TauscheRaumPrefix - |+Str(Err) End Function End Class
Mein Aufruf sieht wie folgt aus:
Code
Alles anzeigen... Dim dlorgadoczimmernr As String Dim dlohneapzimmernr As String Dim dlorgadoczimmernrtausch As TauscheRaumPrefix Dim dlorgadoczimmernrtauschrdy As String While Not doc Is Nothing 'Array der Dokumentenlinks der Ansprechpartner holen und abschneiden ApDokumentLinkstr="" Set item_ApDokumentLink=doc.GetFirstItem("AP_D115_Link") If Not(item_ApDokumentLink Is Nothing) Then orgadocZimmernr="" dlorgadoczimmernr="" ForAll refVar In item_ApDokumentLink.Values ApDokumentLinkstr=ApDokumentLinkstr+refVar ApDokumentLinkstr=StrRight(ApDokumentLinkstr,ApDokumentLinkstrRight) ApDokumentLinkstr=StrLeft(ApDokumentLinkstr,ApDokumentLinkstrLeft) 'Anhand der Dokumenten ID die Zimmernummer der APs ausgeben If ApDokumentLinkstr<>"" Then Set orgadoc = orgadb.GetDocumentByUNID(ApDokumentLinkstr) Set item2=orgadoc.GetFirstItem("Zimmernummer") If Not(item2 Is Nothing) Then dlorgadoczimmernr=dlorgadoczimmernr+item2.Values(0)+Chr(13) End If End If End ForAll End If 'Dienstleistungen/Räume mit Zusatzfeld, die sonst keinen Ansprechpartner haben dlOhneApstr="" dlohneapzimmernr="" Set item_dlOhneAp=doc.GetFirstItem("RaeumeLeitsystem") If Not(item_dlOhneAp Is Nothing) Then ForAll refVar2 In item_dlOhneAp.Values dlOhneApstr=dlOhneApstr+space8+|<location>|+refVar2+|</location>|+Chr(13) End ForAll End If 'Ergebnis zusammen setzen wenn eins der beiden Felder gefüllt ist 'If orgadocZimmernr <> "" Or dlOhneApstr <> "" Then 'Die IF Abfrage erzeugt doppelte einträge...daher auskommentiert dlRaumNr=orgadocZimmernr+dlOhneApstr 'Antwortzeit wird zu lang....daher auskommentiert 'dlorgadoczimmernr=+TauscheRaumprefix(dlorgadoczimmernr) 'dlohneapzimmernr=+TauscheRaumprefix(dlohneapzimmernr) Set dlorgadoczimmernrtausch = New TauscheRaumPrefix() If Not (dlorgadoczimmernrtausch Is Nothing) then dlorgadoczimmernrtauschrdy = dlorgadoczimmernrtausch.TauscheRaumzeichen(dlorgadoczimmernr) End If Delete dlorgadoczimmernrtausch 'XML Struktur aufbau pointraueme="" pointraueme=space6+|<points>|+Chr(13)+space8+|<point>POINTAUSGABE</point>|+Chr(13)+space6+|</points>|+Chr(13) dlErgebnis=+space4+|<destination id="P|+CStr(id)+|" display="true">|+Chr(13)+pointraueme+dlTitel dlErgebnis=dlErgebnis+space6+|<locations>|+Chr(13) dlErgebnis=dlErgebnis+dlRaumNr+dlorgadoczimmernr+|Test1|+Chr(13)+dlohneapzimmernr+|Test2|+Chr(13)+dlorgadoczimmernrtauschrdy dlErgebnis=dlErgebnis+space6+|</locations>|+Chr(13) dlErgebnis=dlErgebnis+space6+|<sets>|+Chr(13) dlErgebnis=dlErgebnis+space8+|<set>set_03</set>|+Chr(13) dlErgebnis=dlErgebnis+space6+|</sets>|+Chr(13)+space4+|</destination>| 'End If LeseDl=LeseDl+dlErgebnis+Chr(13) id=id+1 Set doc = view.Getnextdocument(doc) Wend
Sobald ich dlorgadoczimmernr übergebe, wird in der Ausgabe diese Variabel dlorgadoczimmernr verändert ausgegeben
und eben wie erwartet auch die dlorgadoczimmernrtauschrdy
Set dlorgadoczimmernrtausch = New TauscheRaumPrefix()
If Not (dlorgadoczimmernrtausch Is Nothing) then
dlorgadoczimmernrtauschrdy = dlorgadoczimmernrtausch.TauscheRaumzeichen(dlorgadoczimmernr)
End If
Delete dlorgadoczimmernrtausch
-
Hi,
Das kommt darauf an, ob du in der angegebenen Funktion abfragst, ob in dem übergebenem Namen auch Sonderzeichen enthalten sind.
Andreasmh da wüsste ich nun nicht wie ich das vorher abfragen könnte... der Aufruf ist genau wie oben beschrieben
-
Hallo Zusammen,
ich habe mir eine Funktion wie folgt geschrieben:
Code
Alles anzeigen%REM Function tauscheSonderzeichen Description: Zeichen austauschen um XML Notation einzuhalten %END REM Function TauscheSonderzeichen (orgStr As String) As Variant Dim replaceStr(45) As String Dim replaceWithStr(45) As String replaceStr(0) = "ä" replaceStr(1) = "Ä" replaceStr(2) = "ö" replaceStr(3) = "Ö" replaceStr(4) = "ü" replaceStr(5) = "Ü" replaceStr(6) = "ß" replaceStr(7) = "§" replaceStr(8) = "À" replaceStr(9) = "Á" replaceStr(10) = "Ã" replaceStr(11) = "Î" replaceStr(12) = "Â" replaceStr(13) = "È" replaceStr(14) = "É" replaceStr(15) = "Ê" replaceStr(16) = "Ë" replaceStr(17) = "Ì" replaceStr(18) = "Í" replaceStr(19) = "Ò" replaceStr(20) = "Ó" replaceStr(21) = "Ô" replaceStr(22) = "Ù" replaceStr(23) = "Ú" replaceStr(24) = "Û" replaceStr(25) = "Ý" replaceStr(26) = "à" replaceStr(27) = "á" replaceStr(28) = "â" replaceStr(29) = "è" replaceStr(30) = "é" replaceStr(31) = "ê" replaceStr(32) = "ì" replaceStr(33) = "í" replaceStr(34) = "î" replaceStr(35) = "ò" replaceStr(36) = "ó" replaceStr(37) = "ô" replaceStr(38) = "ù" replaceStr(39) = "ú" replaceStr(40) = "û" replaceStr(41) = "ý" replaceStr(42) = "Ć" replaceStr(43) = "ć" replaceStr(44) = "Ĉ" replaceStr(45) = "ĉ" replaceWithStr(0) = "ä" replaceWithStr(1) = "Ä" replaceWithStr(2) = "ö" replaceWithStr(3) = "Ö" replaceWithStr(4) = "ü" replaceWithStr(5) = "Ü" replaceWithStr(6) = "ß" replaceWithStr(7) = "§" replaceWithStr(8) = "À" replaceWithStr(9) = "Á" replaceWithStr(10) = "Ã" replaceWithStr(11) = "Î" replaceWithStr(12) = "Â" replaceWithStr(13) = "È" replaceWithStr(14) = "É" replaceWithStr(15) = "Ê" replaceWithStr(16) = "Ë" replaceWithStr(17) = "Ì" replaceWithStr(18) = "Í" replaceWithStr(19) = "Ò" replaceWithStr(20) = "Ó" replaceWithStr(21) = "Ô" replaceWithStr(22) = "Ù" replaceWithStr(23) = "Ú" replaceWithStr(24) = "Û" replaceWithStr(25) = "Ý" replaceWithStr(26) = "à" replaceWithStr(27) = "á" replaceWithStr(28) = "â" replaceWithStr(29) = "è" replaceWithStr(30) = "é" replaceWithStr(31) = "ê" replaceWithStr(32) = "ì" replaceWithStr(33) = "í" replaceWithStr(34) = "î" replaceWithStr(35) = "ò" replaceWithStr(36) = "ó" replaceWithStr(37) = "ô" replaceWithStr(38) = "ù" replaceWithStr(39) = "ú" replaceWithStr(40) = "û" replaceWithStr(41) = "ý" replaceWithStr(42) = "j" replaceWithStr(43) = "k" replaceWithStr(44) = "l" replaceWithStr(45) = "m" On Error GoTo ErrHandler orgStr=Replace(orgStr,replaceStr,replaceWithStr) TauscheSonderzeichen=orgStr ErrHandler: Print |Error: XML Agent: TauscheSonderzeichen - |+Str(Err) End Function
Ich schicke anschließend jeden String der Sonderzeichen enthalten könnte in die Funktion, ist dies so aus Performance oder anderen Gründen falsch?
-
Wie wird der Agent auf dem Server gestartet ? Wie lange braucht er dann genau bevor er abbricht.
Wenn du mehrere Ergebnisse haben kannst dann eben mit GetAllDocuments/EntriesByKey.
Bitte da auch mal die Hilfe benutzen
Das Script wird im Browser über "https://server/www/db.nsf/meinAgentXML?OpenAgent" aufgerufen.
Bisher brauchte das ganze Skript 525ms (ich musste eine Funktion und eine Schleife rausnehmen)
Mit der Schleife brach die Seite bei 2331ms ab...
-
Wo genau bricht das Script ab ?
Was genau meinst du mit Antwortzeiten, die des Servers ?
Du könntest auch einfach per GetDocumentByKey bzw GetEntryByKey nach deiner Raummnummer anstatt der zweiten Schleife suchen, dann müsstest du da nicht alle Dokumente durchgehen
Das Script/ der Agent gibt einen XML Code auf dem Webserver aus, der bricht nun ab, da die Antwortzeiten zu hoch sind.
Ich probiere das mit dem GetEntryByKey aus, jedoch muss ich dies dann trotzdem in der ForAll Schleife machen.
Vielen Dank für Deine Hilfe
-
Leider komme ich nicht soweit, das Script bricht nun immer ab, die Antwortzeiten dauern zu lang.
Ich durchlaufe für jede Zimmernummer meine While Schleife mit allen Raumnummern/Wegpunkten
Als Beispiel: BRäume E.104, E.107, O.202, D.303, D.304
Die Zimmernummern gehe ich mit einer ForAll Schleife durch, darin dann für jeden Wert meine While Schleife (500 Einträge)...Ich denke ich sollte dies wohl nicht mit einer While Schleife lösen...
Wie würdet ihr die Zimmernummer mit den Raumnummern abgleichen? Vielleicht eher mit einer notesViewEntryCollection.Query?
-
Du überschreibst in deiner Schleife immer wieder den ggf vorher gefunden Wert.
Du müsstest die Zeile
pointraueme=|TREFFER:|+raumnummer+||+Chr(13)
folgendermaßen umschreiben:
pointraueme=pointraeume + |TREFFER:|+raumnummer+||+Chr(13)
Damit wären dann alle Räume mit Zeilenumbruch dort getrennt drin.
Zur Optimierung solltest du die Zuweisung an pointsOuter noch außerhalb der Schleife verschieben
Super vielen Dank, manchmal sieht man den Wald vor lauter Bäumen nicht.
Könnt ihr mir vielleicht noch sagen wenn ich ein Treffer habe, den zugehörigen Wegpunkt ausgeben kann und nicht die Raumnummer?
-
Hallo Zusammen,
ich bin völlig neu in der IBM-Domino Welt.
Ich hoffe Ihr könnt mir etwas helfen
Ich habe für Notes 2 Ansichten mit Masken gebaut, deren Daten Sehen Wie folgt aus:
Ansicht1:
Besprechungsraum Zimmernummer ARäume E.101, O.201, D.301 BRäume E.104, E.107, O.202, D.303, D.304 CRäume E.105, E.106 Ansicht2:
Wegpunkt Raumnummer P12345 E.101 P23456 O.202 ... ... Folgendes möchte ich lösen:
Zimmernummern, die mit Raumnummern übereinstimmen sollen den Wegpunkt ausgeben.
Ich erhalte zwar Treffer, aber nur den letzten Value auch wenn mehrere enthalten sind.
Und wie kann ich bei einem Treffer den Wegpunkt ausgeben und nicht die Raumnummer?
Hoffentlich habe ich nicht zuviel rausgekürzt oder ist es zu umständlich
Code
Alles anzeigen%REM Function LeseBesprechungsraeume %END REM Function LeseBesprechungsraeume As String Dim session As New NotesSession Dim db As NotesDatabase Set db = session.CurrentDatabase Dim view As NotesView Dim viewMapping As NotesView Dim doc As NotesDocument Dim docMapping As NotesDocument Dim item As NotesItem Dim item_zimmernummer As NotesItem Dim item_mapping As NotesItem Dim id As Integer Dim zimmerNrOuter As String Dim raumname As String Dim zimmernummer As String Dim pointraueme As String Dim pointsOuter As String Dim raumnummer As String id=1 LeseBesprechungsraeume="" On Error GoTo Drain If (db Is Nothing) Then GoTo drain End If Set view=db.Getview("Ansicht1") If (view Is Nothing) Then GoTo drain End If Set doc=view.Getfirstdocument() While Not doc Is Nothing raumname="" Set item=doc.GetFirstItem("Besprechungsraum") If Not(item Is Nothing) Then raumname=item.Values(0) raumname=raumname+|Besprechungsraum:|+raumname+Chr(13) End If zimmernummer="" Set item_zimmernummer=doc.GetFirstItem("Zimmernummer") If Not(item_zimmernummer Is Nothing) Then ForAll refVar3 In item_zimmernummer.Values zimmernummer=refVar3 End ForAll zimmerNrOuter=|Zimmernr:|+zimmernummer+Chr(13) End If Set viewMapping=db.Getview("Ansicht2") If (viewMapping Is Nothing) Then GoTo drain End If raumnummer="" pointraueme="" Set docMapping=viewMapping.Getfirstdocument() While Not (docMapping Is Nothing) Set item_mapping=docMapping.Getfirstitem("Raumnummer") If Not(item_mapping Is Nothing) Then raumnummer=item_mapping.Values(0) If raumnummer = zimmernummer Then pointraueme=|TREFFER:|+raumnummer+||+Chr(13) End If End If pointsOuter=|Folgende gefunden:|+Chr(13)+pointraueme+Chr(13) Set docMapping = viewMapping.Getnextdocument(docMapping) Wend id=id+1 Set doc=view.Getnextdocument(doc) Wend Exit Function drain: MessageBox |Agent: LeseBesprechungsraeume - |+Str(Err) End Function