C
Hallo
Ich arbeite an einem Programm, mit dem ich Kontakte aus einer externen Datenbank (MS-SQL Server),
in den MS-Exchange Server 2000 exportieren kann.
Erstellen der Kontakte klappt einwandfrei, gemäss Beispiel aus der MSDN:
[url]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/e2k3/e2k3/_clb_adding_a_new_contact_with_cdoex_cpp.asp
[/url]
Kennt jemand eine möglichkeit, einen bestimmten Kontakt wieder zu löschen?
Der Ablauf meines Programms sollte dann folgendermassen sein:
1. Alle Kontakte die in der SQL-DB als "Gelöscht" markiert sind, im Exchange löschen
2. Alle "aktiven" Kontakte aus der SQL-DB in den Exchange kopieren.
Hier mal mein Code zum reinkopieren der funktioniert:
HRESULT hr = S_OK;
CString str,str_url;
CListBox *pLB;
pLB = (CListBox*)GetDlgItem(IDC_LIST_HISTO);
str_url = m_edit_url;
str_url = str_url += m_edit_ordner;
str_url = str_url += "/";
wchar_t* folderURL = NULL;
size_t size;
size = mbstowcs(NULL,str_url,0);
folderURL = (wchar_t*)malloc(size * sizeof(wchar_t*) + 1);
mbstowcs(folderURL,str_url,size+1);
BSTR bstrFolderURL = SysAllocString(folderURL);
try
{
CDO::IPersonPtr pPerson(_uuidof(CDO::Person));
CDO::IDataSourcePtr pDsrc;
pPerson->put_FirstName(m_edit_vorname.AllocSysString());
pPerson->put_LastName(m_edit_nachname.AllocSysString());
pPerson->put_Email(m_edit_email.AllocSysString());
pPerson->get_DataSource(&pDsrc);
hr = pDsrc->SaveToContainer(bstrFolderURL,
0,
(enum CDO::ConnectModeEnum) adModeReadWrite,
(enum CDO::RecordCreateOptionsEnum)adCreateOverwrite,
(enum CDO::RecordOpenOptionsEnum)adOpenSource,
L"",
L"");
if (SUCCEEDED(hr))
{
str.Format("Kontakt Erfolgreich hinzugefügt: %s - %s %s",m_edit_vorname,m_edit_nachname,m_edit_email);
pLB->AddString(str);
str.Format("-> in Ordner: %s",m_edit_ordner);
pLB->AddString(str);
}
else
{
str.Format("Fehler beim Erstellen: %s - %s %s",m_edit_vorname,m_edit_nachname,m_edit_email);
pLB->AddString(str);
}
}
catch(_com_error &e)
{
dump_com_error(e);
}
m_edit_nachname = "";
m_edit_vorname = "";
m_edit_email = "";
UpdateData(FALSE);
SysFreeString(bstrFolderURL);
Vielen Dank