Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Tormento
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 94
1

Ошибка доступа к базе данных "ссылка на член, не являющийся общим, должна быть ссылкой на объект"

18.04.2015, 10:41. Просмотров 947. Ответов 19
Метки нет (Все метки)

Есть форма с базой данных все работает.

vb.net
1
2
3
4
5
6
' Объявляем местонахождение базы
Dim DS As String = Application.StartupPath & "\Base.accdb"
Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + DS)
Dim SqlCom As OleDb.OleDbCommand
......
......

но если добавить в код Imports Microsoft.Office.Interop.Excel над Public Class R_Form (моя форма)

vb.net
1
2
3
Imports Microsoft.Office.Interop.Excel
 
Public Class R_Form
то сразу же выдается ошибка Application.StartupPath подчеркивается.
"ссылка на член, не являющийся общим, должна быть ссылкой на объект"
что это значит и как исправить.
мне и Imports Microsoft.Office.Interop.Excel удалять нельзя и базу нужно подключить указав к ней путь не конкретно на определенный диск, а в каталог с программой, так как может устанавливаться на любой жестяк.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2015, 10:41
Ответы с готовыми решениями:

Ссылка на член, не являющийся общим, должна быть ссылкой на объект
Подскажите пожалуйста, почему возникает такая ошибка в подобном коде: Public Class Form ...

Ссылка на член, не являющийся общим, должна быть ссылкой на объект при инициализации формы
Как это исправить? Из-за чего появляется это сообщение? Добавлено через 10 минут Подробности:...

Ошибка со stage "Не удается вызвать свойство или метод со ссылкой на объект "null"
as файл package { import flash.display.*; import flash.events.*; public class...

Как объявить массив данных? Ошибка "Ссылка на объект не указывает на экземпляр объекта"
допустим, есть массив из строки string_array string string_array; мне надо будет потом его...

Мини 3D игра. Ошибка "Сетки, содержащие канала весов вершин не могут быть обработаны без доступа к скелету данных"
Только одна ошибка: Ошибка 1 скелет, не найден. Сетки, содержащие канала весов вершин не могут...

19
Tormento
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 94
19.04.2015, 12:39  [ТС] 2
Что ни у кого нет идей как это исправить?
0
Иван Чолев
25 / 17 / 8
Регистрация: 25.01.2015
Сообщений: 48
20.04.2015, 08:29 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Tormento,

замени
vb.net
1
       Dim DS As String = Application.StartupPath & "\Base.accdb"
на
vb.net
1
       Dim DS As String = System.Windows.Forms.Application.StartupPath & "\Base.accdb"
И все будет работать.
0
Tormento
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 94
02.11.2015, 22:00  [ТС] 4
А если нужно из раскрывающегося списка TextBox1 выбрать базу которую хочешь использовать?

vb.net
1
Dim DS As String = System.Windows.Forms.Application.StartupPath & "" & TextBox1.Text & ".accdb"
выдает ошибку хотя на форме есть TextBox1 с именем базы
0
Yury Komar
Модератор
Эксперт .NET
2957 / 2682 / 431
Регистрация: 27.01.2014
Сообщений: 4,952
03.11.2015, 05:55 5
Tormento, какую ошибку выдает?
0
Иван Чолев
25 / 17 / 8
Регистрация: 25.01.2015
Сообщений: 48
03.11.2015, 10:15 6
Ну если в текст боксе только имя
то
vb.net
1
Dim DS As String = System.Windows.Forms.Application.StartupPath & "" & TextBox1.Text & ".accdb"
должно быт
vb.net
1
Dim DS As String = System.Windows.Forms.Application.StartupPath & "\" & TextBox1.Text & ".accdb"
0
Yury Komar
Модератор
Эксперт .NET
2957 / 2682 / 431
Регистрация: 27.01.2014
Сообщений: 4,952
03.11.2015, 15:12 7
Лучще использовать IO.Path.Combine()
0
Tormento
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 94
03.11.2015, 17:56  [ТС] 8
так я так и пишу
Dim DS As String = System.Windows.Forms.Application.StartupPath & "" & TextBox1.Text & ".accdb"
"" с этой страницы почему то исчезла в коде она есть.
0
_Лёша_
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
03.11.2015, 18:12 9
А без DS?
vb.net
1
Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\Base.accdb;")
0
Tormento
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 94
03.11.2015, 18:27  [ТС] 10
Когда одна база указываем к ней путь - все работает.

vb.net
1
2
3
4
5
6
7
Public Class Form1
Dim DS As String = Application.StartupPath & "\Base\База.accdb"
Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + DS)
Dim SqlCom As OleDb.OleDbCommand ' Переменная для Sql запросов
 
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
....
Когда нужно выбирать базу из раскрывающегося списка пишу (но выдается ошибка)

vb.net
1
2
3
4
5
6
7
Public Class Form1
Dim DS As String = Application.StartupPath & "\Base" & TextBox1.Text & ".accdb"
Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + DS)
Dim SqlCom As OleDb.OleDbCommand ' Переменная для Sql запросов
 
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
....
Что не так ?
0
_Лёша_
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
03.11.2015, 18:29 11
Это если меняешь базу с одной на др в процессе работы? Если так, то новый экземпляр OleDb.OleDbConnection нужно создать.
0
Tormento
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 94
03.11.2015, 18:43  [ТС] 12
опять наклонная черта не отображается тут на странице перед TextBox1.Text....

Добавлено через 12 минут
Так я второй строкой беру имя базы из текстбокса при загрузке формы
а 3-й строкой подключаю эту базу.

Ошибка: Исключение типа "System.NullReferenceException" возникло в xxxxx.exe, но не было обработано в коде пользователя
Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.
0
_Лёша_
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
03.11.2015, 18:47 13
vb.net
1
Dim SqlCom As new OleDb.OleDbCommand
?
0
Tormento
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 94
03.11.2015, 18:56  [ТС] 14
может ошибка из-за того, что этот код в самом начале программы и она пытается открыть базу имя которой в текстбоксе появляется после загрузки формы ?

Добавлено через 2 минуты
вроде как "Ссылка на объект не указывает на экземпляр объекта" это не может найти базу с именем которое до загрузки формы определяется как "" ? или нет?
0
_Лёша_
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
03.11.2015, 19:01 15
дай проект а?
0
Tormento
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 94
03.11.2015, 19:09  [ТС] 16
Если так, то все работает. Загружается сначала база из раздела Public Class Form1, а затем перезагружается вместо нее база указанная в TextBox1.
Если удалить записи из раздела Public Class Form1 и оставить в Private Sub Form1_Load тоже выдаст ошибку...
Я так понимаю все равно придтся сначала загружать пустышку, а потом нужную базу из текстбокса...

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Class Form1
 
Dim DS As String = Application.StartupPath & "\Base\База.accdb"
Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + DS)
Dim SqlCom As OleDb.OleDbCommand ' Переменная для Sql запросов
 
 
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
Dim DS As String = Application.StartupPath & "\Base" & TextBox1.Text & ".accdb"
Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + DS)
Dim SqlCom As OleDb.OleDbCommand
 
...
0
_Лёша_
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
03.11.2015, 19:39 17
Да как оно может работать то? у вас переменные по 2 раза объявлены!
0
Tormento
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 94
03.11.2015, 20:22  [ТС] 18
ВСЕ РАБОТАЕТ ПРОВЕРИЛ.
первая переменная на уровне формы, а вторая внутри формы
Грузится база с автозапуска, а потом по нажатию кнопки база с именем из раскрывающегося списка.
это мне и надо было. На первую загрузку повесил пустышку.
0
_Лёша_
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
03.11.2015, 20:25 19
переменная внутри "формы" имеет видимость и внутри процедуры.
0
Tormento
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 94
03.11.2015, 20:56  [ТС] 20
Спасибо за помощь.
0
03.11.2015, 20:56
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2015, 20:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка "Ссылка на объект не указывает на экземпляр объект" в программе
Здравствуйте ! Ссылка на объект не указывает на экземпляр объекта. Примерно понимаю в чём ошибка,...

Ошибка "Точка входа должна быть определена"
Задание Для динамической структуры данных разработать класс, предусмотрев в нем конструкторы...

База данных "Лесное хозяйство" - какова должна быть структура таблиц
Доброго времени суток. Может кто-то делал БД "Лесное хозяйство", можете сказать какие должны быть...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.