Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Daten aus Exchange mit ADODB auslesen
chanderegg
myCSharp.de - Member



Dabei seit:
Beiträge: 101
Herkunft: Solothurn CH

Themenstarter:

Daten aus Exchange mit ADODB auslesen

beantworten | zitieren | melden

verwendetes Datenbanksystem: Exchange 2003

Hallo zusammen

Ich habe etwa vor einem Jahr ein Programm geschrieben, welches die Kontaktdaten im Outlook aus einem öffentlichen Ordner in eine Oracle DB speichert. Dies hat einwandfrei funktioniert bis jetzt aber nun habe ich folgendes Problem:
Beim Auslesen der Daten kennt er den Index nicht mehr.

Ich bin wie folgt vorgegangen:
Zuerst die Verbindung herstellen


oCn.Provider = "exoledb.datasource";
oCn.Open(sURL, ExBenutzer, ExPasswort, 0);
funktioniert

dann recordset erstellen


//Definiert den String für die SQL Abfrage
            strSql = "";
            strSql = "select * from scope ('shallow traversal of " + "\"";
            strSql = strSql + sURL + "\"') WHERE \"DAV:ishidden\" = false AND \"DAV:isfolder\" = false";
            strSql = strSql + " ORDER BY \"urn:schemas:contacts:sn\" ";

            //Erstellt Objekte mit den Records
            oRs.Open(strSql, oCn,
                ADODB.CursorTypeEnum.adOpenStatic,
                ADODB.LockTypeEnum.adLockOptimistic, 1);
geht auch und erkennt sogar, dass es einen Eintrag enthält

dann die Daten in ein Objekt schreiben


oFields = oRs.Fields;

                DatenObjekt ExchangeDatenObjekt = new DatenObjekt();

                //Gibt die Anrede aus
                oField = oFields["urn:schemas:contacts:personaltitle"];
                ExchangeDatenObjekt.Anrede = oField.Value.ToString();

                //Gibt den Vornamen aus
                oField = oFields["urn:schemas:contacts:givenName"];
                ExchangeDatenObjekt.Vorname = oField.Value.ToString();

                //Gibt den Nachnamen aus
                oField = oFields["urn:schemas:contacts:sn"];
                ExchangeDatenObjekt.Nachname = oField.Value.ToString();

                //Gibt die Strasse inklusive Hausnummer aus
                oField = oFields["urn:schemas:contacts:mailingstreet"];
                ExchangeDatenObjekt.Adresse = oField.Value.ToString();

                //Gibt die Postleitzahl aus
                oField = oFields["urn:schemas:contacts:mailingpostalcode"];
                ExchangeDatenObjekt.Postleitzahl = oField.Value.ToString();

                //Gibt den Ort aus
                oField = oFields["urn:schemas:contacts:mailingcity"];
                ExchangeDatenObjekt.Ort = oField.Value.ToString();

                //Gibt die Mail-Adresse aus
                oField = oFields["urn:schemas:contacts:email1"];
                ExchangeDatenObjekt.Email = oField.Value.ToString();

                //Gibt die Festnetz-Telephonnummer aus
                oField = oFields["urn:schemas:contacts:telephoneNumber"];
                ExchangeDatenObjekt.Tel = oField.Value.ToString();

                //Gibt die Natelnummer aus
                oField = oFields["urn:schemas:contacts:mobile"];
                ExchangeDatenObjekt.Mobile = oField.Value.ToString();

                //Gibt die Faxnummer aus
                oField = oFields["urn:schemas:contacts:facsimiletelephonenumber"];
                ExchangeDatenObjekt.Fax = oField.Value.ToString();

                //Gibt die Abteilung/Spezifikation aus
                oField = oFields["urn:schemas:contacts:profession"];
                ExchangeDatenObjekt.Abteilung = oField.Value.ToString();

                //Gibt die Firma aus
                oField = oFields["urn:schemas:contacts:o"];
                ExchangeDatenObjekt.Firma = oField.Value.ToString();

                //Gibt das Land aus
                oField = oFields["urn:schemas:contacts:mailingcountry"];
                ExchangeDatenObjekt.Land = oField.Value.ToString();

                //Gibt die URL der Firmenhomepage aus
                oField = oFields["urn:schemas:contacts:businesshomepage"];
                ExchangeDatenObjekt.URL = oField.Value.ToString();

                //Gibt das Erstelldatum aus
                oField = oFields["DAV:creationdate"];
                ExchangeDatenObjekt.Erstelldatum = Convert.ToDateTime(oField.Value);

                return ExchangeDatenObjekt;
Hier gibts nun Probleme, da er den Index nicht erkennt. Ich habe deshalb mal nachgeschaut, was für Indexes so ein Eintrag hat und folgendes Resultat erhalten:
DAV:contentclass: urn:content-classes:person
DAV:isroot:
DAV:defaultdocument:
DAV:getcontenttype: message/rfc822
DAV:lastaccessed:
DAV:resourcetype:
DAV:creationdate: 08.12.2009 16:33:53
DAV:getcontentlanguage:
DAV:ishidden: False
DAV:parentname: http://....
DAV:getcontentlength: 5965
DAV:isstructureddocument: False
http://schemas.microsoft.com/repl/repl-uid: rid:6f96d09eedb6244ca157318e4c0ff76800000011c71e
DAV:displayname: Hans Muster-1072143035.EML
DAV:href: http://...
DAV:isreadonly: False
DAV:getlastmodified: 09.12.2009 14:53:25
DAV:iscollection: False
http://schemas.microsoft.com/repl/resourcetag: rt:6f96d09eedb6244ca157318e4c0ff76800000011c71e6f96d09eedb6244ca157318e4c0ff76800000011c923

Ich frage mich nun wo sind meine Felder hingekommen und wieso hat sich das plötzlich geändert?

ps. Das Programm wird nur alle paar Monate ausgeführt.

Vielen Dank für Eure Hilfe
chanderegg
private Nachricht | Beiträge des Benutzers