Hallo Teardrop,
vielen Dank für die Hilfe. LocalAdressBook hat mir sehr weiter geholfen. Habe dies in der DvAPI Hilfe eingetippt und gemerkt, ich hatte den Code die ganze Zeit schon vor der Nase. Nungut, mein Code sieht nun in etwa so aus:
oApp = CreateObject("DVOBJAPILib.DvISEAPI")
oApp.LoginOptions = DvApi32.DvLoginOptions.DvLoginForceAsyncDuplicate
oAccount = oApp.Logon("", "", "", "", "", "NOAUTH")
oArchive = oAccount.GetSpecialArchive(DvApi32.DvArchiveTypes.DvArchiveUserRoot)
Dim _UserName as String = "Name xy"
For Each oAddr In oAccount.LocalAddressBook
If LCase(oAddr.displayname) = LCase(_UserName) Then
oArchive = oAccount.GetSpecialArchive(DvApi32.DvArchiveTypes.DvArchivePersonalToDo)
oTaskItem = oArchive.NewItem(DvApi32.DvItemTypes.DvTaskItem)
oTaskItem.Subject = "New Task"
....
....
oTaskItem.Save(Nothing, oAddr)
oAccount.Logoff()
end if
next
Alles anzeigen
Falls der Benutzer dann die Rechte auf den Ordner des anderen hat, dann wird die Aufgabe auch erstellt.
Nun bleibt aber weiterhin für mich das Problem mit einigen Werten, die ich nicht setzen kann, wie z.B.:
oTaskItem.ActualWork = 10 'Integer
oTaskItem.TotalWork = 20 'Integer
oTaskItem.Resources = "Ressourcen" 'String
oTaskItem.Companies = "Firmen" 'String
oTaskItem.DateCompleted = "10.10.2012 10:00:00" 'Object
Kann man diese Werte bei der Erstellung vielleicht gar nicht mit übergeben sondern nur nachträglich eintragen ?
Wober ich mir nicht mehr sicher bin, ob ich es irgendwann mal geschafft haben den ein oder anderen Wert zu setzen. Es kam mir so vor als hätte ich die Firma mal eingetragen bekommen. Irgendwie komisch.
In der Hilfe gibt es Beispielcode, wo diese Werte gesetzt werden.
Archive* pArchive = NULL;
FormattedText* pFText = NULL;
Addresses
*pAddresses = NULL;
TaskItem* pTaskItem = NULL;
VARIANT vType, vEmpty;
vEmpty.vt = VT_EMPTY;
vType.vt = VT_EMPTY;
if (SUCCEEDED
(pAcc->GetSpecialArchive (DvArchivePersonalToDo,
&pArchive)))
{
if (SUCCEEDED (pArchive->NewItem(DvTaskItem,
(IDispatch**)&pTaskItem)))
{
VARIANT vStartDate, vEndDate;COleDateTime dateTime;
vStartDate.vt = VT_DATE;
vEndDate.vt = VT_DATE;
dateTime = dateTime.GetCurrentTime();
vStartDate.date = dateTime.m_dt;
dateTime.SetDateTime (dateTime.GetYear (),
dateTime.GetMonth (), dateTime.GetDay ()+2, 17,30,00);
vEndDate.date = dateTime.m_dt;
pTaskItem->put_Subject(L"Task");
pTaskItem->put_KeepUpdatedCopy(VARIANT_TRUE);
pTaskItem->put_StatusReportOnCompletion(VARIANT_TRUE);
pTaskItem->put_ActualWork (2);
pTaskItem->put_Companies (SysAllocString (L"Company one, Company two"));
pTaskItem->put_StartTime (vStartDate);
pTaskItem->put_DueTime (vEndDate);
pTaskItem->put_Percentage (10);
pTaskItem->put_Resources (SysAllocString (L"Resources"));
pTaskItem->put_Viewed (VARIANT_FALSE);
pTaskItem->put_TaskStatus(1);
if
(SUCCEEDED
(pTaskItem->get_BodyText(&pFText)))
{
pFText->put_PlainText(L"Task for Task");
pFText->Release ();
}
if (SUCCEEDED (pTaskItem->get_Recipients(&pAddresses)))
{
VARIANT
vAddress, vDisplay, vType;
long index;
vAddress.vt = VT_BSTR;
vDisplay.vt = VT_BSTR;
vType.vt = VT_EMPTY;
vAddress.bstrVal = (L"thomas.tobit@tobit.com");
vDisplay.bstrVal = (L"DisplayName");
pAddresses->Add(vAddress, vDisplay, vType, &index);
pAddresses->Release
();
}
pTaskItem->Send(vType, vEmpty);
pTaskItem->Release();
}
pArchive->Release
();
}
Alles anzeigen
Hat vielleicht jemand noch einen Tipp für mich ?
Danke und Gruß
Sascha