+49 (0)7531 906010| service@combit.net

Termin/Aufgabe per Script erstellen

Hallo Leute,

ich habe ein Script gebastelt, welches mir mit Ausführung eine Aufgabe automatisch anlegt. Dabei werden die Felder Betreff, Mit, Priorität, Inhalt etc. ebenfalls automatisch ausgefüllt.

Wenn der Empfänger nun diese Aufgabe bekommt, funktioniert aber der „gehe zu Datensatz (alt+z)“ Button nicht. Es erscheint die Meldung, dass die Aufgabe mit keinem Datensatz verknüpft sei.

Das Problem dabei könnte sein, dass das Object mit seinen Eigenschaften und Methoden auch nur EINE Aufgabe anlegt, aber keine Aufgabe zu einem BESTIMMTEN Datensatz (laut der Objekt-Referenz.pdf).

Über folgenden Weg gehe ich vor: cRM.CurrentProject.timemanager.ToDos.Add()

Kann mir jemand sagen wie ich vorgehen muss bzw. was ich beachten muss, damit dieser „Gehe zu Datensatz“-Button in der Aufgabe funktioniert?

Vielen Dank

Grüße
Flo

Hallo,

ich glaube, man muss dann nur noch die Eigenschaft ‚HostDatabase‘ setzen.
Wie die zusammengesetzt wird, findest du im mitgelieferten Script tmgeb.vbs


Beispiel eines Datensatzverweises:
’ ||||
Dim sDSLink
sDSLink = CStr(oProject.ID) & „|“ & _
CStr(oView.Name) & „|“ & _
CStr(sViewFamilyName) & „|“ & _
CStr(sPKFieldName) & „|“ & _
CStr(oRecord.GetContentsByName(CStr(sPKFieldName)))

oAppointment.HostDatabase = sDSLink

’ Speichern des neuen Termins
oAppointment.Save

Schau aber auch mal in der OLE-Hilfe beim Objekt ToDo nach - da steht das
auch nochmal dabei.

„Florian Joos“ <f.joos@ravit…> schrieb im Newsbeitrag
news:480381152009143748@combit.net…

Hallo Leute,

ich habe ein Script gebastelt, welches mir mit Ausführung eine Aufgabe
automatisch anlegt. Dabei werden die Felder Betreff, Mit, Priorität,
Inhalt etc. ebenfalls automatisch ausgefüllt.

Wenn der Empfänger nun diese Aufgabe bekommt, funktioniert aber der „gehe
zu Datensatz (alt+z)“ Button nicht. Es erscheint die Meldung, dass die
Aufgabe mit keinem Datensatz verknüpft sei.

Das Problem dabei könnte sein, dass das Object mit seinen Eigenschaften
und Methoden auch nur EINE Aufgabe anlegt, aber keine Aufgabe zu einem
BESTIMMTEN Datensatz (laut der Objekt-Referenz.pdf).

Über folgenden Weg gehe ich vor:
cRM.CurrentProject.timemanager.ToDos.Add()

Kann mir jemand sagen wie ich vorgehen muss bzw. was ich beachten muss,
damit dieser „Gehe zu Datensatz“-Button in der Aufgabe funktioniert?

Vielen Dank

Grüße
Flo

Hi,

danke erstmal, allerdings bringt mich die Lösung im Beispielscript nicht weiter da ich sie gar nicht verstehe.
„HostDatabase“ liefert doch die ProjektID, ich möchte meine Aufgabe aber nicht mit dem Projekt sonder mit einem Datensatz verknüpfen, das macht man doch mit „HostRecordID“ oder?

Meine Überlegung war, dass ich einfach so vorgehe wie mit den Eigenschaften Body, Contact etc. auch, sprich:

with oTermin
.body X.GetContentsByName(„Kommentar“)
.Subject „Titel hier“
.HostRecordID X.GetContentsByName(„ID“) <—
end with

.body und .subject etc. funktionieren soweit auch, allerdings kommt dann „Typen unverträglich ‚HostRecordID‘“ und ich weiß nicht was ich dabei falsch mache bzw. warum ich so wie in dem Beispiel so viele Zeilen benötigen sollte…

Viele Grüße
Flo

Hallo,

ich glaube, man muss dann nur noch die Eigenschaft ‚HostDatabase‘ setzen.
Wie die zusammengesetzt wird, findest du im mitgelieferten Script tmgeb.vbs


Beispiel eines Datensatzverweises:
’ ||||
Dim sDSLink
sDSLink = CStr(oProject.ID) & „|“ & _
CStr(oView.Name) & „|“ & _
CStr(sViewFamilyName) & „|“ & _
CStr(sPKFieldName) & „|“ & _
CStr(oRecord.GetContentsByName(CStr(sPKFieldName)))

oAppointment.HostDatabase = sDSLink

’ Speichern des neuen Termins
oAppointment.Save

Schau aber auch mal in der OLE-Hilfe beim Objekt ToDo nach - da steht das
auch nochmal dabei.

„Florian Joos“ <f.joos@ravit…> schrieb im Newsbeitrag
news:480381152009143748@combit.net…

Hallo Leute,

ich habe ein Script gebastelt, welches mir mit Ausführung eine Aufgabe
automatisch anlegt. Dabei werden die Felder Betreff, Mit, Priorität,
Inhalt etc. ebenfalls automatisch ausgefüllt.

Wenn der Empfänger nun diese Aufgabe bekommt, funktioniert aber der „gehe
zu Datensatz (alt+z)“ Button nicht. Es erscheint die Meldung, dass die
Aufgabe mit keinem Datensatz verknüpft sei.

Das Problem dabei könnte sein, dass das Object mit seinen Eigenschaften
und Methoden auch nur EINE Aufgabe anlegt, aber keine Aufgabe zu einem
BESTIMMTEN Datensatz (laut der Objekt-Referenz.pdf).

Über folgenden Weg gehe ich vor:
cRM.CurrentProject.timemanager.ToDos.Add()

Kann mir jemand sagen wie ich vorgehen muss bzw. was ich beachten muss,
damit dieser „Gehe zu Datensatz“-Button in der Aufgabe funktioniert?

Vielen Dank

Grüße
Flo

Hallo,

hast du denn das Bsp.-Script mal getestet? Es macht meiner Meinung genau das
was du brauchst - einen Termin mit Datensatzverknüpfung anlegen. In dem
Auszug aus dem Script wird ja der „Link“ für den Datensatz dynamisch
zusammengebaut - aufbau:
||||

„Florian Joos“ <f.joos@ravit…> schrieb im Newsbeitrag
news:230161162009163530@combit.net…

Hi,

danke erstmal, allerdings bringt mich die Lösung im Beispielscript nicht
weiter da ich sie gar nicht verstehe.
„HostDatabase“ liefert doch die ProjektID, ich möchte meine Aufgabe aber
nicht mit dem Projekt sonder mit einem Datensatz verknüpfen, das macht man
doch mit „HostRecordID“ oder?

Meine Überlegung war, dass ich einfach so vorgehe wie mit den
Eigenschaften Body, Contact etc. auch, sprich:

with oTermin
body X.GetContentsByName(„Kommentar“)
Subject „Titel hier“
HostRecordID X.GetContentsByName(„ID“) <—
end with

body und .subject etc. funktionieren soweit auch, allerdings kommt dann
„Typen unverträglich ‚HostRecordID‘“ und ich weiß nicht was ich dabei
falsch mache bzw. warum ich so wie in dem Beispiel so viele Zeilen
benötigen sollte…

Viele Grüße
Flo

Hallo,

ich glaube, man muss dann nur noch die Eigenschaft ‚HostDatabase‘ setzen.
Wie die zusammengesetzt wird, findest du im mitgelieferten Script
tmgeb.vbs


Beispiel eines Datensatzverweises:
’ ||||
Dim sDSLink
sDSLink = CStr(oProject.ID) & „|“ & _
CStr(oView.Name) & „|“ & _
CStr(sViewFamilyName) & „|“ & _
CStr(sPKFieldName) & „|“ & _
CStr(oRecord.GetContentsByName(CStr(sPKFieldName)))

oAppointment.HostDatabase = sDSLink

’ Speichern des neuen Termins
oAppointment.Save

Schau aber auch mal in der OLE-Hilfe beim Objekt ToDo nach - da steht das
auch nochmal dabei.

„Florian Joos“ <f.joos@ravit…> schrieb im Newsbeitrag
news:480381152009143748@combit.net…

Hallo Leute,

ich habe ein Script gebastelt, welches mir mit Ausführung eine Aufgabe
automatisch anlegt. Dabei werden die Felder Betreff, Mit, Priorität,
Inhalt etc. ebenfalls automatisch ausgefüllt.

Wenn der Empfänger nun diese Aufgabe bekommt, funktioniert aber der
„gehe
zu Datensatz (alt+z)“ Button nicht. Es erscheint die Meldung, dass die
Aufgabe mit keinem Datensatz verknüpft sei.

Das Problem dabei könnte sein, dass das Object mit seinen Eigenschaften
und Methoden auch nur EINE Aufgabe anlegt, aber keine Aufgabe zu einem
BESTIMMTEN Datensatz (laut der Objekt-Referenz.pdf).

Über folgenden Weg gehe ich vor:
cRM.CurrentProject.timemanager.ToDos.Add()

Kann mir jemand sagen wie ich vorgehen muss bzw. was ich beachten muss,
damit dieser „Gehe zu Datensatz“-Button in der Aufgabe funktioniert?

Vielen Dank

Grüße
Flo

Hallo nochmal,

das Problem konnte ich bisher leider nicht lösen, ich hoffe hier nochmal auf Hilfe.
Ich habe mal versucht mit dem Beispielscript zu arbeiten aber wenn ich dort irgendwas übernehme hängt mein Script sofort in den ersten Zeilen bei:
Set oEvent = WScript.Event

Ich habe mich also über ViewConfigs.ItemByName().PrimaryKeyFldName herangearbeitet, aber bei
sDSLink = […]CStr(oView.Name) & „|“ & _ […]
kommt dann der nächste Fehler den ich dann nicht mehr umgehen kann da ich dann das Event Objekt brauche, welches ich zuvor ja umgangen habe.

Wenn sich damit jemand auskennt und eine Lösung parat hat wäre ich äußerst dankbar, Aufgaben/Termine ohne „gehe zu…“ sind nicht das Gelbe vom Ei. Ich schicke meine bisherigen Scriptzeilen auch gerne per Mail weiter, wenn sich jemand damit auseinandersetzen möchte und kann.

Viele Grüße und ein schönes Wochenende
Flo

Hallo,

hast du denn das Bsp.-Script mal getestet? Es macht meiner Meinung genau das
was du brauchst - einen Termin mit Datensatzverknüpfung anlegen. In dem
Auszug aus dem Script wird ja der „Link“ für den Datensatz dynamisch
zusammengebaut - aufbau:
||||

„Florian Joos“ <f.joos@ravit…> schrieb im Newsbeitrag
news:230161162009163530@combit.net…

Hi,

danke erstmal, allerdings bringt mich die Lösung im Beispielscript nicht
weiter da ich sie gar nicht verstehe.
„HostDatabase“ liefert doch die ProjektID, ich möchte meine Aufgabe aber
nicht mit dem Projekt sonder mit einem Datensatz verknüpfen, das macht man
doch mit „HostRecordID“ oder?

Meine Überlegung war, dass ich einfach so vorgehe wie mit den
Eigenschaften Body, Contact etc. auch, sprich:

with oTermin
body X.GetContentsByName(„Kommentar“)
Subject „Titel hier“
HostRecordID X.GetContentsByName(„ID“) <—
end with

body und .subject etc. funktionieren soweit auch, allerdings kommt dann
„Typen unverträglich ‚HostRecordID‘“ und ich weiß nicht was ich dabei
falsch mache bzw. warum ich so wie in dem Beispiel so viele Zeilen
benötigen sollte…

Viele Grüße
Flo

Hallo,

ich glaube, man muss dann nur noch die Eigenschaft ‚HostDatabase‘ setzen.
Wie die zusammengesetzt wird, findest du im mitgelieferten Script
tmgeb.vbs


Beispiel eines Datensatzverweises:
’ ||||
Dim sDSLink
sDSLink = CStr(oProject.ID) & „|“ & _
CStr(oView.Name) & „|“ & _
CStr(sViewFamilyName) & „|“ & _
CStr(sPKFieldName) & „|“ & _
CStr(oRecord.GetContentsByName(CStr(sPKFieldName)))

oAppointment.HostDatabase = sDSLink

’ Speichern des neuen Termins
oAppointment.Save

Schau aber auch mal in der OLE-Hilfe beim Objekt ToDo nach - da steht das
auch nochmal dabei.

„Florian Joos“ <f.joos@ravit…> schrieb im Newsbeitrag
news:480381152009143748@combit.net…

Hallo Leute,

ich habe ein Script gebastelt, welches mir mit Ausführung eine Aufgabe
automatisch anlegt. Dabei werden die Felder Betreff, Mit, Priorität,
Inhalt etc. ebenfalls automatisch ausgefüllt.

Wenn der Empfänger nun diese Aufgabe bekommt, funktioniert aber der
„gehe
zu Datensatz (alt+z)“ Button nicht. Es erscheint die Meldung, dass die
Aufgabe mit keinem Datensatz verknüpft sei.

Das Problem dabei könnte sein, dass das Object mit seinen Eigenschaften
und Methoden auch nur EINE Aufgabe anlegt, aber keine Aufgabe zu einem
BESTIMMTEN Datensatz (laut der Objekt-Referenz.pdf).

Über folgenden Weg gehe ich vor:
cRM.CurrentProject.timemanager.ToDos.Add()

Kann mir jemand sagen wie ich vorgehen muss bzw. was ich beachten muss,
damit dieser „Gehe zu Datensatz“-Button in der Aufgabe funktioniert?

Vielen Dank

Grüße
Flo

Hallo!

das Problem konnte ich bisher leider nicht lösen, ich hoffe hier nochmal
auf Hilfe.
Ich habe mal versucht mit dem Beispielscript zu arbeiten aber wenn ich
dort irgendwas übernehme hängt mein Script sofort in den ersten Zeilen
bei:
Set oEvent = WScript.Event
Kann es sein, dass Ihr Script „extern“ (nich direkt aus dem cRM heraus)
aufgerufen wird? Denn dann kann es sein, dass das WScript-Objekt so nicht
zur Verfügung steht. Dieses Objekt wird direkt vom cRM aus „gehostet“ und
steht somit auch nicht ausserhalb des cRMs zur Verfügung. Das Scipt muss
innerhalb des cRMs (Button in der Eingabemaske etc.) aufgerufen werden! Steh
aber auch im Script als Kommentar hinterlegt:

’ Hinweis: Das WScript-Objekt kann nur in cRM internen Scripten verwendet
werden!
Set oEvent = WScript.Event

Ich habe mich also über ViewConfigs.ItemByName().PrimaryKeyFldName
herangearbeitet, aber bei
sDSLink = […]CStr(oView.Name) & „|“ & _ […]
kommt dann der nächste Fehler den ich dann nicht mehr umgehen kann da ich
dann das Event Objekt brauche, welches ich zuvor ja umgangen habe.
Hmm, aber im Beispielscript wird doch an dieser Stelle nicht das
„Event“-Objekt verwendet? Das Event-Objekt ist ja auch nur zur
Steuerung/Unterscheidung - in diesem Beispiel - ob es sich um einen neuen
Datensatz handelt, oder ob der bestehende Datensatz Änderungen im
Geburtstags-Feld erfahren hat. Unabhängig davon könnten Sie die Logik was
das Event-Objekt betrifft eigentlich entfernen bzw. mit anderer Logik
umschreiben.

Wenn sich damit jemand auskennt und eine Lösung parat hat wäre ich äußerst
dankbar, Aufgaben/Termine ohne „gehe zu…“ sind nicht das Gelbe vom Ei.
Ich schicke meine bisherigen Scriptzeilen auch gerne per Mail >>weiter,
wenn sich jemand damit auseinandersetzen möchte und kann.
Posten Sie doch hier mal was Sie an Scriptcode bisher haben. Vielleicht ist
es dann einfacher zu erkennen, wo das Problem liegt.

„Florian Joos“ <f.joos@ravit…> schrieb im Newsbeitrag
news:69941302009145312@combit.net…

Hallo nochmal,

das Problem konnte ich bisher leider nicht lösen, ich hoffe hier nochmal
auf Hilfe.
Ich habe mal versucht mit dem Beispielscript zu arbeiten aber wenn ich
dort irgendwas übernehme hängt mein Script sofort in den ersten Zeilen
bei:
Set oEvent = WScript.Event

Ich habe mich also über ViewConfigs.ItemByName().PrimaryKeyFldName
herangearbeitet, aber bei
sDSLink = […]CStr(oView.Name) & „|“ & _ […]
kommt dann der nächste Fehler den ich dann nicht mehr umgehen kann da ich
dann das Event Objekt brauche, welches ich zuvor ja umgangen habe.

Wenn sich damit jemand auskennt und eine Lösung parat hat wäre ich äußerst
dankbar, Aufgaben/Termine ohne „gehe zu…“ sind nicht das Gelbe vom Ei.
Ich schicke meine bisherigen Scriptzeilen auch gerne per Mail weiter, wenn
sich jemand damit auseinandersetzen möchte und kann.

Viele Grüße und ein schönes Wochenende
Flo

Hallo,

hast du denn das Bsp.-Script mal getestet? Es macht meiner Meinung genau
das
was du brauchst - einen Termin mit Datensatzverknüpfung anlegen. In dem
Auszug aus dem Script wird ja der „Link“ für den Datensatz dynamisch
zusammengebaut - aufbau:
||||

„Florian Joos“ <f.joos@ravit…> schrieb im Newsbeitrag
news:230161162009163530@combit.net…

Hi,

danke erstmal, allerdings bringt mich die Lösung im Beispielscript
nicht
weiter da ich sie gar nicht verstehe.
„HostDatabase“ liefert doch die ProjektID, ich möchte meine Aufgabe
aber
nicht mit dem Projekt sonder mit einem Datensatz verknüpfen, das macht
man
doch mit „HostRecordID“ oder?

Meine Überlegung war, dass ich einfach so vorgehe wie mit den
Eigenschaften Body, Contact etc. auch, sprich:

with oTermin
body X.GetContentsByName(„Kommentar“)
Subject „Titel hier“
HostRecordID X.GetContentsByName(„ID“) <—
end with

body und .subject etc. funktionieren soweit auch, allerdings kommt dann
„Typen unverträglich ‚HostRecordID‘“ und ich weiß nicht was ich dabei
falsch mache bzw. warum ich so wie in dem Beispiel so viele Zeilen
benötigen sollte…

Viele Grüße
Flo

Hallo,

ich glaube, man muss dann nur noch die Eigenschaft ‚HostDatabase‘
setzen.
Wie die zusammengesetzt wird, findest du im mitgelieferten Script
tmgeb.vbs


Beispiel eines Datensatzverweises:
’ ||||
Dim sDSLink
sDSLink = CStr(oProject.ID) & „|“ & _
CStr(oView.Name) & „|“ & _
CStr(sViewFamilyName) & „|“ & _
CStr(sPKFieldName) & „|“ & _
CStr(oRecord.GetContentsByName(CStr(sPKFieldName)))

oAppointment.HostDatabase = sDSLink

’ Speichern des neuen Termins
oAppointment.Save

Schau aber auch mal in der OLE-Hilfe beim Objekt ToDo nach - da steht
das
auch nochmal dabei.

„Florian Joos“ <f.joos@ravit…> schrieb im Newsbeitrag
news:480381152009143748@combit.net…

Hallo Leute,

ich habe ein Script gebastelt, welches mir mit Ausführung eine
Aufgabe
automatisch anlegt. Dabei werden die Felder Betreff, Mit, Priorität,
Inhalt etc. ebenfalls automatisch ausgefüllt.

Wenn der Empfänger nun diese Aufgabe bekommt, funktioniert aber der
„gehe
zu Datensatz (alt+z)“ Button nicht. Es erscheint die Meldung, dass
die
Aufgabe mit keinem Datensatz verknüpft sei.

Das Problem dabei könnte sein, dass das Object mit seinen
Eigenschaften
und Methoden auch nur EINE Aufgabe anlegt, aber keine Aufgabe zu
einem
BESTIMMTEN Datensatz (laut der Objekt-Referenz.pdf).

Über folgenden Weg gehe ich vor:
cRM.CurrentProject.timemanager.ToDos.Add()

Kann mir jemand sagen wie ich vorgehen muss bzw. was ich beachten
muss,
damit dieser „Gehe zu Datensatz“-Button in der Aufgabe funktioniert?

Vielen Dank

Grüße
Flo

Hallo,

ich habe das Event-Objekt bzw. das gesamte Skript innerhalb des cRM’s über einen Skript-Direkt Button angelegt, von daher verstehe ich den Fehler mit dem Event-Objekt bei mir nicht.

Mein Skript, welches so auch wunderbar funktioniert nur eben OHNE Datensatz Verweis, schaut wie folgt aus:

dim meldung
meldung = msgbox („Speichern und Aufgabe an Mitarbeiter senden? Der Restpunkt kann danach nicht mehr bearbeitet werden.“, vbOKCancel, „Achtung“)
if meldung = „2“ then wscript.quit

set oWshShell = WScript.CreateObject(„WScript.Shell“)
’ Datensatz > Speichern aufrufen
cRM.CurrentProject.ActiveViews.ActiveView.InvokeMenu 32806, True
If not cRM.CurrentProject.ActiveViews.ActiveView.Editmode Then

Dim b, oProjecta, oActiveView, oCurrentRecordSet, oCurrentRecord, bFound, oViewConfigs, oViewConfig, a

’ Aktives cRM Projekt:
Set oProjecta = cRM.CurrentProject
Set oActiveView = oProjecta.ActiveViews.ActiveView
set oCurrentRecordSet = oActiveView.CurrentRecordSet
set b = oCurrentRecordSet.currentrecord

’ globale Konstante
dim DatumBeginn, DatumEnde
DatumBeginn = b.getcontentsbyname(„Erfassungsdatum“)
DatumEnde = b.getcontentsbyname(„Fertigstellung“)

’ globale Variablen
Dim otm, oTermin, oProject

’ Erstellen der benötigten Objekte
Set oProject = cRM.CurrentProject
Set otm = oProject.timemanager
Set oTermin = otm.ToDos.Add()

’ Überprüfen, ob relevante Felder ausgefüllt sind
If b.getcontentsbyname(„Fertigstellung“) ="" then msgbox „Bitte Fertigstellung angeben“
If b.getcontentsbyname(„Fertigstellung“) ="" then wscript.quit
If b.getcontentsbyname(„Techniker“) ="" then msgbox „Bitte Techniker angeben“
If b.getcontentsbyname(„Techniker“) ="" then wscript.quit
If b.getcontentsbyname(„Bemerkung“) ="" then msgbox „Bitte Bemerkung eingeben“
If b.getcontentsbyname(„Bemerkung“) ="" then wscript.quit

’ Häkchen setzen
Set oCurrentInputForm = oActiveView.CurrentInputForm(0)
oCurrentInputForm.SetContentsByName „Gespeichert“, „ja“
oCurrentInputForm.SetContentsByName CStr(„AufgabeErstellt“), CStr(„T“)

’ Setzen der Eigenschaften der Aufgabe
With oTermin
.Subject b.getcontentsbyname(„Techniker“) & „: " & b.getcontentsbyname(„AbnahmeID.Abnahmeprotokoll.ID.Ansprechpartner“) & " - Abnahmeprotokoll - offener Restpunkt“
.Body b.getcontentsbyname(„Bemerkung“)
.Start DatumBeginn
.User b.getcontentsbyname(„Techniker“)
.End DatumEnde
End With

’ Erinnerung 24h vorher
oTermin.Reminder = True
oTermin.ReminderMinutesBeforeStart = 2880’ Angabe in Minuten

’ Speichern des angelegten Termins
oTermin.Save

’ Ansicht aktualisieren
otm.UpdateViews

End If

set oWshShell = Nothing
Set oTermin = Nothing
Set otm = Nothing
Set oProject = Nothing
Set oProjecta = Nothing
cRM.CurrentProject.ActiveViews.ActiveView.InvokeMenu 32806, True

Meine Versuche den Datensatz Verweis zu integrieren habe ich jetzt nicht übernommen hier.

Hallo,

ich habe das Event-Objekt bzw. das gesamte Skript innerhalb des cRM’s über
einen Skript-Direkt Button angelegt, von daher verstehe ich den Fehler mit
dem Event-Objekt bei mir nicht.
Das Event-Objekt funktioniert bei Ihnen nicht, weil Sie sich nicht im
Kontext der Ereignisse des cRMs befinden. Dieses Objekt können Sie nur
innerhalb von cRM-Ereignissen (Konfiguration > Projekt > Ereignisse) wie
bspw. „Ansicht wurde geöffnet“ verwenden. Ich hatte meine letzte Aussage auf
das WScript-Objekt bezogen, so dass das mit dem Event-Objekt vielleicht
nicht ganz richtig rübergekommen ist. Sorry für die „Verwirrung“.

Um nun noch den Verweis auf den Datensatz im Termin zu speichern müssten Sie
vor dem „oTermin.Save“ folgenden Code einfügen. Ich habe bereits versucht
Ihre Variablen einzusetzen:

’ ||||
Dims sPKFieldName, sDSLink
sPKFieldName = oActiveView.Config.PrimaryKeyFldName
sDSLink = CStr(oProjecta.ID) & „|“ & _
CStr(oActiveView.Name) & „|“ & _
CStr(oActiveView.Config.FamilyName) & „|“ & _
CStr(sPKFieldName) & „|“ & _
CStr(b.GetContentsByName(CStr(sPKFieldName)))

oTermin.HostDatabase = sDSLink

Ich hoffe, das hilft Ihnen ein wenig weiter?

PS: Mir ist aufgefallen, dass Sie oft über Wscript.Quit das Script
verlassen. Allerdings geben Sie die zuvor verwendeten Objekte mittels „Set
= Nothing“ nicht mehr frei. Das kann bei komplexen Scripten und je
nach verwendetem Objektmodell zu Problemen führen, da unterschiedliche
Referenzcounter aktiv sind.

„Florian Joos“ <f.joos@ravit…> schrieb im Newsbeitrag
news:50932420099447@combit.net…

Hallo,

ich habe das Event-Objekt bzw. das gesamte Skript innerhalb des cRM’s über
einen Skript-Direkt Button angelegt, von daher verstehe ich den Fehler mit
dem Event-Objekt bei mir nicht.

Mein Skript, welches so auch wunderbar funktioniert nur eben OHNE
Datensatz Verweis, schaut wie folgt aus:

dim meldung
meldung = msgbox („Speichern und Aufgabe an Mitarbeiter senden? Der
Restpunkt kann danach nicht mehr bearbeitet werden.“, vbOKCancel,
„Achtung“)
if meldung = „2“ then wscript.quit

set oWshShell = WScript.CreateObject(„WScript.Shell“)
’ Datensatz > Speichern aufrufen
cRM.CurrentProject.ActiveViews.ActiveView.InvokeMenu 32806, True
If not cRM.CurrentProject.ActiveViews.ActiveView.Editmode Then

Dim b, oProjecta, oActiveView, oCurrentRecordSet, oCurrentRecord, bFound,
oViewConfigs, oViewConfig, a

’ Aktives cRM Projekt:
Set oProjecta = cRM.CurrentProject
Set oActiveView = oProjecta.ActiveViews.ActiveView
set oCurrentRecordSet = oActiveView.CurrentRecordSet
set b = oCurrentRecordSet.currentrecord

’ globale Konstante
dim DatumBeginn, DatumEnde
DatumBeginn = b.getcontentsbyname(„Erfassungsdatum“)
DatumEnde = b.getcontentsbyname(„Fertigstellung“)

’ globale Variablen
Dim otm, oTermin, oProject

’ Erstellen der benötigten Objekte
Set oProject = cRM.CurrentProject
Set otm = oProject.timemanager
Set oTermin = otm.ToDos.Add()

’ Überprüfen, ob relevante Felder ausgefüllt sind
If b.getcontentsbyname(„Fertigstellung“) ="" then msgbox „Bitte
Fertigstellung angeben“
If b.getcontentsbyname(„Fertigstellung“) ="" then wscript.quit
If b.getcontentsbyname(„Techniker“) ="" then msgbox „Bitte Techniker
angeben“
If b.getcontentsbyname(„Techniker“) ="" then wscript.quit
If b.getcontentsbyname(„Bemerkung“) ="" then msgbox „Bitte Bemerkung
eingeben“
If b.getcontentsbyname(„Bemerkung“) ="" then wscript.quit

’ Häkchen setzen
Set oCurrentInputForm = oActiveView.CurrentInputForm(0)
oCurrentInputForm.SetContentsByName „Gespeichert“, „ja“
oCurrentInputForm.SetContentsByName CStr(„AufgabeErstellt“), CStr(„T“)

’ Setzen der Eigenschaften der Aufgabe
With oTermin
.Subject b.getcontentsbyname(„Techniker“) & „: " &
b.getcontentsbyname(„AbnahmeID.Abnahmeprotokoll.ID.Ansprechpartner“) & " -
Abnahmeprotokoll - offener Restpunkt“
.Body b.getcontentsbyname(„Bemerkung“)
.Start DatumBeginn
.User b.getcontentsbyname(„Techniker“)
.End DatumEnde
End With

’ Erinnerung 24h vorher
oTermin.Reminder = True
oTermin.ReminderMinutesBeforeStart = 2880’ Angabe in Minuten

’ Speichern des angelegten Termins
oTermin.Save

’ Ansicht aktualisieren
otm.UpdateViews

End If

set oWshShell = Nothing
Set oTermin = Nothing
Set otm = Nothing
Set oProject = Nothing
Set oProjecta = Nothing
cRM.CurrentProject.ActiveViews.ActiveView.InvokeMenu 32806, True

Meine Versuche den Datensatz Verweis zu integrieren habe ich jetzt nicht
übernommen hier.

Hallo,

herzlichen Dank für die Mühe, wenn ich den Code mit meinem ergänze funktioniert nun auch die „Gehe zu Datensatz“-Funktion bei den Erinnerungen.
Das hilft mir wirklich sehr weiter, vielen Dank, klappt wunderbar.

Einen schönen Abend
Viele Grüße

Flo

© combit GmbH