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

После развертывания проекта с БД Access программа не находит базу

22.06.2012, 22:29. Показов 2061. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
У меня возникла следующая проблема.
Есть проект, написанный на Visual Studio 2010, который работает с базой данных Access. Нормально и адекватно. Затем я сворачиваю его с помощью Setup Wizard. При этом файлик с базой данных (db1.mdb) попадает в папку Bin\Release\. Обращение к базе в программном коде выглядит так:

VB.NET
1
2
       connection = New OleDb.OleDbConnection
       connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb"
Делаю второй проект на Visual Studio 2010, который инсталлирует первый и запускает его. Программный код такой:

VB.NET
1
2
3
4
5
6
7
8
        Dim msi As Object
        Dim Cmd As String
        Cmd = "TARGETDIR = " + Chr(34) + ТекПуть + Chr(34)
        msi = CreateObject("WindowsInstaller.Installer")
        msi.UILevel = 2 
        msi.InstallProduct(ТекПуть + "Setup.msi", "")
        p.StartInfo.FileName = "Setup.exe"
        p.Start()
Проект устанавливается и запускается. Но пишется сообщение о том, что неверно указано имя файла с базой данных.
Не понимаю, где накосячил.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2012, 22:29
Ответы с готовыми решениями:

Подключение БД: при перемещении mdb-файла вместе с exe-файлом программа не находит базу данных
Помогите решить проблему. Выполнил подключение к БД, но при перемещении файла "Библиотека.mdb"...

Необходимо вывести за пределы проекта базы access чтобы получить к ним доступ с другого проекта, того же access.
Привет All Необходимо вывести за пределы проекта базы access чтобы получить к ним доступ с другого...

Программа после перезапуска не находит файл
Здравствуйте. Пишу под Андройд, в данной задаче, необходимо элементарно записать число в файл, а...

Проблемы с компиляцией проекта после удаления поля в БД Access
Удалил в одной из таблиц базы данных в Access'е поле. Начались проблемы. Удалил это поле из...

7
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
23.06.2012, 09:41 2
Артур179, а что у тебя в "ТекПуть" указано?
0
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 5
23.06.2012, 18:54  [ТС] 3
Сначала указал просто "db1.mdb", но это работало, когда тестировал отдельно работу проекта.
Потом указал тот каталог, в который в итоге устанавливается проект программно. Но тоже не срабатывает.

Добавлено через 28 минут
Я вообще запутался: как правильно свернуть проект, который взаимодействует с БД Access? Смотрю сейчас свойства Applcation Folder, там в Release указана моя БД, причем с тем путем, который был на момент тестирования, т.е. тот путь, который я выбирал в самом начале работы в Data source. Может, с самого начала я сделал абсолютно все неверно? Неверно подцепил базу? Неверно создал файл msi?
0
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
25.06.2012, 13:55 4
VB.NET
1
connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & application.StartupPath & "\db1.mdb"
оно?
0
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 5
25.06.2012, 16:30  [ТС] 5
_Лёша_, спасибо, это почти оно. Короче, это прекрасно работает, когда отдельно тестирую проект.
А вот когда тестирую вызов одного проекта из другого, он пишет вот что:

Строка
"С:\ПРОЕКТ1\bin\Release\C:\ПРОЕКТ2\db1.mdb" задает ошибочный путь.

ПРОЕКТ2 - это та папка, в которую программно устанавливается проект, связанный с БД.
ПРОЕКТ1 - это та папка, в которую установливается главный проект, запускающий затем проект ПРОЕКТ2 на установку и выполнение.

Никак не могу понять принцип работы. Мне нужно, чтобы первый проект, запустил второй и дальше, чтобы второй нормально выполнялся, делал операции с БД и т.д., а первый проект вообще уже и не нужен после этого по идее. ПОЧЕМУ студия ищет базу данных в bin\release первого проекта да еще так дебильно?

Я так понял, что Appilcation.StartPath для второго проекта и есть \C:\ПРОЕКТ2\. Но зачем первый проект ищет этот путь у себя в bin\release?
0
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
25.06.2012, 16:36 6
В задании пути где-то ошибка С:\ПРОЕКТ1\bin\Release\ не должно быть, смотри внимательнее.
0
1 / 1 / 0
Регистрация: 24.06.2012
Сообщений: 36
25.06.2012, 16:39 7
скорее всего простая детская ошибка из-за спешки
0
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
25.06.2012, 16:52 8
сам бы проект глянуть, а лучше все 2.
0
25.06.2012, 16:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2012, 16:52
Помогаю со студенческими работами здесь

Обновить данные в комбобоксе после добавления в базу данных Access
Доброе время суток. При составлении формы столкнулся с такой проблемой. Нужно добавить новые...

ArgumentNullException после развертывания сайта на WebForms
Доброго времени суток. При запуске на локальном сервере все отрабатывает без ошибок. Когда залил...

Ошибка 500.19 после развёртывания веб-публикацией
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> ...

Нет доступа к БД после развертывания WCF сервиса
Доброго времени! Работаю на VS Express 2013. Есть простой проект на Silverlight со службой WCF...

После публикации приложения и установки на другой пк программа не видит базу данных
После публикации приложения и установки на другой пк программа не видит базу данных Access, при чем...

WCF RIA приложение не работает после развертывания на локальном IIS
Помогите! Не могу найти причину. Сроки все вышли... 1. Развернула wcf ria приложение на локальном ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru