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