|
пути к базе данных
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=41&msg=37411141&tid=1584180]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 424ms |
0 / 0 |