I am almost unfamiliar with VBA (I had courses at school and it was). Now I need to connect to the Oracle database (which runs on a remote server) from an Excel file. I went around and found some examples. So, there is the following code that I have written so far:
Sub Try() Dim cn As New ADODB.Connection Dim rs As ADODB.Recordset Dim cmd As ADODB.Command Dim chunk() As Byte Dim fd As Integer Dim flen As Long Dim Main As ADODB.Parameter Dim object As ADODB.Parameter Stil = vbYesNo + vbCritical + vbDefaultButton1 Titel = "db connection test" ' Meldung anzeigen. Antwort = MsgBox("trying to connect to db", Stil, Titel, Hilfe, Ktxt) ' Connect to the database using ODBC [msdaora][ORAOLEDB.Oracle]Provider=ORAOLEDB.Oracle; With cn .ConnectionString = "Provider=ORAOLEDB.Oracle;Password=pass;User ID=usr;Data Source=host:port:sid" .Open .CursorLocation = adUseClient End With ret = cn.Execute("create table newtesttable (main integer, object oid)") ' Here is an example if you want to issue a direct ' command to the database ' 'Set cmd = New ADODB.Command 'With cmd ' .CommandText = "delete from MYTABLE" ' .ActiveConnection = cn ' .Execute 'End With 'Set cmd = Nothing ' ' Here is an example of how insert directly into the ' database without using ' a recordset and the AddNew method ' Set cmd = New ADODB.Command cmd.ActiveConnection = cn ' cmd.CommandText = "insert into newtesttable(main,object) values(?,?)" cmd.CommandText = "select * from test" cmd.CommandType = adCmdText ' The main parameter ' Set main = cmd.CreateParameter("main", adInteger, adParamInput) 'main.Value = 100 '' a random integer value '' 'cmd.Parameters.Append main ' Open the file for reading 'fd = FreeFile 'Open "myBlobFile.txt" For Binary Access Read As fd 'flen = LOF(fd) 'If flen = 0 Then ' Close ' MsgBox "Error while opening the file" ' End 'End If ' The object parameter ' ' The fourth parameter indicates the memory to allocate ' to store the object ' Set object = cmd.CreateParameter("object", _ ' adLongVarBinary, _ ' adParamInput, _ flen + 100) ' ReDim chunk(1 To flen) ' Get fd, , chunk() ' Insert the object into the parameter object ' object.AppendChunk chunk() ' cmd.Parameters.Append object ' Now execute the command Set rs = cmd.Execute ' Mldg = "test" Stil = vbYesNo + vbCritical + vbDefaultButton1 Titel = "asdasdasd" ' Meldung anzeigen. Antwort = MsgBox(rs, Stil, Titel, Hilfe, Ktxt) ' ... and close all cn.Close Close End Sub
I believe that there are many problems in this code, but at the moment this fails when trying to execute. Open by saying that "Provider cannot be found. It may not be properly installed" . "Provider cannot be found. It may not be properly installed" After that, I found that I needed to download and install ORAOLEDB.dll. I did this by installing ORAOledb11.dll (I tried both 32-bit and 64-bit, my computer is 64 bit). I installed it by running regsvr32 OraOLEDB11.dll .
Unfortunately, the problem is before that. So what can be the steps to fix this problem? Can I somehow make sure that Oraoledb is installed correctly on my machine?
Any advice is appreciated.
source share