powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Путь к БД через форму
13 сообщений из 13, страница 1 из 1
Путь к БД через форму
    #36490418
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста:
при запуске приложения отображается окно с указанием пути к БД. Путь сохраняется в текстовом файле по нажатию кнопки ОК. Этот же путь записывается в глобальную переменную в стартовом файле и идет открытие базы данных по указанному пути. База открывается нормально, но при открытии любой формы (таблицы находятся в DE формы) пишет ошибку создания экземпляра курсора по пути, где таблицы находились ранее, во время разработки. Вопрос: что сделано не так и что сделать, чтобы было так как надо. Указывать путь через config.fpw - тогда непонятно как его перезаписывать при изменении пути к БД через форму. Посоветуйте пожалуйста))
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36490434
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36490462
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вроде бы внимательно прочитала уже не раз Советы начинающим)). Все сделано практически так, кроме пути к БД. Еще раз: путь к БД указывается интерактивно, при запуске приложения. Т.е. нет возможности прописать его в config.fpw, ну или объясните мне бестолковой поподробнее))
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36490498
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. После выбора пути доступа к базе данных необходимо открыть эту базу данных

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
* Выбор директории, в которой находится DBC
lcPathBase = getDir()

* Формирую полный путь доступа до DBC
lcNameBase = AddBS(lcPathBase) + "MyBase.DBC"

* Открываю базу данных
OPEN DATABASE (m.lcNameBase) SHARED

* И делаю ее текущей базой
SET DATABASE TO MyBase

И не закрывать ее до окончания работы приложения

2. Желательно включить выбранный путь доступа до базы данных в настройку SET PATH

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
LOCAL lcOldPath, lcNewPath
lcOldPath = SET('PATH')
IF EMPTY(m.lcOldPath)
	lcNewPath = m.lcPathBase 
ELSE
	lcNewPath = m.lcOldPath + ";" + m.lcPathBase 
ENDIF
SET PATH TO (m.lcNewPath)

3. Только после выполнения первых двух пунктов можно запускать формы для работы с таблицами
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36490553
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое)). Не был установлен путь к каталогу по set path to. Спасибо еще раз))
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36490698
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, а еще вопрос можно? Добавила установку set path to, все ок в том случае когда база одна по указанному пути. Но если есть аналогичная база в каталоге где в момент разработки была база, то таблицы открываются именно оттуда. Т.е. на примере:
Есть папка C:\Project\DATA\, в которой находится БД tarif_db.dbc, и например С:\DATA\, в которой находится аналогичная БД но с другими данными. Так вот при указании пути к С:\DATA\tarif_db.dbc все вроде бы нормально, проверяю текущую БД-та, что нужно. Но когда открываю любую форму - данные отображаются из другой базы (C:\Project\DATA\tarif_db.dbc). Надеюсь, понятно описала))
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36490774
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На момент открытия формы что возвращают

Код: plaintext
1.
2.
3.
?DBC()  && путь к файл DBC
?Fullpath("")  && Один из вариантов определения текущей директории
?SET('PATH')

Там нет путей доступа к директории проекта?

Если речь идет об отладке, то желательно копировать EXE в другую директорию. И запускать его там. В этой самой "другой" директории. Причем из проводника (или через ярлык), а не из среды FoxPro. Запуск из директории проекта, скорее всего, приведет к подхватыванию отладочной базы.

Если, тем не менее, хотите запускать из директории проекта в процессе отладки, то придется динамически менять пути доступа в DataEnvironment формы. Как это сделать описано здесь

http://www.hot.ee/jurisfox/vfp60/de_02_ru.htm
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36490807
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?DBC() - путь верный, к той базе, к которой и требуется
?Fullpath("") - как раз к папке с отладочной базой, а не той что нужно
?SET('PATH') - путь верный

Т.е. я так понимаю при установке на другую машину, непосредственно дистрибутива готового - проблем с базой возникнуть не должно? Даже если одна база будет лежать в папке рядом с готовым ехе-шником, а другая - где то в сети?
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36490827
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовала скопировать только ехешник и базу на другой диск - проблема осталась.
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36491096
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zitz?Fullpath("") - как раз к папке с отладочной базой, а не той что нужно

Вот в этом-то и проблема. Текущей (рабочей) директорией является директория с отладочной базой. Там и происходит поиск

ZitzТ.е. я так понимаю при установке на другую машину, непосредственно дистрибутива готового - проблем с базой возникнуть не должно? Даже если одна база будет лежать в папке рядом с готовым ехе-шником, а другая - где то в сети?
Не так. Проблем не будет, если по тем путям, по которым FoxPro осуществляет поиск файлов не будет лежать одноименных таблиц. Таблиц с одним и тем же именем, но в разных директориях. Причем именно в тех, где FoxPro осуществляет поиск. А поиск осуществляется по следующим путям:

- В директории, сохраненной в DataEnvironment при проектировании формы (Там сохранен относительный путь. Относительно текущей директории)
- В текущей (рабочей) директории
- По путям указанным в SET PATH

Я же специально обратил внимание на то, что Вам надо сделать:

- Создать отдельную папку на диске (имя диска роли не играет, важно, чтобы это не была вложенная папка Вашего отладочного проекта)
- Скопировать туда готовый EXE
- Запустить этот EXE из проводника Windows

Смысл этих действий как раз в том и заключается, чтобы изменить текущую директорию. Сделать ее отличной от той, где Вы разрабатывали свой проект. Разумеется, если в программном коде Вы явно не возвращаетесь в нее командами вроде

SET DEFAULT
CD

=============================

Другими словами, на "голой" машине пользователя, где просто нет отладочной базы, никаких проблем не возникнет. Все эти "танцы с бубном" нужны только на Вашей отладочной машине, где есть копия базы данных. Необходимо чтобы по всем возможным путям поиска файлов FoxPro не было файлов с одинаковыми именами.
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36491557
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я собственно сразу и проделала те действия, которые Вы порекомендовали. Может я неправильно пояснила. Я попыталась смоделировать ситуацию, когда на машине клиента будет папка с ехешником и в ней же будет папка с базой. А потом клиент захочет подключиться к другой базе, находящейся в другом месте, неважно где. Так вот получается вне зависимости от того куда я указываю путь, подключение пойдет к базе, находящейся в папке с ехе-файлом. Ну по крайней мере, цитирую :
"Я же специально обратил внимание на то, что Вам надо сделать:

- Создать отдельную папку на диске (имя диска роли не играет, важно, чтобы это не была вложенная папка Вашего отладочного проекта)
- Скопировать туда готовый EXE
- Запустить этот EXE из проводника Windows" - вот после этих действий - все нормально, открываются данные базы той, которой нужно. Но стоит только скопировать аналогичную базу в папку с ехешником, и сразу данные в формах выводятся именно из нее.
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36491599
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zitz, разумеется, так и будет. Владимир Максимов уже дал ответ на Ваш вопрос, остается только цитировать: "- В директории, сохраненной в DataEnvironment при проектировании формы (Там сохранен относительный путь. Относительно текущей директории)". Если каталог существует и содержит таблицы, указанные в DataEnvironment форм, SET PATH игнорируется. Переименуйте папку.
...
Рейтинг: 0 / 0
Путь к БД через форму
    #36491644
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, спасибо большое всем, поняла)).
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Путь к БД через форму
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]