|
|
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
Доброго дня всем! Начитавшись форума,решила делать новый сетевой проект,используя ДЕ форм.Опыта работы с ДЕ нет совсем.Поэтому сразу наступила на грабли:не знаю,ка заставить ДЕ брать таблицы с другой машины.Путь к базе данных считываю из текстового файла при запуск ехе,путь правильный. set database to моя_база не помогает.Что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 15:37 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
В большинстве случаев, достаточно перед запуском формы вручную открыть контейнер базы данных Код: plaintext 1. 2. Лучше это сделать в главном (стартовом) файле проекта. Да, надеюсь, все таблицы включены в контейнер базы данных? Речь не идет о свободных таблицах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 15:55 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
Да,все таблицы в контейнере есть. Так главном файле и делаю...Приблизительно так: автор* -----> считываем путь к базе STORE FOPEN('db.set') TO gnFileHandle && Open the file way_db = alltrim(FGETS(gnFileHandle)) && Store contents = FCLOSE(gnFileHandle) OPEN DATABASE way_db+'db.dbc' shared SET DATABASE TO way_db+'db.dbc' Помогло только в лоб this.cursor1.database=моя_база Что еще посмотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 16:24 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
В Form.Load повтори команду SET DATABASE TO db Кстати, а в чем ошибка-то? Берет данные с локального компьютера? А как запускаешь приложение? Из среды разработки, из той папки, где и скомпилил или из отдельной папки? Создай еще одну директорию, скопируй в нее все рабочие файлы и твой exe и запусти из вне среды FoxPro. Из проводника. Т.е. создай ситуацию, аналогичную той, которая будет у пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 16:54 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
авторПомогло только в лоб this.cursor1.database=моя_база Правильно помогло, а главное 100% надёжно. Можно и унифицировать, особенно в DE-классе. в BeforeOpenTables : Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 17:05 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
ВладимирМ ,да,берет данные с локальной машины.Пробовала запускать с клиентской(там только ехе,конфиг и файл с путем на базу данных),и создала у себя на машине папку(ехе,конфиг и файл настройки,база на другой машине).В лоад формы написала set database и WAIT WINDOW DBC() ,так ведь лоад грида на форме срабатывает раньше и ругается,что например e:\test\db.dbc not found,и только потом wait window показывает ПРАВИЛЬНЫЙ путь к базе данных. Cyv ,ДЕ-класс и унификация это пока не для моего уровня знаний :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 18:05 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
эээ,про лоад грида я загнула конечно...короче ошибка вылазит в лоад формы перед wait window dbc() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 18:25 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
Зайди в DE формы. Найди курсор с твоим именем. Правой кнопкой- Properties-Cursor Source. Посмотри значение. Видимо стоит ссылка на твою машину. Удали таблицу. Добавь таблицу из нужного места. Cursor Source будет правильным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 18:42 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
mary_nэээ,про лоад грида я загнула конечно...короче ошибка вылазит в лоад формы перед wait window dbc() Из тебя по одному слову за раз тянуть? Что за ошибка-то? Не нашел базу данных? А ты ее открыл ДО запуска формы? У тебя в SET PATH TO добавлен путь к сетевой папке, где лежит твоя база данных? В простом случае, как у тебя, ничего нигде перекрывать не надо. Никаких свойств курсоров. Даже и SET DATABASE по большому счету - лишняя (хотя и не мешает) Вполне достаточно корректно указать директорию по умолчанию и пути доступа (SET PATH). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 20:00 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
авторПуть к базе данных считываю из текстового файла при запуск ехе,путь правильный. Абсолютно всё правильно делаешь. авторДЕ-класс и унификация это пока не для моего уровня знаний :) Тогда так влоб и пиши в BeforeOpenTables в DE формы, только через переменную конечно, в зависимости от того с локальной или удалённой базой ведёшь работу. Код: plaintext а не имя вкупе с "правильным путём". Добудь его с помощью JUSTSTEM(). С правильным путём она должна быть открыта по OPEN DATABASE, что у тебя прекрасно и сделано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 22:34 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
авторВ простом случае, как у тебя, ничего нигде перекрывать не надо. Никаких свойств курсоров. "Остап Ибрагимович, вы же знаете как я вас уважаю" (С) :) Проверено кровью, как воинские уставы. Нерадивые программисты периодически отлаживались на живой сетевой базе, положившись на SET-ы. После данного, кажущегося излишним указания "свойств курсоров", все стали себя чувствовать гораздо увереннее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 22:46 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Из тебя по одному слову за раз тянуть? Что за ошибка-то? Не нашел базу данных? А ты ее открыл ДО запуска формы? Я выше писала,но повторюсь.Есть стартовый файл проекта,в нем открывается база данных Код: plaintext 1. Код: plaintext 1. ВладимирМ У тебя в SET PATH TO добавлен путь к сетевой папке, где лежит твоя база данных? Вот где собака порылась,на эту папку путь не добавлен.Дело в этом,очевидно.Думала,что хватит OPEN DATABASE+SET DATABASE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 22:53 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
Cyv ,да не хотелось в лоб писать,это ж неудобно (ввиду того,что универсальный код для этого я пока не осилю). Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 23:02 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
Порядок действия в простом случае ================================ I) Разработка приложения ================================ -) Создается отдельная папка проекта. Например, C:\MyProjects\TestProj -) В этой папке создается ряд подкаталогов для разных исходны файлов проекта. В том числе и для базы данных и таблиц. Например, C:\MyProjects\TestProj\Data C:\MyProjects\TestProj\Forms C:\MyProjects\TestProj\Progs C:\MyProjects\TestProj\Menu C:\MyProjects\TestProj\Reports и т.п. -) В корневой директории проекта C:\MyProjects\TestProj создается собственно файл проекта TestProj.pjx -) В этой же корневой директории создается файл конфигурации CONFIG.FPW. Это обычный текстовый файл. И в нем пишется примерно следующий текст: Код: plaintext 1. 2. 3. 4. -) Создается ярлык на рабочем столе для запуска среды FoxPro с использованием данного файла конфигурации и указания директории по умолчанию. Для этого можно сначала просто создать ярлык для запуска VFP, а потом изменить его. Если FoxPro установлено в директорию по умолчанию, то для VFP6 это будет выглядеть так: Командная строка "C:\Program Files\Microsoft Visual Studio\Vfp98\VFP6.EXE" -T -C"C:\MyProjects\TestProj\config.fpw" Директория по умолчанию "C:\MyProjects\TestProj" -) Запускаем созданный ярлык и получаем открытым новый проект. Если файла проекта не было, то он будет создан автоматически. -) В главном стартовом файле делаем открытие базы данных БЕЗ УКАЗАНИЯ ПУТЕЙ ДОСТУПА Код: plaintext 1. 2. -) Создаем форму с использованием DataEnvironment, БЕЗ ДОПОЛНИТЕЛЬНОГО КОДИРОВАНИЯ. Как FoxPro сам настроит пути, так и сойдет. Ничего нигде никуда прописывать не надо. ================================ II) Перенос на машину клиента и изменение путей доступа ================================ -) На машине клиента создаем директорию, где будет лежать исполняемый файл. Например, C:\WorkDir -) Кладем в него скомпилированный файл EXE -) Туда же кладем файл конфигурации CONFIG.FPW. Но уже не тот, который был на этапе разработки, а другой, специально созданный для работы приложения. В нем пишется примерно такой текст Код: plaintext 1. 2. 3. -) Стартуем файл EXE из проводника Windows и смотрим как работает приложение ================================ III) Отладка процесса перенос на машину клиента и изменение путей доступа ================================ Делается все то же самое, что и на машине клиента, но на отладочной машине. Здесь важен факт переноса всех исполняемых файлов в другую директорию и запуск их именно из этой другой директории, а не из среды FoxPro, где происходит отладка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 23:06 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
авторэто ж неудобно "За дёшево, надёжно и практично" (С)Лёлик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 23:07 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
ВладимирМКак FoxPro сам настроит пути, так и сойдет. Ничего нигде никуда прописывать не надо. Жизнь к сожалению доказывает обратное. Программистам свойственно в процессе работы переключаться туда-сюда, независимо от абсолютно правильных стартовых конфигураций. Творческие люди, пишут в командное окно что ни попадя, легко перекрывая любые конфиги Такие дела. Ну а "академически" - вы абсолютно правы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 23:15 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
Cyv ВладимирМКак FoxPro сам настроит пути, так и сойдет. Ничего нигде никуда прописывать не надо. Жизнь к сожалению доказывает обратное. Программистам свойственно в процессе работы переключаться туда-сюда, независимо от абсолютно правильных стартовых конфигураций. Творческие люди, пишут в командное окно что ни попадя, легко перекрывая любые конфиги Такие дела. Ну а "академически" - вы абсолютно правы. Ну, значит я не творческий человек Почему-то у меня ничто ничего не перекрывает. В такой простой задаче это вопрос не "творчества", а самодисциплины. FoxPro в этом смысле особенно строг. Имеенно в силу своей "вседозволенности". Он сам попытается найти то, что ему нужно. Если программа писалась "творчески", то FoxPro "творчески" и будет искать. Отсюда такие недоразумения. "Разруха начинается в головах" (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 23:22 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
А я делаю так При старте программы в глобальную переменную или в объект goAPP (который создается при старте приложения) в свойство goAPP.PathBase прописывается путь который у меня читается из таблицы настроек goAPP.PathBase="\\SERVER\NAME_PROG\DATA\" кроме этого создается обычный PRG файл содержащий примерно следующий текст и имеющий название например DefaultDE.PRG Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. и в событии BeforeOpenTables DE формы пишем следующий текст Код: plaintext 1. 2. 3. Все теперь можно менять пути к базе данных даже в режиме проектирования просто меняем строку в свойстве goAPP.PathBase А в процедуре SETDEFAULT прописаны первоначальные установки по умолчанию для Private Data Session ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 07:43 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
да и еще можно открыть и дополнительно свободные таблицы, которые всегда храняться локально или в совершенно другой дирректории. Так например словари у меня храняться локально (они меняются очень редко, поэтому не надо баталий по поводу того что словари тоже надо хранить на сервере), словарь конечно храниться на сервере, при старте программы проверяется его версия (время создания и размер), если поменялся значит обновляется локальная версия). Поэтому путь к ним другой и содержится в свойстве объекта goAPP.PathSLV Для этого добавим в DefaultDE.PRG Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 07:51 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
ВладимирМПочему-то у меня ничто ничего не перекрывает. Да у меня тоже :). Мысль была о том что изменение свойства которое "read/write at run time", не есть что-то нехорошее. Имя базы и локальной и удалёной - одно и то же, а в данное свойство можно записать ещё и полный путь: Код: plaintext Specifies the full path to the database (.dbc) file. Это наверное зависит от характера человека. Кто-то полагается только на автоматические настройки, кто-то хочет держать такие вещи под контролем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 10:44 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
Очень давно сталкивался с такими граблями. Фокс (вот редиска) прописывает полные пути к базе. Конечно организованоость и аккуратность хорошо - но лень родилась раньше их. Для того чтобы гарантированно открывалось по пути указанном в set path или из уже открытой базы - нужно чтобы этих самых путей небыло - только имена базы или таблиц Для этого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. В результате нам абсолютно наплевать где находилась база в момент создания DE. Если сильно хочется можно не просто чистить пути , а "прикреплять" свой путь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 10:48 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
Cyv Да. Согласен. Полный контроль через изменение Cursor.DataBase - надежнее. Просто, пока не возникало в этом необходимости... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 10:54 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
Поправьте, если ошибаюсь. Путь в базе можно проследить в Init курсоров, находящихся в Dataenvironment. Там он задается через локальную переменную. В принципе можно заменить ее на глобальную или на свойство какого-либо объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 14:55 |
|
||
|
наивный вопрос о ДЕ
|
|||
|---|---|---|---|
|
#18+
Как и следовало ожидать,проблема была в SET PATH. ВладимирМ ,спасибо.Сожалею,что Вам в n-й раз пришлось пересказывать "Советы для начинающих,часть 1' :) (хоть вроде и так наизусть ее знаю,но вот...) Всем откликнувшимся - спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2006, 18:04 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1590313]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 422ms |

| 0 / 0 |
