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.
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"
Gruß Jan
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
- MessageBox.Show("Vor der Verbindung DB_Tools", "Mitarbeiter-Daten", MessageBoxButtons.OK, MessageBoxIcon.Hand)
- ' prüfen ob Daten für eine Signatur vorliegen
- Dim fDB As New DB_Tools
- MessageBox.Show("hinter der Verbindung DB_Tools", "Mitarbeiter-Daten", MessageBoxButtons.OK, MessageBoxIcon.Hand)
- UserData = fDB.GetWorkersProperties()
- MessageBox.Show("Count und Ende:= " & UserData.Count.ToString, "Mitarbeiter-Daten", MessageBoxButtons.OK, MessageBoxIcon.Hand)
- 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
- Public Function GetWorkersProperties(Optional sFID_Mitarbeiter As String = "-1", Optional DummyIfEmpty As Boolean = True) As Dictionary(Of String, String)
- Dim WorkersProp As String() = {"AMT_KNZ", "Abteilung", "SgNr", "Sachgebiet", "Sachgebiet_Lang", "Titel", "Anrede", "Vorname", "Name", "Vollname", "Zeichen",
- "Telefon", "Mobil", "Telefax", "eMail", "Zimmer", "Strasse", "PLZ", "Ort", "FID_STANDORTE"}
- Dim ErrMsgDetail As String = ""
- Dim Result As New Dictionary(Of String, String)
- Dim connectionString As String = GetOraConnectionString(Current_DB_User.EBL_KANAL) ' ACHTUNG: hier wird unabhängig vom Entwicklungsprojekt auf die ProduktionsDB zugegriffen!!
- Using connection As Oracle.ManagedDataAccess.Client.OracleConnection = New Oracle.ManagedDataAccess.Client.OracleConnection(connectionString)
- Dim command As Oracle.ManagedDataAccess.Client.OracleCommand = connection.CreateCommand()
- ' ------------ Basis-Daten ---------------
- 'ToDo: SQL anpassen
- '***** HINWEIS - Bei Veränderungen des SQL-Ausdrucks die Index-Angaben bei reader.GetSTring BEACHTEN!!! *****
- If sFID_Mitarbeiter = "-1" Then
- command.CommandText = String.Format("select * FROM EBL_MITARBEITER WHERE USERNAME = '{0}'", Environment.UserName.ToUpper)
- Else
- command.CommandText = String.Format("select * FROM EBL_MITARBEITER WHERE FID = {0}", sFID_Mitarbeiter)
- End If
- Try
- ErrMsgDetail = "Aufbau einer Connection"
- connection.Open()
- Dim reader As Oracle.ManagedDataAccess.Client.OracleDataReader = command.ExecuteReader()
- MessageBox.Show("hinter der DB-Abfrage", "Mitarbeiter-Daten", MessageBoxButtons.OK, MessageBoxIcon.Hand)
- If reader.HasRows Then
- While reader.Read() 'ERFORDERLICH, damit der Datenzeige auf den ersten Datensatz gesetzt wird !!!
- For i As Integer = 0 To WorkersProp.Count - 1
- ErrMsgDetail = "Spalte:= " & WorkersProp(i)
- Result.Add(WorkersProp(i).ToUpper, GetReaderAsString(reader, WorkersProp(i), "[++" & WorkersProp(i) & "++]")) ' Dummybelegung
- Next
- Exit While ' zwangsausstieg, weil nur ein Datensatz sein darf! Geht auch eleganter
- End While
- Else
- If DummyIfEmpty = False Then
- MessageBox.Show("Ihre Mitarbeiter-Stammdaten sind nicht in der Datenbank hinterlegt!", "Mitarbeiter-Daten", MessageBoxButtons.OK, MessageBoxIcon.Hand)
- For i As Integer = 0 To WorkersProp.Count - 1
- Result.Add(WorkersProp(i).ToUpper, "[++" & WorkersProp(i) & "++]") ' Dummybelegung
- Next
- End If
- End If
- reader.Close()
- Catch ex As Exception
- MessageBox.Show("Fehler beim Datensatz auslesen - " & ErrMsgDetail & Environment.NewLine & ex.ToString)
- End Try
- End Using 'connection
- Return Result
- End Function
Gruß Jan