Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 25.04.2017
Сообщений: 156

Не находит OLEDB 12

27.03.2019, 12:00. Показов 2986. Ответов 15

Студворк — интернет-сервис помощи студентам
Всем привет!
Ещё одна больная тема
При демонстрации программы у двух человек - программа работает, базы данных отображаются и все хорошо.
Показал на другом компьютере при запуске окна с базами данных (на кнопку нажимаю и там новая форма с базами) ошибка типо "OLEDB не обнаружен" и т.д.
Мне сказали попробовать сделать установщик программы и впихнуть в него дополнительный параметр установки (Как директс при установке игры, только OLEDB).
Или внутри VB.net где то найти зависимость файлов, типо если на компе нету то он сам из себя возьмет, чет такое.
Кто то знает что это и вообще как подобную проблему решить?
P.s. это всё при AnyCPU, при x64 или x86 у меня самого ошибки вылетают.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2019, 12:00
Ответы с готовыми решениями:

Скомпилировать проект с OleDB, чтобы не требовался установленный пакет OleDB
Добрый день! Возможно ли скомпилировать проект, который работает с базами данных с помощью OleDB, так, чтобы не требовался установленный...

Студия не находит версии angular 2 (VS Code находит) (скрин внутри)
Проект - ASP.NET MVC 5 Empty Создал в корне package.json, и вот что там вижу: (см. вложение , черт побери cyberforum за такое...

Написать программу,которая находит в заданной последовательности находит второе максимальное число
Написать программу,которая находит в заданной последовательности находит второе максимальное число

15
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
27.03.2019, 12:51
ну найдите и носите с приложение библиотеку OLEDB. При необходимости - регистрируйте в системе.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
28.03.2019, 14:13
Polyana1997, можно попробовать получитьь список поддерживаемых провайдеров с помощью класса OleDbEnumerator и выбирать один из тех который тебе подходит. То есть составить список названий поддерживаемых провайдеров, проверять есть ли он в списке и подставлять в строку подключения. Если ни одного провайдера нет, то предлагать скачать и установить провайдера.

Добавлено через 4 минуты
Здесь мой пример на C#. Его несложно переделать на VB.NET
2
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
28.03.2019, 15:42
OwenGlendower, перевел ваш код из примера, оставлю здесь:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    Dim supportedProviders As String() = {"Microsoft.Jet.OLEDB.4.0", "Microsoft.ACE.OLEDB.12.0"}
    Dim providerIndex As Integer = -1
 
    Using dbReader = OleDbEnumerator.GetRootEnumerator()
 
        While dbReader.Read()
            Dim idx As Integer = Array.IndexOf(supportedProviders, CStr(dbReader("SOURCES_NAME")))
            If idx = -1 Then Continue While
            If providerIndex = -1 OrElse (providerIndex <> -1 AndAlso providerIndex > idx) Then providerIndex = idx
        End While
    End Using
 
    If providerIndex <> -1 Then
        Dim provider As String = supportedProviders(providerIndex)
    Else
         'Не найден провайдер для Access
    End If
2
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
28.03.2019, 16:06
Лучший ответ Сообщение было отмечено Polyana1997 как решение

Решение

Yury Komar, спасибо за перевод. Вот более короткий вариант с использованием LINQ
VB.NET
1
2
3
4
5
6
7
8
9
' Список провайдеров в порядке убывания приоритета
Dim supportedProviders As String() = {"Microsoft.Jet.OLEDB.4.0", "Microsoft.ACE.OLEDB.12.0"}
Dim installedProviders = New OleDbEnumerator().GetElements().AsEnumerable().Select(Function(row) row.Field(Of String)("SOURCES_NAME"))
Dim provider As String = supportedProviders.Intersect(installedProviders).FirstOrDefault()
If provider Is Nothing Then
    ' Не найден провайдер для Access
Else
    ' Подключение используя значение provider
End If
4
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
28.03.2019, 17:21
OwenGlendower, супер. возьму в копилку.
0
1 / 1 / 0
Регистрация: 25.04.2017
Сообщений: 156
28.03.2019, 20:24  [ТС]
OwenGlendower, а как вот это подключение создать?
Интересная штука
0
28.03.2019, 20:57

Не по теме:

Цитата Сообщение от Polyana1997 Посмотреть сообщение
Интересная штука
как она может быть интересна когда хрен что понятно:)

0
1 / 1 / 0
Регистрация: 25.04.2017
Сообщений: 156
28.03.2019, 21:19  [ТС]
XIST, Ну, Вам интересна рассуждать о вселенной или космосе? Мы о том, что там дальше неизвестно и эта матрица насколько она бесконечно тоже не известно но это интересно.
Так и тут, есть вопросы но интересно.
Интерес от неизвестности не зависит
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
28.03.2019, 23:10
Цитата Сообщение от Polyana1997 Посмотреть сообщение
а как вот это подключение создать?
Как-то так
VB.NET
1
2
3
4
Dim csb As New OleDbConnectionStringBuilder("твоя строка соединения без указания provider")
csb.Provider = GetAccessProvider()
Dim connectionString As String = csb.ConnectionString
Dim connection As New OleDbConnection(connectionString)
1
1 / 1 / 0
Регистрация: 25.04.2017
Сообщений: 156
28.03.2019, 23:17  [ТС]
OwenGlendower, Это вот то самое объявление соединения и его пихнуть в else и все готово
VB.NET
1
2
3
4
5
If provider Is Nothing Then
    ' Не найден провайдер для Access
Else
    ' Подключение используя значение provider
End If
0
1 / 1 / 0
Регистрация: 25.04.2017
Сообщений: 156
30.03.2019, 14:45  [ТС]
OwenGlendower, Извиняюсь, долго не был, getaccessProvider() это откуда ползет?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
30.03.2019, 15:16
Polyana1997, GetAccessProvider это функция где размещен ранее приведенный код поиска провайдера
VB.NET
1
2
3
4
5
6
Function GetAccessProvider() As String
    ' Список провайдеров в порядке убывания приоритета
    Dim supportedProviders As String() = {"Microsoft.Jet.OLEDB.4.0", "Microsoft.ACE.OLEDB.12.0"}
    Dim installedProviders = New OleDbEnumerator().GetElements().AsEnumerable().Select(Function(row) row.Field(Of String("SOURCES_NAME"))
    Return supportedProviders.Intersect(installedProviders).FirstOrDefault()
End Function
0
1 / 1 / 0
Регистрация: 25.04.2017
Сообщений: 156
30.03.2019, 21:03  [ТС]
OwenGlendower, оч сложно, не умею работать с соединениями, это же должно быть отдельно, а я в одно все пихнул.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 Function GetAccessProvider() As String
        ' Список провайдеров в порядке убывания приоритета
        Dim supportedProviders As String() = {"Microsoft.Jet.OLEDB.4.0", "Microsoft.ACE.OLEDB.12.0"}
        Dim installedProviders = New OleDbEnumerator().GetElements().AsEnumerable().Select(Function(row) row.Field(Of String)("SOURCES_NAME"))
        Dim provider As String = supportedProviders.Intersect(installedProviders).FirstOrDefault()
        If provider Is Nothing Then
            ' Не найден провайдер для Access
            MsgBox("Не найден OLEDB")
        Else
            Dim csb As New OleDbConnectionStringBuilder("твоя строка соединения без указания provider")
            csb.Provider = GetAccessProvider()
            Dim connectionString As String = csb.ConnectionString
            Dim connection As New OleDbConnection(connectionString)
        End If
        Return supportedProviders.Intersect(installedProviders).FirstOrDefault()
    End Function
0
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
31.03.2019, 19:33
Polyana1997, постараюсь ещё сильнее разжевать то, что и так достаточно понятно показал OwenGlendower. Если ничего не напутал, так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Button1_Click(sender As Button, e As EventArgs) Handles Button1.Click
        Dim csb As New OleDbConnectionStringBuilder("Data Source=файл_вашей_базы_данных.mdb")
        csb.Provider = GetAccessProvider()
        Dim connectionString As String = csb.ConnectionString
        Dim connection As New OleDbConnection(connectionString)
    End Sub
 
    Function GetAccessProvider() As String
        ' Список провайдеров в порядке убывания приоритета
        Dim supportedProviders As String() = {"Microsoft.Jet.OLEDB.4.0", "Microsoft.ACE.OLEDB.12.0"}
        Dim installedProviders = New OleDbEnumerator().GetElements().AsEnumerable().Select(Function(row) row.Field(Of String)("SOURCES_NAME"))
        Return supportedProviders.Intersect(installedProviders).FirstOrDefault()
    End Function
2
1 / 1 / 0
Регистрация: 25.04.2017
Сообщений: 156
31.03.2019, 19:54  [ТС]
MrCrown, Ну я вот подобное и написал по итогу, только в load.
Спасибо! Только я одно пропустил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.03.2019, 19:54
Помогаю со студенческими работами здесь

компьютер не находит видеокарту и пишет, что не находит соответсвующих драйверов для этого оборудования
Скачевал разные драйвера но пишет что обородование не находит соответсвующих драйверов для этого оборудования. Пробовал старые драйвера (не...

MySQL и OleDB
Здравствуйте, возникла следующая проблема: Я писал приложение на C#(WinForms) для локальной БД Access, надеясь, что переход на MySQL на...

Combobox И OleDB
Проблема: не могу добавить значение из комбобокса в БД Access. Combobox заполнен колекцией. То есть в бд нету мастера подстановок. Как...

Microsoft.Jet.OLEDB.3.51
Здравствуйте! У меня такая проблема... Программа использует для доступа к БД провайдер Microsoft.Jet.OLEDB.3.51. Скажите, что мне...

Microsoft.ACE.OLEDB.12.0
Добрый день! Извините, если подобный вопрос уже был но на форуме, но ответа на него не нашел. у меня был проект работающий без базы. он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru