0

I hope you can help me out. We've have been trying to solve this for weeks now.

We are trying to connect to our oracle DB. This is working in ACCESS via VBA code..

Set Time_Conn = CreateObject("ADODB.Connection")
Set Time_Rec = CreateObject("ADODB.Recordset")
connection_string = "Provider=OraOLEDB.Oracle; Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XXX.XXX.XXX.XXX)(PORT=XXXX))(CONNECT_DATA=(SERVER=dedicated)(SID=XXXXX))); User ID=XXXXXXXXX;Password=XXXXXXXX;"
Time_Conn.Open connection_string

But now we have to bring it to an .NET application and here we fail..

Dim strConnection As String = "Provider=OraOLEDB.Oracle; Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XXX.XXX.XXX.XXX)(PORT=XXXX))(CONNECT_DATA=(SERVER=dedicated)(SID=XXXXX))); User ID=XXXXXXXXXXX;Password=XXXXXXXXXXX;"
Dim DB_Connection As Object
Dim DB_RecordSet As Object
DB_Connection = CreateObject("ADODB.Connection")
DB_RecordSet = CreateObject("ADODB.Recordset")
DB_Connection.Open(strConnection)

We are getting error..

System.Runtime.InteropServices.COMException
  HResult=0x800A0E7A
  Nachricht = Der Provider kann nicht gefunden werden.  Möglicherweise ist er nicht richtig installiert worden.
  Quelle = Microsoft.VisualBasic
  Stapelüberwachung:
   at Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack, Boolean IgnoreReturn)
   at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
   at Starter.Form_Main_Starter.fRefresh_Task_ListBox() in C:\DEV\starter\Form1.vb:line 95
   at Starter.Form_Main_Starter.Form_Main_Starter_Load(Object sender, EventArgs e) in C:\DEV\starter\Form1.vb:line 54
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
   at System.Windows.Forms.Form.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

ODBC drivers

  • Is there any specific reason you're using late binding instead of early binding? – Hel O'Ween Nov 19 '21 at 14:37
  • 1
    I am not sure why you are showing an image of ODBC drivers when your connection appears to be using the OLE DB provider. Do you have the 32- or 64-bit version installed? My guess is that Access and .Net are looking for different versions (my guess would be that you have 32-bit Access and you're trying to build a 64-bit .NET application). – Justin Cave Nov 19 '21 at 15:17
  • I also suspect, you moved from 32-bit to 64-bit. Maybe have a look at https://stackoverflow.com/questions/34803106/how-to-connect-to-oracle-11-database-from-net/34805999#34805999 – Wernfried Domscheit Nov 19 '21 at 17:22
  • Why are not moving "properly" to .NET? I.e. instead of `Connection = CreateObject("ADODB.Connection")` use `Connection = new System.Data.OleDb.OleDbConnection()` or similar. – Wernfried Domscheit Nov 19 '21 at 17:28

0 Answers0