powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / переключение между базами
11 сообщений из 11, страница 1 из 1
переключение между базами
    #35938493
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как можно реализовать переключение между различными .dbc, при условии что все файлы имеют одинаковые названия и структуру (отличаются только данными в dbf)?
...
Рейтинг: 0 / 0
переключение между базами
    #35938712
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
CLOSE DATABASES ALL
OPEN DATABASE "C:\MyDir\MyBase"
SET DATABASE TO MyBase
...
Рейтинг: 0 / 0
переключение между базами
    #35938766
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовала сделать так как вы написали, база подключилась, но выводится ошибка при загрузке формы, насколько я понимаю из-за dataenvironment.
Пишет что не находит одну из dbf но путь указывает тот что стоял вначале по умолчанию...
Что можно сделать?
...
Рейтинг: 0 / 0
переключение между базами
    #35938786
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та таблица, которую не находит включена в контейнер базы данных? Или это свободная таблица?
...
Рейтинг: 0 / 0
переключение между базами
    #35939053
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, таблица включена в контейнер.
...
Рейтинг: 0 / 0
переключение между базами
    #35939157
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При разработке фокс запоминает путь к БД и фри-таблицам.
при открытии БД поиск идет :
1. по путям запомненным в DE или в текущем каталоге( тут последовательность не помню точно)
2. set path
вот такая вот фигня

чтобы брались пути из set path - нужно эти самые пути в DE "обрезать" - оставить только имена
когда работал с дбф , пользовался такой штукой -

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Function no_patch(nObj)

Private	aCursors
Local sDb,sCs,sp

Amembers( aCursors , nObj,  2  )
For i =  1  To Alen( aCursors ,  1  )
	If At( "CURSOR" , Upper( aCursors(i) ) ) >  0 
		sDb = aCursors(i) + '.Database'
		sCs = aCursors(i) + '.CursorSource'
		nObj.&sDb = Justfname( nObj.&sDb )
		nObj.&sCs = Justfname( nObj.&sCs )
	Endif
Endfor

Return .T.
вызов поместить в BeforOpenTable DE
Код: plaintext
no_patch(this)
...
Рейтинг: 0 / 0
переключение между базами
    #35943558
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все равно ошибка та же
...
Рейтинг: 0 / 0
переключение между базами
    #35943601
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В DataEnvironment запоминается только относительный путь к контейнеру базы данных. Относительно директории по умолчанию, которая была на момент создания файла формы.

Путь доступа к таблицам, включенным в контейнер базы данных вообще не сохраняется. Ни в каком виде. Сохраняется даже не имя таблицы, а некий псевдоним таблицы, используемый внутри контейнера базы данных. Как правило, он совпадает с именем файла DBF.

Поэтому, во-первых, прямое программное изменение пути доступа нужно только в том случае, если предполагается одновременная работа с разными базами. Если этого нет, то достаточно изменить настройки SET PATH и явно переоткрыть контейнер базы данных.

Переоткрытие должно быть выполнено ДО открытия формы. Ну, или в событии LOAD-формы

Во-вторых, если программа начинает поиск таблицы по некоему пути доступа, то это означает две вещи

1. Этой таблицы нет в открытой базе данных
2. Эта таблица является свободной, поскольку только в этом случае сохраняется путь доступа

Проверьте свойства всех курсоров, указанных в DataEnvironment на предмет того, что указано в их свойстве DataBase.

Проверьте код формы на предмет явной подачи команды USE в одном из методов или событий.
...
Рейтинг: 0 / 0
переключение между базами
    #35944280
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В событии DataEnvironment.BeforeOpenTables напишите такой код
Код: plaintext
1.
2.
3.
4.
5.
6.
Local lcDataBase

lcDataBase = "C:\New_DB\data1.dbc" && путь до новой БД

Open database (lcDataBase) Shared

ThisForm.SetAll('DataBase', lcDataBase, 'Cursor')
...
Рейтинг: 0 / 0
переключение между базами
    #35945039
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня наконец-то получилось отрывать разные базы, но сейчас при внесении каких либо изменений они не сохраняются. Т.е. у меня на форме данные в грид берутся из localview, и получается так, что данные я вижу именно той базы которая нужна, а сохраняются они у меня в таблицы которые находятся по тому пути где была первая база (ну до того как я начала подключать другие .dbc). Подскажите как это так?
...
Рейтинг: 0 / 0
переключение между базами
    #35945056
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, все нормально, плохо глянула.
СПАСИБО ВСЕМ ОГРОМНОЕ!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / переключение между базами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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