2015-11-18 2 views
0

Я вызываю функцию vb.net dll из-под кода VBA в MDB. Я вызываю Get_GDW_data_final sub из непосредственного окна.error -2147467259 (80004005) .net mdb

Public Sub Get_GDW_data_final() 
Dim r As New Get_GDW_Data.GDW 
MsgBox r.DetailedWork() 
End Sub 

Я создал Get_GDW_Data.dll добавил ссылку на него в MDB.

Кодирование класса приведено ниже.

Public Class GDW 
    Public Function DetailedWork() 
     Dim lastrow As Long 
     Dim ADODBcnn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Access8\W156_RocketOffset_Backup.mdb;Persist Security Info=False;Mode=read") 
     Dim ADODBcmd As New OleDb.OleDbCommand 
     Dim ADODBcmd1 As New OleDb.OleDbCommand 
     Dim ADODBrst As OleDb.OleDbDataReader 
     ADODBcnn.Open() 
     ADODBcmd.CommandText = "select count(*) from input" 
     lastrow = ADODBcmd.ExecuteScalar() 
     ADODBcnn.Close() 
     Return lastrow.ToString() 

    End Function 
End Class 

Здесь я получаю ошибку

ошибку времени выполнения -2147467259 (80004005) база данных были введены в состоянии администратора или машинами «Rachit», что prvents его от открытия или заблокированы.

ответ

1

я обнаружил, что проблема была:

Это ограничение доступа, что вы не можете получить доступ к таблице базы данных с использованием библиотеки DLL из который вы вызываете функцию :-)

+1

Когда SO разрешает это, не забудьте нажать галочку рядом с этим, чтобы указать, что он отвечает на ваш вопрос. –

0

INPUT является зарезервированным словом, так попробовать:

ADODBcmd.CommandText = "select count(*) from [input]" 
+0

Да, я сделал это уже, но это не причина этой ошибки. Проблема в том, что база данных уже открыта, и я вызываю sub из непосредственного окна, которое вызывает функцию .net, которая пытается получить доступ к таблице уже открытой базы данных. вид одновременного подключения. –