База данный на Access. В проге все данные есть. А если просто открыть базу, то он ПУСТОЙ

knocking
Дата: 12.06.2009 23:24:49
Здравствуйте уважаемые гуру.
Прога на делфи, база на Access. Состоит из одного екзешника и .mdb-шника. При открытии проги открывается база, там 15 таблиц. При инсталяции проги создается папка туда эти 2 файла помещаются. Открываю базу используя ExtractFilePath(Application.ExeName)+'database.mdb'. Т.е. куда бы прогу не установили, то всегда базу можно найти используя Application.ExeName. Клиент установил прогу, появились вопросы, я его попросил прислать базу database.mdb. Он присылает, но она ПУСТАЯ. Когда он открывает прогу, там есть все данные которые он вбил, а база ПУСТАЯ.

Делал следующее:
1. Просил его поиском найти на всем компьютере все файлы *.mdb. Нашелся только один файл database.mdb.
2. Попросил его переименовать файл database.mdb и запустить прогу. Она даже не ругается, что не может найти базу и нормально отображает все данные. Хотя если я у себя переименую базу, то ругается.
3. Просил его переместить эту базу в любое место. Опять прога нормально открывается и отображает все данные.

Т.е. если даже удалить базу, то прога все равно подцепляется к какой-то базе и нормально работает. Что за ерунда. Может кто подскажет как можно найти эту базу с которой прога работает. Причем заметил такую вещь пустая база и полная весят ОДИНАКОВО. Что за бред? Спасибо.
knocking
Дата: 13.06.2009 01:17:33
Уважаемые, подскажите в чем дело.
Могу добавить, что у клиента не установлен аксес. Винда виста. Но ведь драйвер Microsoft.Jet.OLEDB.4.0 установливается с виндой автоматически начиная с 2000 винды. Может если аксес не устанолен, то делается какая-то копия и хранится она где-нибудь в темпиках. Вообще бред какой-то. Третий день не могу решить проблему. ПОЧЕМУ БАЗА ПУСТАЯ когда ее открываешь вручную? А когда запускаешь прогу, то данные есть.
Anatoly Podgoretsky
Дата: 13.06.2009 02:23:39
Смею предположить, что у клиента Виста и только дурак, в этом случае пытается писать в папку с программой.

--
http://www.podgoretsky.com
knocking
Дата: 13.06.2009 02:48:32
Anatoly Podgoretsky
Смею предположить, что у клиента Виста и только дурак, в этом случае пытается писать в папку с программой.

--
http://www.podgoretsky.com



Анатолий, а можно поподробнее?! Да точно, у него Виста, а почему в этом случае нельзя писать в папку с программой, и куда тогда надо писать? (в смысле база должна лежать не в программФайлс, а где нибудь на диске Д ?)
knocking
Дата: 13.06.2009 02:55:40
Anatoly Podgoretsky, т.е. нужно либо прогу устанавливать не в программафайлс, либо базу хранить не в программфайлс. И главный вопрос как мне базу его получить, где она может лежать? Куда ее виста дела? Спасибо.
A grumbler
Дата: 13.06.2009 07:09:37
Почитайте документацию по UAC - User Account Control
Anatoly Podgoretsky
Дата: 13.06.2009 10:34:19
Программу можно и нужно устанавливать в Program Files только снабжить соответствующим манифестом для Висты, а вот все файлы, куда будет запись в профиль пользователя в Application Data/Local Settings или в крайнем случае (не желательно) в другую папку. Все зависит от условий.
Это у тебя срабатывает виртуализация из-за неверно написаной программы.

Аналогично и для ХР, там тоже запрещена запись для определеной категории пользователей.

А где лежит база, да очень просто пиши или в реестр или в ИНИ файл, только в соответстии с вышеуказаными требованиями, в реестр только в HKCU

Можешь почитать здесь о правилах работы с Вистой

Guide

--
http://www.podgoretsky.com
Anatoly Podgoretsky
Дата: 13.06.2009 10:38:09
knocking
И главный вопрос как мне базу его получить, где она может лежать? Куда ее виста дела?

Лежит она в профиле, в зеркальных папках \Users\....\Program Files\....

Кстати для инсталяции требуется сертифицированый довереный инсталятор, а то ручная инсталяция или не довереным инсталятором приведет к тем же последствиям.
knocking
Дата: 13.06.2009 13:25:35
Большое спасибо. Сейчас буду разбираться.
knocking
Дата: 13.06.2009 14:35:00
Уважаемые, а может проще устанавливать прогу на в корень любого диска, типа C:\ИмяПроги. Тогда и екзешник и база будут в одном месте. Чем плох такой вариант? Спасибо.