Kosinator Geschrieben 22. Oktober 2008 Geschrieben 22. Oktober 2008 Hallo, ich habe im Betrieb eine Problemstellung zu bewältigen und hoffe, einer von eich hat vllt. eine Idee. Ich baue eine Schnittstelle von "unserem Programm" zu Outlook (Microsoft Office Outlook 2007 wenn ich mich nicht irre) und bin dabei auf ein Problem gestoßen. Ach, bevor ichs vergesse, ich arbeite mit Visual C# 2005. Erstmal der Erfolg, also das was funktioniert: Ich habe von Outlook die Kontaktdaten über Excel nach Access exportiert (also 2mal, warum, komme ich später drauf zu sprechen), und diese Datenbank dann mehr oder minder bequem aus unserem Programm ansteuern, abfragen und bearbeiten können. Soweit, sogut. Doch man möchte mehr (die hin und her exportierereien sind nicht so gut, zumal nur von Outlook nach Programm und nicht umgekehrt (bzw. mit umwegen) und keines Falls schön. Also kam der Plan auf, auf die Outlook-Daten quasi direkt , OLE-DB zuzugreifen, gesagt, getan. (mit Merge die TabellenStruktur nach ExcelVorlage behalten, damit die DB personalisiert ist) Doch was ist nun? Die Datensätze sind keineswegs vollständig, viele (gefüllte) Spalten fehlen (vorher etwa 94, nun 42). Bei der Fehlersuche ist mir dann auch aufgefallen, dass alleine der Export nach Excel zwar keine Daten verschwinden lässt (der Export nach Access (von Outlook aus) ist wesentlich mieserabler (noch etwa 60 Spalten). Mir scheint, als dass der OLE DB zugriff nur einige der Spalten übernimmt (halt um 40) die er für wichtig hält, e-mailAdresse oder Mehrere Telefonnummern sind wohl überflüssig... Vielleicht hat jemand von euch eine Idee, wie man dieses Outlook über die OLE DB dazu zwingen kann, dass es alle Spalten (und damit vorhandene Daten) rausrückt? hier ein stück Code wie ichs versuche: #region OutlookDaten laden // using System.Data.OleDb; // Nicht vergessen! /// <summary> /// Gibt den Inhalt eines bestimmten Outlook-Ordners als Tabelle zurück. /// (Wurde nur mit einer deutschen Outlook-version getastet!) /// </summary> /// <param name="mapiProfile">Name des MAPI-Profils (z.B. "MS Exchange-Einstellungen"), einzusehen in Systemsteuerung -> Mail</param> /// <param name="displayUserName">Anzeigename des Benutzers (z.B. "Max Mustermann")</param> /// <param name="folderName">Name des Ordners (z.B. "Posteingang")</param> /// <returns>Inhalt des Outlook-Ordners</returns> private DataTable GetOutlookFolderData(string mapiProfile, string displayUserName, string folderName) { // Verbindungszeichenfolge erzeugen string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Exchange 4.0;MAPILEVEL=Postfach - {0}|;PROFILE={1};TABLETYPE=0;DATABASE={2};",displayUserName,mapiProfile,Environment.GetEnvironmentVariable("TEMP")); // SQL-Abfrage erzeugen string sql = string.Format("SELECT * FROM {0}", folderName); // Neue Tabelle erzeugen DataTable result = new DataTable(folderName); // Verbindung zu Outlook herstellen using (OleDbConnection connection = new OleDbConnection(connectionString)) { // Datenadapter bauen OleDbDataAdapter adapter = new OleDbDataAdapter(sql, connection); // Inhalt des Outlook-Ordners abrufen adapter.Fill(result); } // Tabelle mit Ordnerinhalt zurückgeben return result; } #endregion (Dieses Snippet im Inet gefunden... ) Für jegliche Tipps und Anregungen bin ich dankbar. Gruß, Kosi Zitieren
Kosinator Geschrieben 22. Oktober 2008 Autor Geschrieben 22. Oktober 2008 Oops, bei falscher Forenwahl bitte verschieben und DIESEN Eintrag löschen, danke Zitieren
Kosinator Geschrieben 3. November 2008 Autor Geschrieben 3. November 2008 *Nachobenschieb* Bitte ins richteige Unterforum setzten, falls hier falsch, danke Zitieren
grueni Geschrieben 3. November 2008 Geschrieben 3. November 2008 Das hier ist das richtige Unterforum. Kein Threadpushing bitte. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.