Autor Thema: Für Vergleichsoperatoren müssen zwei Werte desselben Datentyps angegeben sein  (Gelesen 4779 mal)

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
Habe mal wieder ein Problem mit einen Agenten...

Fehlermedlung:

Agent 'Terminüberwachung' wurde am 08.11.2007 11:25:58 gestartet
Bearbeitet alle Dokumente in der Datenbank: insgesamt 28
28 Dokumente gefunden, die die Suchkriterien erfüllen
Fehler in Formel: Für Vergleichsoperatoren müssen zwei Werte desselben Datentyps angegeben werden.
0 Dokument(e) wurden durch die Formel geändert
Agent 'Terminüberwachung' wurde am 08.11.2007 11:25:58 beendet


Der Agent soll Dokumente raussuchen die hätten bis heute berabeitet wurden aber noch nicht erledigt sind. Die Felder sind beides Datumsfelder.
Was ich nicht verstehe sind außerdem die 28 Dokumente: Wenn ich Agent wäre würde ich nur 2 Dokumente finden die den Kriterien entsprechen...



Hier mal ein Ausschnitt aus dem Agenten:

SELECT (
((DatumBearbeitung_110 <= @Today) & (DatumErledigt_110 = "")) |
((DatumBearbeitung_120 <= @Today) & (DatumErledigt_110 = "")) |
((DatumBearbeitung_140 <= @Today) & (DatumErledigt_110 = "")) |
((DatumBearbeitung_150 <= @Today) & (DatumErledigt_110 = "")) |
((DatumBearbeitung_160 <= @Today) & (DatumErledigt_110 = "")) |
((DatumBearbeitung_200 <= @Today) & (DatumErledigt_110 = "")) |
((DatumBearbeitung_300 <= @Today) & (DatumErledigt_110 = "")) |
((DatumBearbeitung_400 <= @Today) & (DatumErledigt_110 = "")) |
((DatumBearbeitung_900 <= @Today) & (DatumErledigt_110 = ""))
            );


@If(((DatumBearbeitung_110 <= @Today) & (@Text(DatumErledigt_110) = ""));_Sachbearbeiter := Sachbearbeiter_110;
((DatumBearbeitung_120 <= @Today) & (@Text(DatumErledigt_110) = "")) ;_Sachbearbeiter := Sachbearbeiter_120;
((DatumBearbeitung_140 <= @Today) & (@Text(DatumErledigt_110) = "")) ;_Sachbearbeiter := Sachbearbeiter_140;
((DatumBearbeitung_150 <= @Today) & (@Text(DatumErledigt_110) = "")) ;_Sachbearbeiter := Sachbearbeiter_150;
((DatumBearbeitung_160 <= @Today) & (@Text(DatumErledigt_110) = "")) ;_Sachbearbeiter := Sachbearbeiter_160;
((DatumBearbeitung_200 <= @Today) & (@Text(DatumErledigt_110) = "")) ;_Sachbearbeiter := Sachbearbeiter_200;
((DatumBearbeitung_300 <= @Today) & (@Text(DatumErledigt_110) = "")) ;_Sachbearbeiter := Sachbearbeiter_300;
((DatumBearbeitung_400 <= @Today) & (@Text(DatumErledigt_110) = "")) ;_Sachbearbeiter := Sachbearbeiter_400;
((DatumBearbeitung_900 <= @Today) & (@Text(DatumErledigt_110) = "")) ;_Sachbearbeiter := Sachbearbeiter_900;_Fehler);

Danach schickt er an _Sachbearbeiter eine mail...

Gruß

Thomas

klaussal

  • Gast
Zur Überprüfung würde ich mir eine Ansicht bauen, die die gleichen Select-Kriterien wie der Agent hat.
Und dann mal prüfen.

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
DatumBearbeitung_110 <= @Today ... Fehler, wenn DatumBearbeitung_110 = ""
DatumErledigt_110 = "" ... Fehler, wenn in DatumErledigt_110 ein Datum
Gruß
Dirk

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
toll... dann gibt es immer Fehler denn beide Fehler können mal leer sein und mal gefüllt!

Wie kann ich denn nun richtig vergleichen?

In der gebauten Ansicht sind übrigens 3 Dokumente (also 1 zuviel)

Gruß

Thomas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Du musst mit @IsTime vorher auf gültige Datumswerte prüfen.

Bernhard

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
Super Danke...

In der Ansicht funktioniert es jetzt mit @istime und @istext

SELECT (
(@IsText(DatumErledigt_110) = 1 & @IsTime(DatumBearbeitung_110 ) = 1 & DatumBearbeitung_110 <= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_120) = 1 & @IsTime(DatumBearbeitung_120) = 1 & DatumBearbeitung_120<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_140) = 1 & @IsTime(DatumBearbeitung_140) =  1 & DatumBearbeitung_140<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_150) = 1 & @IsTime(DatumBearbeitung_150) = 1 & DatumBearbeitung_150<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_160) = 1 & @IsTime(DatumBearbeitung_160) = 1 & DatumBearbeitung_160<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_200) = 1 & @IsTime(DatumBearbeitung_200) = 1 & DatumBearbeitung_200<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_300) = 1 & @IsTime(DatumBearbeitung_300) = 1 & DatumBearbeitung_300<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_400) = 1 & @IsTime(DatumBearbeitung_400) = 1 & DatumBearbeitung_400<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_900) = 1 & @IsTime(DatumBearbeitung_900) = 1 & DatumBearbeitung_900<= @Today & DatumErledigt_110 = "")
)

Gruß

Thomas

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
Super der Agent funktioniert jetzt aber leiderr nur wenn ich ihn aus dem Mneü starte und nicht per Zeitplan... Warum?

Hier die Log:

09.11.2007 10:00:21   AMgr: Start executing agent 'Terminüberwachung' in 'Entwicklung\xxx.nsf' by Executive '1'
09.11.2007 10:00:21   AMgr: 'Name/xxxxxx/xxxxx' is the agent signer of agent 'Terminüberwachung' in 'Entwicklung\xxx.nsf'
09.11.2007 10:00:21   AMgr: 'Agent 'Terminüberwachung' in 'Entwicklung\xxx.nsf' will run on behalf of 'Name/xxxxx/xxxx'

Also leider keine Fehlermeldung! Was heißt hier Executive '1'?

Gruß

Thomas Schmidt

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
kann mir evtl noch einer einen Tipp geben warum der Agent nicht periodisch läuft?

Gruß


Thomas

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Falscher Servername eingetragen im Agenten?
keine Rechte?
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline WernerMo

  • @Notes Preisträger
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.050
  • Geschlecht: Männlich
Hallo,
wenn es das ist:
Falscher Servername eingetragen im Agenten?
dann steht das auch im Log,

es könnte auch noch am Signierer liegen, laufen auf genau diesem Server schon periodische Agenten, die vom selben Signierer signiert sind?

Auf welchem Server hat der Signierer seine mailbox (laut names)?

Viele Grüße Werner
Gruß Werner
  o                                                  o   
 /@\  Nächster @Notes-Stammtisch  /@\  online Sept. 2020?
_/_\__________________________/_\_ Details folgen.

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
signiert vom Server der keine mailbox hat. ich habe unter ausführen in Namen von mich eingetragen so laufen andere Agenten.

Der Server hat komplette Rechte an der Datenbank genau wie ich auch...


Offline WernerMo

  • @Notes Preisträger
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.050
  • Geschlecht: Männlich
hast Du Deine Mailbox auf diesem Server (laut Names)?

mit Rechte sind die Ausführungsrechte auf diesem Server gemeint,
zusätzlich wäre noch interessant auf welche Rechte der Agent gestellt ist beschränke Operationen (nicht) zulassen etc.

Gruß Werner
Gruß Werner
  o                                                  o   
 /@\  Nächster @Notes-Stammtisch  /@\  online Sept. 2020?
_/_\__________________________/_\_ Details folgen.

Driri

  • Gast
Was ist denn in dem periodischen Agent für ein Laufzeit-Ziel eingestellt ? Steht der auch auf "Alle Dokumente in der Datenbank" ?

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
mein mail liegt auf dem Server...

eingestellt ist der Agent auf:

Alle Dokumente in der Datenbank

Rechte:

2. Beschränkte Operationen zulassen

Gruß

Thomas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Der Agent läuft doch an - alles bestens (Executive 1 bedeutet: Die erste von n lt. Serverdokument erlaubten Instanzen des Agent-Managers, damit dieser auch mal 3 oder 5 Agents parallel betreuen kann).

Also: Wenn der Agent läuft, heisst das offensichtlich, dass er nicht das tut, was er tun soll. Und dazu müssten wir den Code sehen.

Bernhard

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
@Bernhard,

der Agent funktioniert ja sobald ich ihn nicht periodisch einstelle sondern über das Menü aufrufe...

Trotzdem hier der Code:

SELECT (
(@IsText(DatumErledigt_110) = 1 & @IsTime(DatumBearbeitung_110 ) = 1 & DatumBearbeitung_110 <= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_120) = 1 & @IsTime(DatumBearbeitung_120) = 1 & DatumBearbeitung_120<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_140) = 1 & @IsTime(DatumBearbeitung_140) =  1 & DatumBearbeitung_140<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_150) = 1 & @IsTime(DatumBearbeitung_150) = 1 & DatumBearbeitung_150<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_160) = 1 & @IsTime(DatumBearbeitung_160) = 1 & DatumBearbeitung_160<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_200) = 1 & @IsTime(DatumBearbeitung_200) = 1 & DatumBearbeitung_200<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_300) = 1 & @IsTime(DatumBearbeitung_300) = 1 & DatumBearbeitung_300<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_400) = 1 & @IsTime(DatumBearbeitung_400) = 1 & DatumBearbeitung_400<= @Today & DatumErledigt_110 = "") |
(@IsText(DatumErledigt_900) = 1 & @IsTime(DatumBearbeitung_900) = 1 & DatumBearbeitung_900<= @Today & DatumErledigt_110 = "")
);


_MIB_Beauf := MIB_Beauf;

@If(
(@IsText(DatumErledigt_110) = 1 & @IsTime(DatumBearbeitung_110 ) = 1 & DatumBearbeitung_110 <= @Today & DatumErledigt_110 = "");_Sachbearbeiter := Sachbearbeiter_110;
(@IsText(DatumErledigt_120) = 1 & @IsTime(DatumBearbeitung_120) = 1 & DatumBearbeitung_120<= @Today & DatumErledigt_110 = "") ;_Sachbearbeiter := Sachbearbeiter_120;
(@IsText(DatumErledigt_140) = 1 & @IsTime(DatumBearbeitung_140) =  1 & DatumBearbeitung_140<= @Today & DatumErledigt_110 = "") ;_Sachbearbeiter := Sachbearbeiter_140;
(@IsText(DatumErledigt_150) = 1 & @IsTime(DatumBearbeitung_150) = 1 & DatumBearbeitung_150<= @Today & DatumErledigt_110 = "") ;_Sachbearbeiter := Sachbearbeiter_150;
(@IsText(DatumErledigt_160) = 1 & @IsTime(DatumBearbeitung_160) = 1 & DatumBearbeitung_160<= @Today & DatumErledigt_110 = "") ;_Sachbearbeiter := Sachbearbeiter_160;
(@IsText(DatumErledigt_200) = 1 & @IsTime(DatumBearbeitung_200) = 1 & DatumBearbeitung_200<= @Today & DatumErledigt_110 = "") ;_Sachbearbeiter := Sachbearbeiter_200;
(@IsText(DatumErledigt_300) = 1 & @IsTime(DatumBearbeitung_300) = 1 & DatumBearbeitung_300<= @Today & DatumErledigt_110 = "") ;_Sachbearbeiter := Sachbearbeiter_300;
(@IsText(DatumErledigt_400) = 1 & @IsTime(DatumBearbeitung_400) = 1 & DatumBearbeitung_400<= @Today & DatumErledigt_110 = "") ;_Sachbearbeiter := Sachbearbeiter_400;
(@IsText(DatumErledigt_900) = 1 & @IsTime(DatumBearbeitung_900) = 1 & DatumBearbeitung_900<= @Today & DatumErledigt_110 = "");_Sachbearbeiter := Sachbearbeiter_900;"");


REM {Definiere den Bereichsleiter};

_configDocId := @DbLookup( "" : "NoCache"; "" : ""; "(Konfiguration)"; "Konfigurationsdokument"; 2);

_Bereichsleiter110 := @GetDocField(_configDocId;"OE110");
_Bereichsleiter120 := @GetDocField(_configDocId;"OE120");
_Bereichsleiter140 := @GetDocField(_configDocId;"OE140");
_Bereichsleiter150 := @GetDocField(_configDocId;"OE150");
_Bereichsleiter160 := @GetDocField(_configDocId;"OE160");
_Bereichsleiter200 := @GetDocField(_configDocId;"OE200");
_Bereichsleiter300 := @GetDocField(_configDocId;"OE300");
_Bereichsleiter400 := @GetDocField(_configDocId;"OE400");
_Bereichsleiter900 := @GetDocField(_configDocId;"OE900");


REM {suche Bereichsleiter zum passenden Sachbearbeiter };

@If(
_Sachbearbeiter = Sachbearbeiter_110;_Bereichsleiter := _Bereichsleiter110;
_Sachbearbeiter = Sachbearbeiter_120;_Bereichsleiter := _Bereichsleiter120;
_Sachbearbeiter = Sachbearbeiter_140;_Bereichsleiter := _Bereichsleiter140;
_Sachbearbeiter = Sachbearbeiter_150;_Bereichsleiter := _Bereichsleiter150;
_Sachbearbeiter = Sachbearbeiter_160;_Bereichsleiter := _Bereichsleiter160;
_Sachbearbeiter = Sachbearbeiter_200;_Bereichsleiter := _Bereichsleiter200;
_Sachbearbeiter = Sachbearbeiter_300;_Bereichsleiter := _Bereichsleiter300;
_Sachbearbeiter = Sachbearbeiter_400;_Bereichsleiter := _Bereichsleiter400;
_Sachbearbeiter = Sachbearbeiter_900;_Bereichsleiter := _Bereichsleiter900;"");



REM { Mail an Sachbearbeiter schicken };


@MailSend(_Sachbearbeiter ; "" ; "" ; "Terminüberwachung MIB-Vorschlag" ;"Sehr geehrte Damen und Herren,"
+@NewLine+@NewLine
+"Sie hatten bis heute Zeit ein MIB-Gutachten zu erstellen. Bitte erledigen Sie Ihre Aufgabe noch heute:"
+@NewLine+@NewLine
+"Name des Vorschlags: "+Thema
+@NewLine+@NewLine
+"Benachrichtigte Personen: "
+@NewLine
+"MIB-Beauftragter: " + @Name([CN];_MIB_Beauf)
+@NewLine
+"Sachbearbeiter: " + @Name([CN];_Sachbearbeiter)
+@NewLine
+"Bereichsleiter: " + @Name([CN];_Bereichsleiter)
+@NewLine
+@NewLine
; "";[IncludeDoclink]);



REM { Mail an Bereichsleiter schicken };

@If(_Bereichsleiter != _Sachbearbeiter;

@Do(
@MailSend(_Bereichsleiter ; "" ; "" ; "Terminüberwachung MIB-Vorschlag" ;"Sehr geehrte Damen und Herren,"
+@NewLine+@NewLine
+"Ihr Mitarbeiter hatte bis heute Zeit  ein MIB-Gutachten zu erstellen. Bitte sorgen Sie dafür das der Mitarbeiter das noch heute erledigt:"
+@NewLine+@NewLine
+"Name des Vorschlags: "+Thema
+@NewLine+@NewLine
+"Benachrichtigte Personen: "
+@NewLine
+"MIB-Beauftragter: " + @Name([CN];_MIB_Beauf)
+@NewLine
+"Sachbearbeiter: " +@Name([CN];_Sachbearbeiter)
+@NewLine
+"Bereichsleiter: " +@Name([CN];_Bereichsleiter)
+@NewLine
+@NewLine
; "";[IncludeDoclink])
);"");



REM { Mail an MIB-Beauftragten schicken };

@MailSend(_MIB_Beauf ; "" ; "" ; "Terminüberwachung MIB-Vorschlag" ;"Sehr geehrte Damen und Herren,"
+@NewLine+@NewLine
+"Ein MIB hätte bis heute bewertet werden müssen. Leider hat der Mitarbeiter es versäumt."
+@NewLine+@NewLine
+"Name des Vorschlags: "+Thema
+@NewLine+@NewLine
+"Benachrichtigte Personen: "
+@NewLine
+"MIB-Beauftragter: " + @Name([CN];_MIB_Beauf)
+@NewLine
+"Sachbearbeiter: "+@Name([CN];_Sachbearbeiter)
+@NewLine
+"Bereichsleiter: "+@Name([CN];_Bereichsleiter)
+@NewLine
+@NewLine
; "";[IncludeDoclink])

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
da ich so nicht weiter komme werde ich das jetzt versuchen anders zu lösen per View...

Dazu ein Script aber auch hier stoße ich zuerst auf typ mismatch...

und war wenn ich gucke ob das Feld DatumBearbeitet_900 und DatumErledigt_900

leer ist oder < today

Wie kann ich die Felder konvertieren?

oDocAuftrag.DatumBearbeitet_900 < today() and oDocAuftrag.DatumErledigt_900 = ""

Gruß

Thomas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Thomas, Deine Probleme werden immer weniger nachvollziehbarer. Wir haben nur eine begrenzte Zewit und begrenzte Ressourcen, Deine Texte nachzuvollziehen, und an diesen musst Du dringend arbeiten.

Warum Du jetzt auf LS ausweichst, ergibt sich auch nicht. Du hättest zunächst das bestehende Problem mal näher angehen sollen.

Aber das ist natürlich Deine Entscheidung, es besteht nur die Gefahr, dass hier keiner mehr Lust hat, zu antworten.
Trotzdem zu deiner Frage:
Zitat
oDocAuftrag.DatumBearbeitet_900 < today() and oDocAuftrag.DatumErledigt_900 = ""
führt zu einem type mismatch.
Ich erkenne daraus, dass Du bisher noch nicht mit LotusScript und dem Notes Klassenmodell gearbeitet hast. Das hättest Du aber auch selber ansagen können!
Beim direkten Zugriff auf Notes-Items in einem NotesDocument greifst Du immer auf Arrays zurück, es müsste also heissen:
Code
oDocAuftrag.DatumBearbeitet_900 (0) < today() and oDocAuftrag.DatumErledigt_900 (0) = ""

Wie sieht es in Deinem Unternehmen mit Weiterbildungsmöglichkeiten aus? Kannst Du ggf. sogar ein "training on the job" beantragen mit Chancen auf Genehmigung? Sonst wirst Du wohl noch etliche Monatsgehälter ohne durchschlagendes Ergebnis durchheizen - und das kann für keine Seite erfreulich sein. Nicht mal und gerade nicht für AtNotes.

Bernhard

PS: Um das mal klarzustellen - hätte ich meine Zeit für die Antwort auf zwei Deiner heutigen Fragen nicht bei AtNotes verbracht, sondern im Designer und in der DB für das gegenwärtige Projekt, hätte ich ca. 80..100 EUR verdient. Ich habe es nicht gemacht, und werde die NICHT VERLORENE Zeit nachher nachholen - statt "Feierabend". Auf dieser Basis sei mir meine Kritik nicht verziehen, aber bitte besser verstanden.

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
Hallo Bernhard,

mit Script habe ich bisher - wie Du richtig vermutest - nicht viel gemacht. Das Budget für Fortbildung ist dieses Jahr für mich leider erschöpft (hatte 6 Tage Notes und 4 andere).

Im nächsten Jahr werde ich auf jeden Fall eine Script-Schulung besuchen.
Ich weiß es nervt wenn ein Anfänger wie ich solche Fragne stellt und selber die einfachsten Script-Grundlagen-Fehler begeht aber durch Eure geopferte Zeit habe ich am Freitag sehr sehr gelernt und bin mit der Datenbank wieder einen ganzen Schritt weiter.

Beim obigen Probelm will ich auf Script umsteigen weil der Formel-Agent ja leider nicht so will wie ich ???

Wie ich oben bereits geschrieben habe läuft der Formel-Agent wenn ich ihn manuell starte ohne Probleme. Nur Periodisch läuft er zwar an, wie man im Protokoll sehen kann, verschickt aber leider nicht die mails.

Der Script-Agent läuft und verschickt mails. Nur fehlen da noch einige Abfragen drin...


Gruß

Thomas

P. S. heute nerve ich auch nicht bin den ganzen Tag in einer Sitzung ;D

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
ich hole den alten Thread nochmal hoch denn ich weiß jetzt warum der ursprüngliche Formel-Agent nicht lief.

Also der Agent lief wenn ich ihn aus dem Menü heraus aufrufe. Somit war der Code schonmal richtig.

Als periodischer Agent lief das Teil nicht weil keine Standard-Ansicht in der Datenbank eingestellt war (blauer Pfeil vor der Ansicht).

Nach dem ich eine eingestellt hatte lief der Agent sofort.

Vielleicht nutzt das dem ein oder anderen ja auch....

Gruß

Thomas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz