Проблема с базой данных

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Naya
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 04.06.2006 (Вс) 2:06

Проблема с базой данных

Сообщение Naya » 04.06.2006 (Вс) 2:23

Здравствуйте!
Возникла проблема с базой данных. База на Access-е. Если делать сразу экзешник - все работает, если запускать для отладки через run - говорит, что не может найти базу. Хотя база точно есть.
Пишет "couldn't find file 'db1.mdb' - MSDN на это говорит "Error 524" и больше ничего.

При этом у другого человека все работает.
У меня же не работает ни на компе, ни на ноуте.
В инете поиск выдал несколько страниц, где подобная ошибка связана с работой ODBC, но как конкретно исправить непонятно.

Не подскажите, в чем может быть проблема?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 04.06.2006 (Вс) 2:54

А можно узнать, ккаким методом открывается проект
Прямо из папки, в которой он лежит, двойным щелчком по файлу или
Сначала запускается отдкльно VB6, потом File...Open Project и тд
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Naya
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 04.06.2006 (Вс) 2:06

Сообщение Naya » 04.06.2006 (Вс) 3:24

Хакер
Ага. Если открыть первым способом - все работает.
Я так понимаю, там проблема была во временных файлах?
И спасибо большое! А то проект скоро сдавать, а тут такая дурацкая проблема.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.06.2006 (Вс) 3:41

Проблема была в рабочем каталоге по умолчанию.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 04.06.2006 (Вс) 3:41

Проблема как я и думал вот в чём:
есть такое понятие как текущая папка.

Если мы например пытаемся открыть файл "somedata.txt"

Код: Выделить всё
Open "somadata.txt" For Input As #1


мы не указываем полный путь к файлу и VB будет искать его в текущей папке. При запуске EXE'шника текущей папкой всегда (ну почти всегда) назначается папка, в из-которой запущен EXE'ник. Когда ты запускаешь проект первым способом - эта текущая папка устанавливается в ту папку, из-который ьыл произведён запуск файла VB6.EXE .

Т.е. если есть проект Project1

Код: Выделить всё
Файл проекта: D:\Разработки\Proga1\Project1.vbp

Visual Basic: C:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE

Если мы кликаем по нему прямо из папки, то VB запускается с этой текущей папкой. Если же мы сначала запустим VB - текущей папкой будет C:\Program Files\Microsoft Visual Studio\VB98\

После того как мы откроем проект через меню, текущая папка меняться не будет - так уж устроен VB IDE.

Однако текущую папку можно легко менять средствами VB.
Для этого есть две функции ChDir и ChDrive. А также чтобы узнать, какой в данный момент "текущий путь" есть функция CurDir.

Вот лёгкий пример, поясняющий работу этих функций:
Код: Выделить всё
MsgBox "Сначала текущая папка была :" + CurDir
ChDrive "D:\"
ChDir "D:\Music\MP3"
MsgBox "Теперь текущая папка стала :" + CurDir


Если скомпилировать этот пример и положить ЕХЕ,шник прямо в корень диска C:\

мы увидем 2 сообщенния
Сначала текущая папка была: C:\
Теперь текущая папка стала: D:\Music\MP3\

Так что вот так (С) Я

Ну а чтобы текущая папка была всегда имеено той, в которой лежит ЕХЕ и проект, нужно при старте программы выполнять вот этот код:

Код: Выделить всё
ChDrive Left(App.Path, 3)
ChDir App.Path


теперь такой ошибка не должно быть по любому...

А вообще мой совет - использовать абсолютный путь к БД, т.е. например
C:\Mamama\Dudud\Proga1\db1.mdb

Для этого нужно вместо
Код: Выделить всё
"db1.mdb"

писать везде
Код: Выделить всё
App.Path + IIf(Right(App.Path,1)="\", "", "\" ) + "db1.mdb"


вот так :)

_____________________
Добавлено: GSerg, опередил :cry:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 04.06.2006 (Вс) 10:47

Хакер писал(а):_____________________
Добавлено: GSerg, опередил :cry:
Еще бы, так мелко разжевывать :wink:
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 04.06.2006 (Вс) 11:18

Дак должен же человек понять. А кто ему объяснит кроме как я (хелп не рассматривается)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 04.06.2006 (Вс) 11:19

To Хакер
Надо было сначала "зарезервировать" сообщение, а потом его редактировать :D
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 04.06.2006 (Вс) 11:23

А всё равно постить будут. Только уже поверх. Вот например вот тут
http://bbs.vbstreets.ru/viewtopic.php?t=25956
я так и сделал. Но так ведь напостили...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 62

    TopList