Проблема как я и думал вот в чём:
есть такое понятие как текущая папка.
Если мы например пытаемся открыть файл "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, опередил