powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / пути к базе данных
25 сообщений из 92, страница 3 из 4
пути к базе данных
    #37411372
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNGА зачем они в DE? Да еще, наверняка с AutoOpen. Нужно делать все руками - закрывать и открывать. Тогда и весь процесс будет под контролем.
Это один из главных аргументов против использования DE. Именно желание всегда и все контролировать. Для большинства задач в этом нет никакой необходимости. Хотя, конечно, есть исключения.

Именно по причине желания все контролировать в данном случае и "огребли" кучу проблем. Я настойчиво твержу, что SET PATH в коде использовать НЕ НАДО, тем не менее, этот совет игнорируется и по прежнему лепят проблему на проблеме. Ну, успехов в борьбе с глюками...

IgorNG Я точно не помню, но по-моему, если БД запихиваешь в DE, которая лежит в определенном месте, так в этом месте и будет пытаться открыть ее.
Если таблица включена в контейнер базы данных, то пути доступа к таблицам прописаны в собственно контейнере базы данных. И открываются после открытия этого самого контейнера.

Если "вскрыть" файл формы с DE, то в свойствах курсора будет написано нечто вроде

Код: plaintext
1.
2.
3.
4.
Alias = "table1"
Database = data1.dbc
CursorSource = "table1"
Name = "Cursor1"

Т.е. ссылка только и исключительно через DBC. Как следствие, если контейнер открыт и сделан текущим в начале приложения, то именно его таблицы и будут открываться при открытии форм с DE.
...
Рейтинг: 0 / 0
пути к базе данных
    #37411402
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМIgorNGА зачем они в DE? Да еще, наверняка с AutoOpen. Нужно делать все руками - закрывать и открывать. Тогда и весь процесс будет под контролем.
Это один из главных аргументов против использования DE. Именно желание всегда и все контролировать. Для большинства задач в этом нет никакой необходимости. Хотя, конечно, есть исключения.

Именно по причине желания все контролировать в данном случае и "огребли" кучу проблем. Я настойчиво твержу, что SET PATH в коде использовать НЕ НАДО, тем не менее, этот совет игнорируется и по прежнему лепят проблему на проблеме. Ну, успехов в борьбе с глюками...

IgorNG Я точно не помню, но по-моему, если БД запихиваешь в DE, которая лежит в определенном месте, так в этом месте и будет пытаться открыть ее.
Если таблица включена в контейнер базы данных, то пути доступа к таблицам прописаны в собственно контейнере базы данных. И открываются после открытия этого самого контейнера.

Если "вскрыть" файл формы с DE, то в свойствах курсора будет написано нечто вроде

Код: plaintext
1.
2.
3.
4.
Alias = "table1"
Database = data1.dbc
CursorSource = "table1"
Name = "Cursor1"

Т.е. ссылка только и исключительно через DBC. Как следствие, если контейнер открыт и сделан текущим в начале приложения, то именно его таблицы и будут открываться при открытии форм с DE.

Давно не пользовался DE, вот и забыл. Кстати, и Wizardфми тоже не пользуюсь - только на первом этапе знакомства с Visual FoxPro
...
Рейтинг: 0 / 0
пути к базе данных
    #37411777
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В коде удалил “PATH”. Только в файле config.fpw прописаны пути к директориям.

Компиляция бес ошибок.

Запуск задачи:
Сопровождение ИК → Отметка о выполнении = должна открыться форма, Но в место этого Ошибка.

Проект изначально создавался через Проект Менеджер, со всеми директориями.
Я “жестоко” перенес директорию DATA и создал на диск D:\.

Формы создавались “New Form” ? открывался DE добавлялись таблицы, представления и просто курсоры (на форме создавались компоненты а за частую просто перетаскивались из DE).

В файлах с DE прописано

SET DELETED ON

DODEFAULT()

SELECT AUTOR

CREATE CURSOR

НО ни где не прописано открытие БД, открытие ТАБЛИЦ.
...
Рейтинг: 0 / 0
пути к базе данных
    #37411783
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СОРИ не та картинка
...
Рейтинг: 0 / 0
пути к базе данных
    #37411812
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

из картинки ничего не понятно
...
Рейтинг: 0 / 0
пути к базе данных
    #37411841
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первая картинка ЭТО какая ошибка вылетает

Вторая картинка Какое приложение запускаю(Типа: ФАЙЛ→Сахронить как → Вылетает форма)
...
Рейтинг: 0 / 0
пути к базе данных
    #37411932
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Провел эксперимент:
1. Создал FORM
2. Добавил в DE таблицу, из БД.
(БД -- находится на диске D:\DATABASE\DATA)
3. Перетащил БД на FORM
4. Ни чего не прописывал, ни на FORM ни в DE
5. Добавил FORM в меню
6. С компилировал проект
7. Запустил вуаля – работает (но только эта форма!?)

К стати в VFP для что бы редактировать форму нужно копировать директорию DATA в папку с проектом, а иначе ОШИБКА «БД не существует» Хотя в Project Manager БД добавлена. Мало того что добавлена да и еще и открыта (можно просматривать таблицы). А мною созданную форму можно редактировать.
...
Рейтинг: 0 / 0
пути к базе данных
    #37411964
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

так вот что не заниматься копирование папок, я и говорил, что нужно обходиться без DE, а открывать все что нужно ручками

OPEN DATABASE .....
USE <Table> IN 0 SHARED ALIAS ...
и .д.

Весь процесс под контролем. А когда БД в DE, а потом перетащил папку с базой в другое место и все - ошибка.
...
Рейтинг: 0 / 0
пути к базе данных
    #37411992
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А VFP где ни будь запоминает откуда я в DE добавлял таблицы?

Я еще думал что то что я перетаскиваю в DE можно настроить.

А если я буду прописывать

OPEN DATABASE .....
USE <Table> IN 0 SHARED ALIAS ...

в ручную, то что тогда config.fpw не нужен? или нужен?

И OPEN DATABASE ..... и USE <Table> IN 0 SHARED ALIAS ... прописывать путь полностью?
...
Рейтинг: 0 / 0
пути к базе данных
    #37412021
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

Когда добавляешь в DE выводится диалоговое окно, в котором укабываешь БД. Естественно, что запоминается именно эта база данных. Если открываешь ручками, а в DE ничего нет, то будет искаться по путям, прописанным в конфиге, о чем собственно тебе и говорят все уже который день.
...
Рейтинг: 0 / 0
пути к базе данных
    #37412094
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так получается, что в моем проекте нужно удалять таблицы из DE и в коде прописывать ручками пути?
...
Рейтинг: 0 / 0
пути к базе данных
    #37412105
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

Из DE удалять. Зачем пути прописывать ручками? Путь в конфиге укажешь.
...
Рейтинг: 0 / 0
пути к базе данных
    #37412154
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле не пути прописывать а открывать в начале!? и БД и Таблицы?
...
Рейтинг: 0 / 0
пути к базе данных
    #37412215
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ
Извините за повторение (чуть выше мы с Игорем осуждали этот вопрос)
Очень важно ваше мнение

Вы сказали:

Код: plaintext
1.
2.
Т.е. ссылка только и исключительно через DBC. Как следствие, если 
контейнер открыт и сделан текущим в начале приложения, то именно его 
таблицы и будут открываться при открытии форм с DE.

Так что делать с Проектом удалять таблицы из DE ?
...
Рейтинг: 0 / 0
пути к базе данных
    #37412266
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

Вообще-то DE в форме, а не в проекте. По-моему у вас путаница с понятиями. В проекте у вас БД
...
Рейтинг: 0 / 0
пути к базе данных
    #37412316
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сколько лет работаю с FoxPro, ни разу не возникали проблемы с путями. Вообще не понимаю, почему почти у всех начинающих они появляются.
...
Рейтинг: 0 / 0
пути к базе данных
    #37412353
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ffffffffffffffff,

Так у него бы все работало бы, если б не задумал базы в другое место кинуть.
...
Рейтинг: 0 / 0
пути к базе данных
    #37412361
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обычная ситуация.
...
Рейтинг: 0 / 0
пути к базе данных
    #37412405
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможны разные стратегии настройки путей доступа. Но если уж Вы выбрали какую-то из них, то ее и следует придерживаться. Вы же смешали в кучу несколько стратегий и в результате, получили "кашу". Та стратегия, про которую я говорю решается при выполнении следующих условий

1. Никакие явные (прописанные в коде) указания на файл не должны иметь путей доступа. Только и исключительно имя файла
2. Настроек SET PATH в коде быть не должно. Пути доступа прописываются исключительно в файле конфигурации
3. Нужны два файла конфигурации . Один для создания и отладки приложения, другой для готового EXE


Если Вы собираетесь придерживаться этой стратегии, то у Вас 2 проблемы

Проблема 1 . Вы включили указание на директорию где-то в своих настройках имени базы данных

this.cDataBase = "DATA\BDUASKI"

Вот именно это явное указание путей доступа и "ломало" весь алгоритм поиска. Естесственно, Вам пришлось "мудрить" и удалять ссылку на папку DATA из настроек SET PATH, чтобы при "сложении" с указанным путем получить нужную директорию. Необходимо сделать настройку БЕЗ указания пути доступа

this.cDataBase = "BDUASKI.dbc"

Проблема 2 . Судя по описанию, на этапе разработки Вы не используете файл конфигурации. Как следствие, при удалении настроек SET PATH из программы Вы вобще теряете все пути доступа и на этапе отладки приложение отказывалось работать.


Для справки :

DE запоминает только относительный путь доступа к контейнеру базы данных (к файлу DBC). Относительно той директории, которая была текущей на момент добавления таблицы в DE. Путь доступа непосредственно к таблицам там вообще не хранится. Это уже контейнер базы данных занимается поиском таблиц.

Именно поэтому, предварительное открытие только собственно контейнера базы данных в стартовой программе, как правило, снимает вопрос поиска таблиц вообще. Контейнер уже открыт и где какая таблица находится он сам знает.


PS: Отказ от использования DE и "ручное" открытие/закрытие таблиц, в подавляющем большинстве случаев объясняется исключительно личными предпочтениями программиста . Есть ситуации, когда это действительно оправдано. Но, в большинстве случаев вполне достаточно использовать DE.
...
Рейтинг: 0 / 0
пути к базе данных
    #37413159
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

Даже не знаю что и сказать. Сам не понял как это вышло, и наверное не пойму.

В начале я по всему коду искал

this.cDataBase = "DATA\BDUASKI"
this.cDataBase = "BDUASKI.dbc"

но не нашел и решил было написать что не нашел.

Но патом все эти формы, их открытие, коды, ODBC Driver, config.fpw меня достали и я удалил проект.
Проект был экспериментальным (оригинал хранился в другой дирректориии), в нем я создавал новые отчеты, формы. Потом из папки с скопировал оригинальный Проект. Удалил директорию с папкой DATA, прописал PATH в файле config.fpw. На этапе отладки приложения открывая форму он попросил указать папку с БД – я указал и форма открылась (в предыдущий рас он не просил открыть, он говорил что не нашел БД).
Потом скомпилировал проект, запустил и ПРОЕКТ РАБОТАЕТ.
...
Рейтинг: 0 / 0
пути к базе данных
    #37420681
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

Прога работает все вроде ничего, но есть проблемы с «локальным представлением».

После запуска приложения я выбираю какую ни будь задачу (просмотр отчета, просмотр карточки и тд.). Задача запускается, все показывает, (в задаче есть под пункты, при просмотре карточки можно нажать кнопку Далее отобразится отдел, Далее имя администратора Далее дата закрытия карточки) но если нажать кнопку Назад выбрать другую карточку, снова нажать кнопку Далее выскочит диалоговое окно «Откройте таблицу Whom.DBF» хотя «Whom» это не таблица а локальное представление.
...
Рейтинг: 0 / 0
пути к базе данных
    #37420715
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

Значит, оно закрывается в какой-то момент
...
Рейтинг: 0 / 0
пути к базе данных
    #37421067
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

Явное закрытие представлений, курсоров или таблиц нет.
В задаче участвуют два формы:
Сначала запускается первая форма. На этой форме есть три вкладки. Во второй вкладке используется Представление WHOMISP. Но можно перемещаться с первой на вторую вкладку на третью и обратно сколько угодно рас – работает.

Код программы используемый на второй вкладке, где используется представление WHOMISP:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT t1_al
SELECT naimp,fio_isp,fio_kur,dnei,dn_per,;
IIF(!ISNULL(whomisp.fio),ALLTRIM(whomisp.fio),SPACE( 30 )) as fio_komu,pointsod,doctitle,t1_al.regnumb,docname,t1_al.pointnumb, t1_al.d_fact;
 FROM t1_al LEFT JOIN whomisp ON (whomisp.regnumb)+'('+ALLTRIM(whomisp.pointnumb)+')'=ALLTRIM(regn);
 WHERE t1_al.fio_isp=t2_al.fio_isp;
 INTO CURSOR t4_al
На третей вкладке есть кнопка вызова Второй формы (просмотр дат карт), в нее передаются параметры из первой. Во Второй форме нет явного закрытия курсоров или таблиц.
После закрытия Второй формы, на третей вкладке Первой формы можно выбрать другой пункт и опять запустить Вторую форму – сколько угодно рас – работает.
Но.
После закрытия Второй формы, из третей вкладки Первой формы вернуться на вторую вкладку Первой формы и обратно на третью откроется диалоговое окно «Откройте таблицу WHOMISP.DBF»
...
Рейтинг: 0 / 0
пути к базе данных
    #37421163
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

В каком событии этот код написан?
...
Рейтинг: 0 / 0
пути к базе данных
    #37421263
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

Вот только в этом коде и используется представление WHOMISP, больше ни где не открывается и не закрывается.
И когда я ему открыл таблицу на которой основано представление WHOMISP,
Вот что вышло:
...
Рейтинг: 0 / 0
25 сообщений из 92, страница 3 из 4
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / пути к базе данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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