Я экспериментирую с попыткой написать поставщика OLEDB. Я начал с мастера поставщика ATL OLE DB. После исправления очевидной проблемы с макросом COM_INTERFACE_ENTRY2 мне удалось получить код по умолчанию для компиляции, но пока я не пользуюсь большим успехом при его использовании.
Например, я попытался использовать VB.NET для подключения к нему как так:
Dim testConn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=TestProvider.Provider.1")
testConn.Open()
Dim strTest As String = "C:\*.*"
Dim testCmd As New OleDb.OleDbCommand(strTest, testConn)
Dim testRd As OleDb.OleDbDataReader
testRd = testCmd.ExecuteReader()
Последняя строка производит InvalidOperationException
с дополнительной информацией: OleDbDataAdapter internal error: invalid row set accessor: Ordinal=1 Status=BADBINDINFO
,
Попытка использовать ADO из VBA в Access позволяет мне правильно извлекать имена полей, но когда я пытаюсь получить какие-либо фактические значения, я получаю довольно общее сообщение «многошаговая операция OLE DB произвела ошибки».
Я попытался прочитать о связывании и методах доступа, но в коде шаблона, похоже, нет ничего уместного для изменения. Есть что-то еще, что я могу делать не так? Я попытался создать новую карту столбцов и заменить весь код FindFirstFile различными полями с жестко заданными значениями, но все равно получаю те же ошибки.
Я использую Visual Studio 2013 RC, но не думаю, что это проблема, связанная с IDE.
Задача ещё не решена.
Других решений пока нет …