|
пути к базе данных
|
|||
---|---|---|---|
#18+
Создан проект на VFP9. Структура: -Class -Data (одна база данных, в ней хранятся все таблицы) -Form -Help -Menus и тд. Требуется: переместить папку Data (с базой данных) на другой диск (отдельно от .exe). Вопрос: как из проекта настроить «доступ» к этой папке? Чтобы после компиляции проект обращался к этой папке извлекал, удалял, сохранял данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2011, 16:00 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
AllkayСоздан проект на VFP9. Структура: -Class -Data (одна база данных, в ней хранятся все таблицы) -Form -Help -Menus и тд. Требуется: переместить папку Data (с базой данных) на другой диск (отдельно от .exe). Вопрос: как из проекта настроить «доступ» к этой папке? Чтобы после компиляции проект обращался к этой папке извлекал, удалял, сохранял данные. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2011, 16:34 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Расположение файлов проекта В настройке SET PATH можно указывать не только абсолютные, но и относительные (относительно текущей директории) пути доступа. Если текущей директорией является та, внутри которой и расположены созданные директории, то перемещение в другое место не портебует никаких изменений в настройках. Для большинства задач этого вполне достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2011, 17:35 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Как правильно заполнить файл config.fpw? В нем: Как правильно прописать путь, с помощью опции PATH, к директории data с Базой Данных : - на диске - на сервере При компиляции где должна находиться папка data с Базой Данных ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 11:34 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
AllkayКак правильно заполнить файл config.fpw? В нем: Как правильно прописать путь, с помощью опции PATH, к директории data с Базой Данных : - на диске - на сервере При компиляции где должна находиться папка data с Базой Данных ? А зачем это всё кино надо ? Запускаем приложение, оно открывает локальный файл (типа CONFIG.DBF), читает оттуда путь к БД. Нашлась БД - всё ОК, работаем с ней, не нашлась - выдать запрос на указание папки с БД и если мы указали какой-то новый путь к папке БД, то записываем его в CONFIG.DBF для следующих запусков. Автор сам себе головную боль зарабатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 12:33 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Смысл в чем, есть готовый проект и все данные проекта, и таблицы с данными хранятся в БД «BD1» в папке DATA. Мне нужно переместить эту папку на другой диск или сервер (не важно), и прописать путь к БД. Проблема: Как разделить проект с БД. -Если папка data расположена вместе с проектом проблем нет. -Если папка data расположена на другом диске выдает сообщение об ошибке (нет «BD1»). Прописать пути к БД в файл config.fpw, только к папке или к каждой таблице в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 13:57 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Уже давно бы попробовали. Делов-то, переименовать старую папку с данными (чтобы "скрыть" ее от проекта) и создать новую (можно на то же компьютере). Затем поиграться с путями доступа, чтобы все заработало. AllkayПрописать пути к БД в файл config.fpw, только к папке или к каждой таблице в БД. Как Вы себе представляете прописывание пути доступа (без собственно имени файла) к каждой таблице в БД? SET PATH - это адреса папок. Как Вы собираетесь записать здесь адреса таблиц? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 14:34 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
AllkayСмысл в чем, есть готовый проект и все данные проекта, и таблицы с данными хранятся в БД «BD1» в папке DATA. Мне нужно переместить эту папку на другой диск или сервер (не важно), и прописать путь к БД. Проблема: Как разделить проект с БД. -Если папка data расположена вместе с проектом проблем нет. -Если папка data расположена на другом диске выдает сообщение об ошибке (нет «BD1»). Прописать пути к БД в файл config.fpw, только к папке или к каждой таблице в БД. А на фиг тут вообще вам config.fpw ? Да храните путь к БД в локальной табличке (где много прочего мусора) типа CONFIG.DBF (если есть желание, даже в текстовом файле) и берите этот путь при каждом запуске приложения. Проверили при запуске, а есть ли в этой папке какой-нить характерный файл. Если есть, да, это та самая папка. Если файла нет, то увы, облом, предлагается окошко для выбора папки. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 15:00 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Попробовал. Переименовал папку, даже создал новый проект, но после запуска положения он ищет папку с базой данных у себя в папке “Proect”. Прописал в файле config.fpw путь (SET PATH TO D:\BD\DATA) доступа к папке data – но он все равно ищет в папке “Proect”. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 16:04 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
reware, Потому что все советуют указывать путь к БД в файле config.fpw. Сохраню путь в текстовом файле, а как брать путь из текстового файла при каждом запуске приложения.? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 16:23 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
1. Чтобы определить какой именно файл конфигурации подхватывается при запуске EXE используйте функцию SYS(2019) 2. Если Вы хотите использовать настройку PATH в файле конфигурации, то убедитесь, что у Вас не используется настройка SET PATH в коде программы, поскольку она может затереть настройки файла конфигурации (если нет опции ADDITIVE) 3. Если используются относительные пути доступа, то принципиально важным становится директория по умолчанию относительно коьторой эти пути и будут определяться Для справки : В файле config.fpw синтаксис настройки имеет вид PATH=D:\BD\DATA В файле PRG синтаксис настройки имеет вид SET PATH TO D:\BD\DATA ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 16:26 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkayreware, Потому что все советуют указывать путь к БД в файле config.fpw. Сохраню путь в текстовом файле, а как брать путь из текстового файла при каждом запуске приложения.? Да бог с ним текстовым. Что мешает хранить этот путь в локально-эксклюзивном CONFIG.DBF ? Открыли его штатно, прочли этот путь, зашли в эту папку (если таковая обнаружена), совпал (по наличию какого-то характерного файла) путь с нужным - переключаемся на эту папку. Нет этого "характерного" файла, значит не та папка - выдаём диалог для выбора другой папки. Кронштейн ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 16:55 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
ВладимирМ1. Чтобы определить какой именно файл конфигурации подхватывается при запуске EXE используйте функцию SYS(2019) 2. Если Вы хотите использовать настройку PATH в файле конфигурации, то убедитесь, что у Вас не используется настройка SET PATH в коде программы, поскольку она может затереть настройки файла конфигурации (если нет опции ADDITIVE) 3. Если используются относительные пути доступа, то принципиально важным становится директория по умолчанию относительно коьторой эти пути и будут определяться Для справки : В файле config.fpw синтаксис настройки имеет вид PATH=D:\BD\DATA В файле PRG синтаксис настройки имеет вид SET PATH TO D:\BD\DATA С помощью функцию SYS(2019) проверил файл конфигурации: D:\uasnewexp\config.fpw. В файле config.fpw прописал путь: PATH=D:\database\data\. С компилировал проект, запустил – ответ системы: D:\uasnewexp\data\bduaski.dbc – файл не существует. А должен был искать: D:\database\data\ ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 17:17 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Ни чего не мешает!! только знать бы, как его создать, где хранить, и как штатно открывать? Я новичок на FOXe поэтому пока не очень «Кронштейн» ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 17:24 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
AllkayС помощью функцию SYS(2019) проверил файл конфигурации: D:\uasnewexp\config.fpw. В файле config.fpw прописал путь: PATH=D:\database\data\. С компилировал проект, запустил – ответ системы: D:\uasnewexp\data\bduaski.dbc – файл не существует. А должен был искать: D:\database\data\ Вообще-то, проверять надо было из запускаемого приложения. В смысле, из EXE. Ну, например, где-то в начале главного (стартового) файла проекта записать нечто вроде Код: plaintext
Дело в том, что если файл Config.FPW включен внутрь EXE, то в первую очередь будут использоваться настройки этого самого "включенного" файла. Можно еще использовать ключ -C (латинская буква "С"), чтобы явно задать файл конфигурации, который следует использовать. Примерно так Код: plaintext
Здесь MyProg.exe - это Ваше приложение, скопилированное в EXE-файл. И еще, я бы посоветовал открывать контейнер базы данных "вручную" в главном стартовом файле проекта ДО открытия каких-либо форм. Примерно так Код: plaintext 1. 2.
==================== То, о чем говорит reware - это следующая стратегия. 1. Создается специальный файл DBF, который НЕ включен в контейнер базы данных. Так называемая, свободная таблица. В проекте это узел "Free Tables" на закладке Data. 2. Ну, структура этой таблицы может быть разной, но суть в том, что определенном поле определенной записи записан путь доступа к базам данных. 3. Данный файл DBF всегда кладется рядом с EXE в ту же самую директорию. Другими словами, этот файл всегда находится в директории по умолчанию. 4. В момент открытия приложения в главном стартовом файле проекта предпринимается попытка открыть эту таблицу прямой командой USE и прочитать настройку путей доступа. Далее командой SET PATH эти настройки устанавливаются. Разумеется, пункт 4 должен быть еще окружен рядом дополнительных проверок, как на факт существования такой таблицы, так и на факт существования нужной записи и нужного значения. Все это дополнительно программируется и обрабатываться возможные ошибки. Собственно, это тот же Config.fpw, но "вид сбоку". Преимущества данного способа в том, что кроме пути доступа можно хранить ряд других локальных настроек приложения. Хотя особого практического смысла это и не имеет, поскольку те же локальные настройки можно хранить и на сетевом ресурсе. Я бы сказал так. Пока Вы не разберетесь, почему через config.fpw у Вас не работает, пытаться использовать файл DBF для подобных настроек - не стоит. Вы просто повторите все те ошибки, которые уже сделали для config.fpw, но запутаетесь еще больше, поскольку тут будет больше кода. Как следствие, больше мест, где можно ошибиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 20:46 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Прописал в головной программе: MessageBox("config = " + SYS(2019) + chr(13) + "path = " + SET("PATH")) OPEN DATABASE bduaski.dbc SHARED SET DATABASE TO bduaski С компилировал без ошибок. Запустил. Он ответил: -[config = D:\uasnew1\config.fpw] -[path = D:\database\data\] Нажал ОК!: -ошибка: файл D:\uasnew1\data\bduaski.dbc не существует Нажал ОК!: -ошибка: файл не существует data\bduaski Нажал ОК!: - выкидывает из программы. Может я не правильно отделил БД от проекта? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 10:58 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
я сделал форму txt button локальная база в которую записую пути при запуске проги вылетает форма нажал на кнопочки, настроил пути, запомнил и работаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 11:07 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Так кто ж знает, как ты ее отделял ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 11:15 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Изначально проект создавался в месте с папкой data. Отделил не правильно и не корректно. Перенес из одного места в другое.(Если кто знает скажите как правильно) Нужно что бы «uasoao.exe» знал где сидит «bduaski.dbc». ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 12:00 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, А в проект эта база данных у тебя включена? См. на вкладке Data ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 12:32 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Поскольку база данных у тебя включена в проект, можешь встать на нее и внизу увидишь соответствующий путь к ней. Вот она и открывается, а то что ты как бы исключил из проекта, ровным счетом ничего не значит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 13:59 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Прописал в головной программе: MessageBox("config = " + SYS(2019) + chr(13) + "path = " + SET("PATH")) OPEN DATABASE bduaski.dbc SHARED SET DATABASE TO bduaski С компилировал без ошибок. Запустил. Он ответил: ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 14:03 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Нажал ОК!: Нажал ОК!: - выкидывает из программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 14:05 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Плохо читаешь, что тебе советуют. http://www.foxclub.ru/articles/index.php?id=32#FilesInProject PATH - еще одна очень важная настройка. Она говорит FoxPro о том, где следует искать файлы (в каких директориях) ОТНОСИТЕЛЬНО текущей директории. В качестве разделителя можно указывать как просто запятую, так и символ точки с запятой. Подробнее о путях доступа чуть ниже. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 14:15 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
AllkayПрописал в головной программе: MessageBox("config = " + SYS(2019) + chr(13) + "path = " + SET("PATH")) OPEN DATABASE bduaski.dbc SHARED SET DATABASE TO bduaski С компилировал без ошибок. Запустил. Он ответил: -[config = D:\uasnew1\config.fpw] -[path = D:\database\data\] Нажал ОК!: -ошибка: файл D:\uasnew1\data\bduaski.dbc не существует Нажал ОК!: -ошибка: файл не существует data\bduaski Нажал ОК!: - выкидывает из программы. Может я не правильно отделил БД от проекта? 1. Между командами MessageBox() и OPEN DATABASE есть еще какие-то команды? 2. Файл bduaski.dbc (dct, dcx) физически существует по указанному пути в папке "D:\database\data\" ? Т.е. что возвращает функция Код: plaintext
Т.е. в Вашем сценарии либо был изменен путь доступа, либо просто контейнер базы данных не существует по указанным путям доступа. Сообщение об ошибке говорит о том, что по путям SET PATH не был найден нужный файл, поэтому показывает путь доступа к текущей директории Еще проверьте, что все буквы латинские. Например, отличить русскую букву "а" от латинской "a" или русскую "с" от латинской "c" визуально невозможно. Поэтому попробуйте скопировать имена из проводника. Не писать, а именно копировать. Если русские буквы оказались в имени базы данных, то в файле CONFIG.FPW обязательно должна быть строчка CODEPAGE=1251 и главный стартовый файл должен быть написан в кодировке 1251. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 14:19 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNGPATH - еще одна очень важная настройка. Она говорит FoxPro о том, где следует искать файлы (в каких директориях) ОТНОСИТЕЛЬНО текущей директории. Не обязательно. Можно и абсолютный путь указать. В данном случае - это не важно. Проблема в чем-то другом. Подозреваю, где-то "затерялась" русская буква в имени или пути доступа. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 14:21 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
ВладимирМ1. Между командами MessageBox() и OPEN DATABASE есть еще какие-то команды? #INCLUDE "INCLUDE\STRINGS.H" SET ENGINEBEHAVIOR 70 SET NOTIFY OFF OPEN DATABASE bduaski.dbc SHARED SET DATABASE TO bduaski MessageBox("config = " + SYS(2019) + chr(13) + "path = " + SET("PATH")) mwidth=SYSMETRIC(1) mheight=SYSMETRIC(2) IF mwidth<800 OR mheight<600 и тд.[/quot] ВладимирМ2. Файл bduaski.dbc (dct, dcx) физически существует по указанному пути в папке "D:\database\data\" ? Т.е. что возвращает функция Код: plaintext
.Т. ВладимирМ3. Еще проверьте, что все буквы латинские. Например, отличить русскую букву "а" от латинской "a" или русскую "с" от латинской "c" визуально невозможно. Поэтому попробуйте скопировать имена из проводника. Не писать, а именно копировать. Копировал из «тотола» ВладимирМ4. Если русские буквы оказались в имени базы данных, то в файле CONFIG.FPW обязательно должна быть строчка CODEPAGE=1251 Содержание моего CONFIG.FPW SCREEN=OFF CODEPAGE=AUTO statusbar=off TITLE="BDUASKI" PATH=D:\database\data\ ВладимирМ5. и главный стартовый файл должен быть написан в кодировке 1251. Когда выбираю редактировать главную программу проекта, в командной строке прописывается: MODIFY COMMAND d:\uasnew1\progs\main.prg AS 1251 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 14:45 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay#INCLUDE "INCLUDE\STRINGS.H" OPEN DATABASE bduaski.dbc SHARED SET DATABASE TO bduaski MessageBox("config = " + SYS(2019) + chr(13) + "path = " + SET("PATH")) Вы ведь раньше писали, что СНАЧАЛА отображается MessageBox() и только ПОТОМ идет ругань на открытие базы данных! А в приведенном коде все наоборот. База данных СНАЧАЛА открывается (без ругани?), а ПОТОМ отображается MessageBox(). И, кстати, в файле STRINGS.H никакого кода прекомпиляции нет? Только определение констант? Код: plaintext
Так нельзя. Это означает, что будет использована кодовая страница по умолчанию. А для FoxPro начиная с VFP7 и старше в готовом EXE это будет 1252 (win eng) вне зависимости от кодовой страницы Windows. Нужно явно указать кодовую страницу 1251. Код: plaintext 1.
Опция TITLE - это заголовок основного окна FoxPro. Но опци SCREEN=OFF означает, что основное окно FoxPro отображено не будет. Так какой смысл менять заголовок у окна, которое не отображается? Кроме того, в файле Config.fpw все значения и так по умолчанию символьные. Поэтому кавычки будут восприняты как содержимое параметра, а не его границы. Т.е. в заголовке окна эти самые кавычки таже окажутся отображенными. Да, на этапе тестирования оставьте SCREEN=ON ======================= 1. Если Вы прямо в командом окне FoxPro дадите команду Код: plaintext
База данных откроется? Если откроется, то что вернет Код: plaintext
2. Создайте новый тестовый проект, в котором будет один единственный файл PRG как главный стартовый файл и в нем ТОЛЬКО следующие две строчки Код: plaintext 1. 2.
После чего сгенерите файл EXE и с этим EXE далее и экспериментируйте с путями доступа и файлом config.fpw ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 15:26 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Код: plaintext 1.
Так и было, он отрывает БД но наверное еще какое-то приложение пытается открыть БД! Код: plaintext 1. 2.
OPEN DATABASE D:\database\data\bduaski.dbc SHARED MODIFY DATABASE Открывается БД и все таблицы. Код: plaintext 1. 2.
Путь: D:\database\data\ bduaski.dbc Нашел в коде Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 16:01 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
// Определяем присутствие базы данных, если надо открываем ее// nDatabase=OCCURS("!",cTableName) IF nDatabase>0 nPosDatabase=AT("!",cTableName) cDatabaseName=SUBSTR(cTableName,1,nPosDatabase-1) cTableName=SUBSTR(cTableName,nPosDatabase+1) IF !DBUSED(cDatabaseName) IF !FILE(ALLTRIM(cDatabaseName)+".DBC") =MESSAGEBOX("База данных "+UPPER(cDatabaseName)+" не найдена",; 0+64+0,"Ошибка N 1") RETURN .F. ENDIF OPEN DATABASE &cDatabaseName ENDIF cDatabaseName=cDatabaseName+"!" ENDIF Вот здесь возникают ошибки, об открытии. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 16:12 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
1. Устанавливать пути к рабочим директориям в коде не желательно. Для указания путей доступа используется отдельный файл config.fpw специально для этапа разработки (отладки) приложения. Поэтому, сделайте поиск по ключевому слову PATH по всему приложению и удалите все настройки SET PATH . У Вас должно быть 2 файла config.fpw. Один используется на этапе разработки, а другой будет использоваться с готовым EXE. 2. Как я уже писал, настройка SET PATH удаляет ранее сделанные настройки путей доступа, если только не используется специальный синтаксис. Поэтому команда SET PATH в Вашем приложении просто затерла настройки PATH сделанные в файле конфигурации. Еще раз посоветую: удалить SET PATH в коде и используйте для указания путей доступа только config.fpw ==================== PS: Добавление путей доступа к ранее настроенным выполняется по одной штуке за раз. При этом, добавляемый путь доступа обязательно заключается в кавычки. Примерно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Если же в настройке указывается список путей, то настройка SET PATH удаляет ранее сделанные настройки вне зависимости от наличия опции ADDITIVE. При этом, наличие опции ADDITIVE приводит к парадоксальным результатам Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 16:39 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
SET PATH TO – точно работает, но только до поры до времени. Проблема в программе main.prg. Понятия не имею что она делает с SET PATH TO, но он перестает действовать. Я изменял в программе SET PATH TO, но ничего не выходит, на проверке выдает что файл не найден. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 17:28 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Ну, еще раз. Пожалуйста, прочитай внимательно Команда SET PATH отменяет (удаляет, затирает) ранее сделанные настройки PATH Файл конфигурации config.fpw при помощи опции PATH сделал настройку путей доступа. Затем, в твоем главном файле в функции SetPath() ты сделал свою настройку SET PATH и удалил настройку, сделанную в файле конфигурации. Как решить проблему? Есть два принципиальных варианта 1. Использовать специальный синтаксис команды SET PATH, который был введен только в VFP9, чтобы дополнить, а не удалить, ранее сделанную настройку. Для версий младше VFP9 придется делать "конструктор" с макроподстановкой. 2. Вообще не использовать команду SET PATH в приложении. А настройку путей доступа делать только и исключительно в файле конфигурации config.fpw Какой вариант объяснять дальше? Кстати, о какой версии FoxPro идет речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 19:47 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Да, команда SET PATH затирает настройки PATH в файле config.fpw. Просто я сразу в код не полез а начал так настраивать, а когда тестировал отладчиком заметил. У меня версия VFP 9. 1. Если возможна небольшая коррекция файла config.fpw, без изменения кода, то этот вариант мне подходит. 2. Я пытался не использовать команду SET PATH в приложении – но кроме кучи ошибок у меня ничего не вышло. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2011, 09:44 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay1. Если возможна небольшая коррекция файла config.fpw, без изменения кода, то этот вариант мне подходит. Без изменения кода - не получится. Ведь проблема именно в этом самом коде. Как изменить, уже показал 11165753 Allkay2. Я пытался не использовать команду SET PATH в приложении – но кроме кучи ошибок у меня ничего не вышло. Нужны два файла конфигурации. Один для разработки приложения, другой - для готового приложения. В файле конфигурации указать ВСЕ необходимые пути На этапе разработки приложения Код: plaintext
Для готового приложения Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2011, 12:07 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
ВладимирМ, Я здесь немножко по экспериментировал с проектом. Заходил в проект через ярлык (ярлык прописан "C:\Program Files\Microsoft Visual FoxPro 9\vfp9.exe" -T -C"D:\uasnew1\config.fpw"). В config.fpw прописано: SCREEN=ON CODEPAGE=1251 statusbar=off PATH = PROGS, FORMS, LIBS, MENUS, D:\database\data\, OTHER, REPORTS, INCLUDE, HELP, PICTURES, API, DLL Запускал тестировщика и смотрел где что вылетает, соблюдая точность выполнения программы. Там есть несколько моментов, если не сложно посмотрите. Огромное спосибо за вашу помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2011, 16:42 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Перед этой строкой выведи на экран значение cDataBase wait "Значение cDataBase = " + this.cDataBase window IF !EMPTY(this.cDataBase) и посмотри, что покажет ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2011, 16:56 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Я уже несколько раз повторил: удалите настройку SET PATH из программы или адаптируйте ее под совместное использование с config.fpw У Вас функция setPath() по прежнему удаляет настройку сделанную в config.fpw . Какой смысл делать настройку в config.fpw, если Вы ее все-равно не используете? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2011, 19:04 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
В файл config.fpw снял настройки ‘PATH’, оставил только в коде. Вот последний цикл перед ошибкой. 7. mainobj.vcx:person.bcapplication.init . Код: plaintext 1. 2. 3.
ЗАПРОС: . Код: plaintext
ОТВЕТ: . Код: plaintext
Код: plaintext
ЗАПРОС: .[/src] Код: plaintext
ОТВЕТ: . Код: plaintext
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 10:37 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
И что из этого кода следует? Вопрос-то в чем? Если Вы думаете, что по разрозненным фрагментам кода можно догадаться в чем ошибка, то Вы ошибаетесь. Откуда я могу знать как и где Вы заполняете свойство this.cDataBase? Вы вообще-то его заполняете? Почему в этом свойстве оказался фрагмент пути доступа? Нужен полноценный рабочий код, воспроизводящий проблему. Напишите тестовый проект, где будет один файл PRG и один класс, выполняющий открытие базы данных. Вот этот тестовый проект и положите во вложение. Тогда можно будет указать, где в этом коде ошибка. А так, Вы постоянно будете говорить "я сделал, а не работает". Естесственно не работает, ведь неизвестно ЧТО Вы сделали. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 10:47 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Меня IgorNG попросил что бы я сделал запрос Код: plaintext
Код: plaintext
Но это уже не беда. Все изначально работало и было правильно, не работало из-за мелочи. Нужно было прописать Код: plaintext
Код: plaintext
Прошелся тестировщиком, и он тоже не показал ошибок ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:09 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, А из командного окна: cDataBase = "DATA\BDUASKI" OPEN DATABASE (cDataBase) Что получишь? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:11 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Но вот беда, приложение запускается но когда я выбираю какую ни будь формы на запуск появляется сообщение: Может это быть из-за Data Environment или Control Source? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:18 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNG Из командного окна: cDataBase = "DATA\BDUASKI" OPEN DATABASE (cDataBase) А получаю ответ ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:23 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Так, ты что думаешь, что открыл контейнер базы данных и у тебя все таблицы, находящиеся в ней открыты? А в DE зачем нужно, если вручную открываешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:24 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNG, Да этого момента я об этом не думал. Получается, что, нужно в начале каждой программы открывать отдельные таблицы? А в DE зачем нужно, если вручную открываешь? А с этого места по подробнее… ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:54 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
AllkayIgorNGИз командного окна: cDataBase = "DATA\BDUASKI" OPEN DATABASE (cDataBase) А получаю ответ Fox не обманешь - значит не лежит там БД ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:56 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
AllkayIgorNG, Да этого момента я об этом не думал. Получается, что, нужно в начале каждой программы открывать отдельные таблицы? А в DE зачем нужно, если вручную открываешь? А с этого места по подробнее… А зачем они в DE? Да еще, наверняка с AutoOpen. Нужно делать все руками - закрывать и открывать. Тогда и весь процесс будет под контролем. Я точно не помню, но по-моему, если БД запихиваешь в DE, которая лежит в определенном месте, так в этом месте и будет пытаться открыть ее. Не понял вопроса "в начале каждой программы". Что ты имеешь ввиду под каждой программой? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 12:05 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNGА зачем они в DE? Да еще, наверняка с AutoOpen. Нужно делать все руками - закрывать и открывать. Тогда и весь процесс будет под контролем. Это один из главных аргументов против использования DE. Именно желание всегда и все контролировать. Для большинства задач в этом нет никакой необходимости. Хотя, конечно, есть исключения. Именно по причине желания все контролировать в данном случае и "огребли" кучу проблем. Я настойчиво твержу, что SET PATH в коде использовать НЕ НАДО, тем не менее, этот совет игнорируется и по прежнему лепят проблему на проблеме. Ну, успехов в борьбе с глюками... IgorNG Я точно не помню, но по-моему, если БД запихиваешь в DE, которая лежит в определенном месте, так в этом месте и будет пытаться открыть ее. Если таблица включена в контейнер базы данных, то пути доступа к таблицам прописаны в собственно контейнере базы данных. И открываются после открытия этого самого контейнера. Если "вскрыть" файл формы с DE, то в свойствах курсора будет написано нечто вроде Код: plaintext 1. 2. 3. 4.
Т.е. ссылка только и исключительно через DBC. Как следствие, если контейнер открыт и сделан текущим в начале приложения, то именно его таблицы и будут открываться при открытии форм с DE. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 12:22 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
ВладимирМIgorNGА зачем они в DE? Да еще, наверняка с AutoOpen. Нужно делать все руками - закрывать и открывать. Тогда и весь процесс будет под контролем. Это один из главных аргументов против использования DE. Именно желание всегда и все контролировать. Для большинства задач в этом нет никакой необходимости. Хотя, конечно, есть исключения. Именно по причине желания все контролировать в данном случае и "огребли" кучу проблем. Я настойчиво твержу, что SET PATH в коде использовать НЕ НАДО, тем не менее, этот совет игнорируется и по прежнему лепят проблему на проблеме. Ну, успехов в борьбе с глюками... IgorNG Я точно не помню, но по-моему, если БД запихиваешь в DE, которая лежит в определенном месте, так в этом месте и будет пытаться открыть ее. Если таблица включена в контейнер базы данных, то пути доступа к таблицам прописаны в собственно контейнере базы данных. И открываются после открытия этого самого контейнера. Если "вскрыть" файл формы с DE, то в свойствах курсора будет написано нечто вроде Код: plaintext 1. 2. 3. 4.
Т.е. ссылка только и исключительно через DBC. Как следствие, если контейнер открыт и сделан текущим в начале приложения, то именно его таблицы и будут открываться при открытии форм с DE. Давно не пользовался DE, вот и забыл. Кстати, и Wizardфми тоже не пользуюсь - только на первом этапе знакомства с Visual FoxPro ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 12:31 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
В коде удалил “PATH”. Только в файле config.fpw прописаны пути к директориям. Компиляция бес ошибок. Запуск задачи: Сопровождение ИК → Отметка о выполнении = должна открыться форма, Но в место этого Ошибка. Проект изначально создавался через Проект Менеджер, со всеми директориями. Я “жестоко” перенес директорию DATA и создал на диск D:\. Формы создавались “New Form” ? открывался DE добавлялись таблицы, представления и просто курсоры (на форме создавались компоненты а за частую просто перетаскивались из DE). В файлах с DE прописано SET DELETED ON … DODEFAULT() … SELECT AUTOR … CREATE CURSOR НО ни где не прописано открытие БД, открытие ТАБЛИЦ. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 14:32 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
СОРИ не та картинка ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 14:34 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, из картинки ничего не понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 14:43 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Первая картинка ЭТО какая ошибка вылетает Вторая картинка Какое приложение запускаю(Типа: ФАЙЛ→Сахронить как → Вылетает форма) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 14:55 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Провел эксперимент: 1. Создал FORM 2. Добавил в DE таблицу, из БД. (БД -- находится на диске D:\DATABASE\DATA) 3. Перетащил БД на FORM 4. Ни чего не прописывал, ни на FORM ни в DE 5. Добавил FORM в меню 6. С компилировал проект 7. Запустил вуаля – работает (но только эта форма!?) К стати в VFP для что бы редактировать форму нужно копировать директорию DATA в папку с проектом, а иначе ОШИБКА «БД не существует» Хотя в Project Manager БД добавлена. Мало того что добавлена да и еще и открыта (можно просматривать таблицы). А мною созданную форму можно редактировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 15:36 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, так вот что не заниматься копирование папок, я и говорил, что нужно обходиться без DE, а открывать все что нужно ручками OPEN DATABASE ..... USE <Table> IN 0 SHARED ALIAS ... и .д. Весь процесс под контролем. А когда БД в DE, а потом перетащил папку с базой в другое место и все - ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 15:48 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
А VFP где ни будь запоминает откуда я в DE добавлял таблицы? Я еще думал что то что я перетаскиваю в DE можно настроить. А если я буду прописывать OPEN DATABASE ..... USE <Table> IN 0 SHARED ALIAS ... в ручную, то что тогда config.fpw не нужен? или нужен? И OPEN DATABASE ..... и USE <Table> IN 0 SHARED ALIAS ... прописывать путь полностью? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 16:01 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Когда добавляешь в DE выводится диалоговое окно, в котором укабываешь БД. Естественно, что запоминается именно эта база данных. Если открываешь ручками, а в DE ничего нет, то будет искаться по путям, прописанным в конфиге, о чем собственно тебе и говорят все уже который день. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 16:14 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Так получается, что в моем проекте нужно удалять таблицы из DE и в коде прописывать ручками пути? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 16:41 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Из DE удалять. Зачем пути прописывать ручками? Путь в конфиге укажешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 16:44 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
В смысле не пути прописывать а открывать в начале!? и БД и Таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 17:04 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
ВладимирМ Извините за повторение (чуть выше мы с Игорем осуждали этот вопрос) Очень важно ваше мнение Вы сказали: Код: plaintext 1. 2.
Так что делать с Проектом удалять таблицы из DE ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 17:29 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Вообще-то DE в форме, а не в проекте. По-моему у вас путаница с понятиями. В проекте у вас БД ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 17:46 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Сколько лет работаю с FoxPro, ни разу не возникали проблемы с путями. Вообще не понимаю, почему почти у всех начинающих они появляются. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 18:16 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Ffffffffffffffff, Так у него бы все работало бы, если б не задумал базы в другое место кинуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 18:44 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Обычная ситуация. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 18:53 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Возможны разные стратегии настройки путей доступа. Но если уж Вы выбрали какую-то из них, то ее и следует придерживаться. Вы же смешали в кучу несколько стратегий и в результате, получили "кашу". Та стратегия, про которую я говорю решается при выполнении следующих условий 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 19:21 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
ВладимирМ, Даже не знаю что и сказать. Сам не понял как это вышло, и наверное не пойму. В начале я по всему коду искал this.cDataBase = "DATA\BDUASKI" this.cDataBase = "BDUASKI.dbc" но не нашел и решил было написать что не нашел. Но патом все эти формы, их открытие, коды, ODBC Driver, config.fpw меня достали и я удалил проект. Проект был экспериментальным (оригинал хранился в другой дирректориии), в нем я создавал новые отчеты, формы. Потом из папки с скопировал оригинальный Проект. Удалил директорию с папкой DATA, прописал PATH в файле config.fpw. На этапе отладки приложения открывая форму он попросил указать папку с БД – я указал и форма открылась (в предыдущий рас он не просил открыть, он говорил что не нашел БД). Потом скомпилировал проект, запустил и ПРОЕКТ РАБОТАЕТ. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2011, 11:36 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
ВладимирМ, Прога работает все вроде ничего, но есть проблемы с «локальным представлением». После запуска приложения я выбираю какую ни будь задачу (просмотр отчета, просмотр карточки и тд.). Задача запускается, все показывает, (в задаче есть под пункты, при просмотре карточки можно нажать кнопку Далее отобразится отдел, Далее имя администратора Далее дата закрытия карточки) но если нажать кнопку Назад выбрать другую карточку, снова нажать кнопку Далее выскочит диалоговое окно «Откройте таблицу Whom.DBF» хотя «Whom» это не таблица а локальное представление. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 11:46 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Значит, оно закрывается в какой-то момент ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 12:00 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNG, Явное закрытие представлений, курсоров или таблиц нет. В задаче участвуют два формы: Сначала запускается первая форма. На этой форме есть три вкладки. Во второй вкладке используется Представление WHOMISP. Но можно перемещаться с первой на вторую вкладку на третью и обратно сколько угодно рас – работает. Код программы используемый на второй вкладке, где используется представление WHOMISP: Код: plaintext 1. 2. 3. 4. 5. 6.
После закрытия Второй формы, на третей вкладке Первой формы можно выбрать другой пункт и опять запустить Вторую форму – сколько угодно рас – работает. Но. После закрытия Второй формы, из третей вкладки Первой формы вернуться на вторую вкладку Первой формы и обратно на третью откроется диалоговое окно «Откройте таблицу WHOMISP.DBF» ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 14:00 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, В каком событии этот код написан? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 14:28 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNG, Вот только в этом коде и используется представление WHOMISP, больше ни где не открывается и не закрывается. И когда я ему открыл таблицу на которой основано представление WHOMISP, Вот что вышло: ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 15:02 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNG, Это все из-за БД, она расположена на E:\DATABASE\DATA\, потому что когда я копирую ее обратно в директорию с проектом, и возвращаю все настройки в исходные – работает как и должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 15:15 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, В запросе ALLTRIM(regn). regn - это переменная? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 15:26 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Правильно. Представление откуда берет данные? Из таблиц. Представление небось мастером делал. Указывал конкретные таблицы, а потом их переместил. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 15:28 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Правильно. Представление откуда берет данные? Из таблиц. Представление небось мастером делал. Указывал конкретные таблицы, а потом их переместил. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 15:40 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNG, (ALLTRIM(kard.regnumb)+'('+ALLTRIM(pointtask.pointnumb)+')') as regn Да, через мастер, а что делать!? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 15:49 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNG, kard.regnumb – таблица и поле pointtask.pointnumb – таблица и поле ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 15:51 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, Я уже говорил о контроле. Если бы сам, ручками написал запрос, не нужно было бы париться с представлением, которое сгенерил мастер из указанных таблиц (с смысле - ОПЯТЬ пути). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 15:52 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNG, А что с этим Представлением можно сделать? А если с Локальным представлением возникла ошибка, то с Удаленным тоже может возникнуть? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 16:02 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Allkay, А для каких целей представление? А курсор. А еще лучше курсор адаптер. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 16:09 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
IgorNG, Честно, не знаю, я это приложение не создавал. Но посмотрел, что там, настроено только «GroupBy» и «UpdateCriteria», ни каких фильтров и объединений, т.к. используется только одна таблица. Получается просто отредактированная таблица. Курсор в принципе не плохо, я бы так и сделал будь это моя задача. Получается переделать представление не получится, только в ручную?! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 16:47 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Еще раз. Видимо и для IgorNG Если таблица включена в контейнер базы данных, то нигде и никоим образом, путь доступа к этой таблицы FoxPro сам не прописывает. Т.е. мастера пути доступа к таким таблицам не указывают . Все таблицы, включенные в контейнер базы данных, ищет этот самый контейнер. Он сам "знает" где эти таблицы находятся. У него "внутри" эти самые пути доступа записаны. Соответственно, все мастера FoxPro прописывают путь доступа только и исключительно к контейнеру базы данных. К файлу DBC. Однако есть небольшая тонкость. С целью экономии места и для облегчения переноса приложения, во всех подобных случаях, записываются относительные пути доступа. Вопрос в том, относительно чего? Путь доступа к таблицам DBF в контейнере базы данных записан относительно той директории, где расположен сам контейнер. А вот путь доступа до контейнера в DataEnvironment записывается относительно той директории, которая была текущей на момент добавления таблицы в DataEnvironment. ------------------------------------------------------------ По поводу Local View. Local View - это объект контейнера базы данных. Он физически находится внутри самого контейнера. Внутри DBC. Как следствие, никаких путей доступа он вообще НЕ ХРАНИТ . Зачем ему знать эти пути, если он сам "живет" внутри того объекта, который использует? ----------------------------------------------------------- По поводу ошибки. Здесь явно и однозначно произошло закрытие Local View или переход в другую DataSession. Кроме явных способов закрытия, существуют еще и не явные. Например, открытие таблицы в рабочей области, где ранее была открыта другая таблица автоматически закроет эту самую другую таблицу. Молча. Без каких-либо сообщений об ошибках. Поскольку самой формы мы так и не увидим, то гадать как же именно произошло это закрытие можно долго и безуспешно. Либо прикладывайте форму во вложении, либо ищите ошибку сами. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2011, 20:39 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
ВладимирМ, Я удивляюсь Вашему терпению. Вам учителем младших классов надо было идти. Мало того автор топика мимо ушей все пропускает так еще тут "помощник" обїявился который только путает автора ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2011, 07:15 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
Запустить формы на исполнение, чтобы получить ошибку - невозможно. В архиве нет много чего. Если судить по коду, то, вроде бы, ничего такого, что могло бы привести к закрытию представления WHOMISP в приложенных файлах нет. Но! - Подчиненная форма создана с использованием библиотеки классов baseobj.vcx. Что именно написано в этой библиотеке - не известно - Подчиненная форма НЕ модальная (если только это не указано в библиотеке baseobj.vcx). Это значит, что возможен переход в какие-либо другие формы, где и могло произойти закрытие представления - Из подчиненной формы могут быть вызваны еще две формы: форма календаря (do form kalend) и форма сообщений (DO FORM frmYesNo). Ничего не известно о работе с данными в этих формах - Сильно подозрительно выглядит вызов форм изнутри Grid. Крайне желательно перед вызовом форм сделать явный переход (через setFocus()) на другой объект формы - Из описания ошибки не ясно, проблема возникает только после вызова подчиненной формы? Или же достаточно просто перейти на 3 закладку, пощелкать там по Grid и вернуться на 2 закладку, чтобы "потерять" WHOMISP Я бы написал в окне Watch() отладчика функцию USED("WHOMISP") и поставил слева от нее точку останова. В этом случае, произойдет автоматический переход в окно отладчика, если значение этой функции изменится. Понятно, что первый переход произойдет в момент открытия формы. Но зато когда произойдет закрытие представления, также будет выполнен переход в окно отладчика и можно будет увидеть, какой именно метод вызвал закрытие. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2011, 14:26 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
ВладимирМ, Я глубоко извиняюсь за свою не образованность, но вышла такая ситуация. Не зная как с помощью отладчика написать «функцию USED("WHOMISP") и поставить слева от нее точку останова». Я на всех этапах, а точнее на кнопках Page 2 и Page 3 прописал MESSAGEBOX(USED("WHOMISP")). Скомпилировав и запустив процесс он выдавал на всех сообщениях «.Т.», и формы открывались и закрывались, переходил с одной вкладки на другую и обратно бес ошибок. Даже после выхода из VFP и нового запуска VFP все работало нормально. Даже после того как я снял это сообщение тоже работало. Внимание. До того как было прописано MESSAGEBOX(USED("WHOMISP")) – форма не работала!!!. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2011, 17:47 |
|
пути к базе данных
|
|||
---|---|---|---|
#18+
AllkayЯ глубоко извиняюсь за свою не образованность, но вышла такая ситуация. Не зная как с помощью отладчика написать «функцию USED("WHOMISP") и поставить слева от нее точку останова». Tools-Debugger, откроется окно отладчика, в нём в главном меню Window-Watch, откроется окно Watch, туда и пишите. AllkayДо того как было прописано MESSAGEBOX(USED("WHOMISP")) – форма не работала!!!.Ну теперь-то работает, вот и хорошо - цель достигнута ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2011, 19:12 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1584180]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
others: | 324ms |
total: | 505ms |
0 / 0 |