von Outlook auf Oracle zugreifen

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von jan99.

    von Outlook auf Oracle zugreifen

    Moin!

    ich habe zwei Rechner die im Hintergrund auf Oracle zugreifen - im Rahmen einer AutoCAD Anwendung.

    Das eine ist mein Entwicklungsrechner und das andere der eines Kollegen zum Testen ob die Anpassung beim Ausrollen funktionert.

    Dann habe ich schon einmal einen Zugriff aus Word auf Oracle durchgeführt.

    In der Word-Anwendung habe ich über Nuget folgendes Paket installiert:



    Bei der Verteilung habe ich dort einfach nur in das Verzeichnis mit den DLL folgende Datei hineinkopiert:



    Nun wollte ich auch den Zugriff aus Outlook realisieren und zunächst das Paket über Nuget einbinden - das hat zwischenzeitlich eine andere Nummer:



    Bei mir auf der Entwicklungsmaschine läuft alles so wie gewünscht.

    Nun habe ich die Dateien im Auslieferungsverzeichnis aktualisiert und auch dieselbe



    dort reinkopiert.

    Nun führe ich den Code beim Kollegen aus und ein Test hat ergeben, dass die mit der Oracle-Zugriffsfunktion noch eingebunden wird, dann aber der Code aus irgendwelchen Gründen nicht weiter ausgeführt wird.

    Hier wird noch initalisiert.

    VB.NET-Quellcode

    1. MessageBox.Show("Vor der Verbindung DB_Tools", "Mitarbeiter-Daten", MessageBoxButtons.OK, MessageBoxIcon.Hand)
    2. ' prüfen ob Daten für eine Signatur vorliegen
    3. Dim fDB As New DB_Tools
    4. MessageBox.Show("hinter der Verbindung DB_Tools", "Mitarbeiter-Daten", MessageBoxButtons.OK, MessageBoxIcon.Hand)
    5. UserData = fDB.GetWorkersProperties()
    6. MessageBox.Show("Count und Ende:= " & UserData.Count.ToString, "Mitarbeiter-Daten", MessageBoxButtons.OK, MessageBoxIcon.Hand)
    7. If UserData.Count = 0 Then


    Die Funktion GetWorkersProperties ist 1:1 aus der Word-Umgebung übernommen worden und funktioniert wie gesagt.

    Wenn es zu einem Absturz in GetWorkersProperties kommt, dann müsste doch entweder eine Meldung kommen und wenn es nicht "tötlich" ist, dann hinter GetWorkersProperties weiter gehen. Tut es aber nicht.

    Habe ich vielleicht mit der Auslieferung der Oracle.ManagedDataAccess.dll schon einen konzeptionellen Fehler gemacht. Aber dann würde doch meist eine Meldung kommen, dass der Einsprungpunkt oder ähnliches ein Problem bereitet hat kommen.

    Sonst fällt mir aber auch nix ein, wie ich den möglichen Fehler debuggen soll.

    Kann mir einer weiterhelfen?

    Zum Abschluss noch zur Vollständigkeit die Funktion "GetWorkersProperties"


    VB.NET-Quellcode

    1. Public Function GetWorkersProperties(Optional sFID_Mitarbeiter As String = "-1", Optional DummyIfEmpty As Boolean = True) As Dictionary(Of String, String)
    2. Dim WorkersProp As String() = {"AMT_KNZ", "Abteilung", "SgNr", "Sachgebiet", "Sachgebiet_Lang", "Titel", "Anrede", "Vorname", "Name", "Vollname", "Zeichen",
    3. "Telefon", "Mobil", "Telefax", "eMail", "Zimmer", "Strasse", "PLZ", "Ort", "FID_STANDORTE"}
    4. Dim ErrMsgDetail As String = ""
    5. Dim Result As New Dictionary(Of String, String)
    6. Dim connectionString As String = GetOraConnectionString(Current_DB_User.EBL_KANAL) ' ACHTUNG: hier wird unabhängig vom Entwicklungsprojekt auf die ProduktionsDB zugegriffen!!
    7. Using connection As Oracle.ManagedDataAccess.Client.OracleConnection = New Oracle.ManagedDataAccess.Client.OracleConnection(connectionString)
    8. Dim command As Oracle.ManagedDataAccess.Client.OracleCommand = connection.CreateCommand()
    9. ' ------------ Basis-Daten ---------------
    10. 'ToDo: SQL anpassen
    11. '***** HINWEIS - Bei Veränderungen des SQL-Ausdrucks die Index-Angaben bei reader.GetSTring BEACHTEN!!! *****
    12. If sFID_Mitarbeiter = "-1" Then
    13. command.CommandText = String.Format("select * FROM EBL_MITARBEITER WHERE USERNAME = '{0}'", Environment.UserName.ToUpper)
    14. Else
    15. command.CommandText = String.Format("select * FROM EBL_MITARBEITER WHERE FID = {0}", sFID_Mitarbeiter)
    16. End If
    17. Try
    18. ErrMsgDetail = "Aufbau einer Connection"
    19. connection.Open()
    20. Dim reader As Oracle.ManagedDataAccess.Client.OracleDataReader = command.ExecuteReader()
    21. MessageBox.Show("hinter der DB-Abfrage", "Mitarbeiter-Daten", MessageBoxButtons.OK, MessageBoxIcon.Hand)
    22. If reader.HasRows Then
    23. While reader.Read() 'ERFORDERLICH, damit der Datenzeige auf den ersten Datensatz gesetzt wird !!!
    24. For i As Integer = 0 To WorkersProp.Count - 1
    25. ErrMsgDetail = "Spalte:= " & WorkersProp(i)
    26. Result.Add(WorkersProp(i).ToUpper, GetReaderAsString(reader, WorkersProp(i), "[++" & WorkersProp(i) & "++]")) ' Dummybelegung
    27. Next
    28. Exit While ' zwangsausstieg, weil nur ein Datensatz sein darf! Geht auch eleganter
    29. End While
    30. Else
    31. If DummyIfEmpty = False Then
    32. MessageBox.Show("Ihre Mitarbeiter-Stammdaten sind nicht in der Datenbank hinterlegt!", "Mitarbeiter-Daten", MessageBoxButtons.OK, MessageBoxIcon.Hand)
    33. For i As Integer = 0 To WorkersProp.Count - 1
    34. Result.Add(WorkersProp(i).ToUpper, "[++" & WorkersProp(i) & "++]") ' Dummybelegung
    35. Next
    36. End If
    37. End If
    38. reader.Close()
    39. Catch ex As Exception
    40. MessageBox.Show("Fehler beim Datensatz auslesen - " & ErrMsgDetail & Environment.NewLine & ex.ToString)
    41. End Try
    42. End Using 'connection
    43. Return Result
    44. End Function



    Gruß Jan
    Moin!

    mir ist nochmal ein Gedanken gekommen die Versionen aus der Entwicklungsumgebung zu vergleichen und als ich dann die neuere Version genommen habe hat es funktioniert.

    Ich habe die "Oracle.ManagedDataAccess.dll" aus dem Verzeichnis <Projektverzeichnis>\packages\Oracle.ManagedDataAccess.21.4.0\lib\net462 genommen

    Gruß Jan