Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Создал проект.....  [new]
sigarilla
Member

Откуда:
Сообщений: 28
Создал проект, згенерил *,ехе , а он мне берет базы не из текущего каталога, а из каталога где лежат все файлы проекта, как с этим бороться не могу понять!
5 сен 03, 13:56    [327819]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
str
Guest
in file config.fpw add next

default=d:\.....\
5 сен 03, 14:17    [327873]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
sigarilla
Member

Откуда:
Сообщений: 28
нет , не помогает,.... его нужно в корне программы создать или в корне проекта....хотя щас попробую и там и там....неее не помогаеь, все равно тянет из баз проекта,,,, а если папку проекта переименовать, то такое начинается!!
5 сен 03, 14:28    [327897]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Ты ответы на свои собственные вопросы читаешь?

https://www.sql.ru/forum/actualthread.aspx?bid=37&tid=47235

Обрати внимание на строку SET PATH

Кроме того, в самом проекте, если есть ручное открытие баз данных и таблиц, то должно быть открытие БЕЗ указания пути доступа, например:

USE MyTable.dbf

Но ни в коем случае не

USE C:\MyProj\Data\MyTable.dbf

Вот из-за таких строк и возникают проблемы.
5 сен 03, 14:33    [327909]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
sigarilla
Member

Откуда:
Сообщений: 28
конечно я не прописываю полный путь, базы я цепляю через дата энвиронмент
5 сен 03, 14:36    [327919]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
sigarilla
Member

Откуда:
Сообщений: 28
вот к примеру , у меня есть объект грид, рекорд соерс у него таблица fio, как мне указать путь до нее?
я пишу
ThisForm.Grid1.RecordSource=".\fio"
мне вываливается ошибка [alias "fio" not found]....
5 сен 03, 14:52    [327954]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
АлександрК
Member

Откуда: Белгородская обл.
Сообщений: 121
мне вываливается ошибка [alias "fio" not found]....

В help по поводу ошибки сказано:

Alias is not found. (13)
[Псевдоним не найден]
Вы попытались задать псевдоним, который не был определен. Такой псевдоним в настоящий момент не используется.

Т.е. сначала нужно открыть таблицу командой USE, а потом присваивать RecordSource

USE Fio ALIAS Fio IN 0
ThisForm.Grid1.RecordSource = "Fio"

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

Почитай здесь: http://kodu.neti.ee/~juri4/vfp60/de_faq_ru.htm

Цитата:
1. Пути к свободным таблицам и к базам (пути к таблицам, входящим в базу храняться в базе) жестко задаются при разработке. Значит, при переносе проги к пользователю надо будет их поправить на те, которые будут у пользователя. Сделать это можно изменив перед открытием таблиц свойства курсоров cursorsource (для свободных таблиц) и database (для таблиц, входящих в базу) на реальный путь к таблице/базе (вроде как еще есть способ определить пути через set path, но я им не пользовался, поэтому описывать его не буду). Каким образом и в какой момент можно установить настоящие пути:
- в событии ДЕ.beforeopentables
- в событии LOAD формы (предварительно установив в дизайнере свойство ДЕ.autoopentables

А вообще, если что-либо не понятно, попробуй для начала почитать help.
5 сен 03, 15:13    [328004]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Опять придется лекцию прочитать :)

Рекомендации по хранению файлов проекта и обращению к ним.

Есть старое правило - никогда не хранить рабочие файлы вместе с исполняемыми. Например, документы, создаваемые в Word по умолчанию хранятся в специальной папке "Мои документы", в то время как сама программа Word расположена в одном из каталогов внутри папки "C:\Programm Files".

Применительно к FoxPro это означает, что надо создать отдельную папку для хранения собственных проектов. Например:

C:\ProjVFP\MyProj

Т.е. предполагается, что в папке C:\ProjVFP может находится несколько папок с разными проектами. Тот проект с которым Вы в данный момент работаете находится в подкаталоге MyProj

Теперь следует разделить файлы, которые будут созданы в проекте. Ведь Вы создаете самые разные файлы: Таблицы, Формы, Отчеты, классы и т.п. Если их распологать в одной куче (в одной папке), то очень легко запутаться.

Стандартым способом разделения файлов является их разделение по типу - таблицы в одну папку, формы в другую, классы в третью и т.п.

У этого способа есть существенный недостаток - при большом количестве файлов найти нужный становится очень проблематично. Лично я предпочитаю делить файлы по их логической принадлежности: Главные файлы, Файлы для работы с документами, Справочники и т.п. Хотя данные выделются в отдельную папку.

Итого, структура каталога проекта имеет примерно следующий вид:

MyProj\
MyProj\Data
MyProj\Forms
MyProj\Class
...

В папке Data расположены файл базы данных и файлы таблиц.

А что же расположено в коревом каталоге MyProj?

А там распологается во-первых сам файл проекта (MyProj.PJX, MyProj.PJT), а во-вторых очень нужный файл конфигурации Config.FPW. Собственно и все. Прочие файлы распологают в корневом каталоге только в случае особой необходимости

Config.fpw - это обычный текстовый файл. Его примерное внутреннее содержание следующее:

CODEPAGE=1251
TITLE=Мой новый проект
PATH=Data,Forms,Class
MODIFY PROJECT MyProj.pjx

Если запустить среду FoxPro с этим файлом конфигурации, то в заголовке основного окна появится вместо "Visual FoxPro" тот текст, который идет за ключевым словом TITLE, будут настроены пути доступа и открыт проект MyProj.pjx

Чтобы сделать запуск среды FoxPro с этим файлом кофигурации автоматическим создайте специальный ярлык где в сделайте следующие настройки (Это настройки для VFP6)

Файл "C:\Program Files\Microsoft Visual Studio\Vfp98\VFP6.EXE" -T -C"C:\ProjVFP\MyProj\config.fpw"
Рабочий каталог "C:\ProjVFP\MyProj\"

И открывайте свой проект через этот ярлык

Для чего в файле конфигурации указаны пути доступа.

Все дело в том, что после сборки проекта в один EXE, все файлы включенные внутрь проекта будут распологаться как бы в одной (текущей) папке, а не как они были расположены в проекте (в папках Forms, Class и т.п.). Это значит, что обращения типа

DO FORM Forms\MyForm.scx

Успешно работающие на этапе отладки перестанут работать в готовом EXE, поскольку там просто не будет папки Forms.

Вот для предотвращения подобных недоразумений и следует указывать путь доступа к файлам. Указание пути доступа позволяет писать команды так, как-будто файлы находятся в текущей директории, хотя физически это и не так. FoxPro сам их найдет по указанным путям доступа

DO FORM MyForm.scx

Впрочем, все это имеет принципиально важное значение не столько для файлов включенных внутрь проекта, сколько для файлов поставляемых вместе с проектом. В первую очередь для таблиц.

Здесь логика будет абсолютно та же самая. Например, для открытия таблицы надо будет использовать синтаксис

USE MyTable.dbf

Хотя физически таблицы на этапе отладки расположены в папке Data, но указывать путь доступа явно нет необходимости. FoxPro сам найдет эту таблицу ориентируясь на пути прописанные в файле конфигурации.

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

CODEPAGE=1251
PATH=Data

Путь доступа нужен на тот случай, если данные распологаются в каком-то другом каталоге, а не в том, где лежит собственно EXE (как оно обычно и бывает). Тогда встречая команды вроде

USE MyTable.dbf

FoxPro будет искать таблицы по путям указанным в файле конфигурации.
5 сен 03, 16:09    [328111]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
Андрей Давыдов
Guest
>DO FORM Forms\MyForm.scx

Фокс независимо от пути перед файлом подцепит файл включенный в exe, не смотря на то что файл может и существовать по указанному пути. Так было до восьмерки. В vfp8 появилась ф-я SYS(2450) - Application Search Path Order
5 сен 03, 16:41    [328188]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Это я привел для примера. На самом деле порядок поиска файлов достаточно сложен. В том числе одним из мест поиска будет являтся и сам файл EXE.

Подробнее о порядке поиске файлов написана в описании к командам PROCEDURE и FUNCTION. После окончания этого поиска вступает в силу поиск по пути указанному в SET PATH файла конфигурации сначала FoxPro, а потом среды Windows.
5 сен 03, 16:56    [328227]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
sigarilla
Member

Откуда:
Сообщений: 28
Пишу ему следующее....
в главной программе
USE Fio ALIAS Fio IN 0
в лоаде формы пишу
SELECT fio
в активации гида пишу
ThisForm.Grid1.RecordSource="fio"
и все одно ошибка
8 сен 03, 07:19    [329130]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
Ivan_kg
Member

Откуда: г. Москва
Сообщений: 35
Странно, обычно переименование папки проекта помогает.
может на другую (сетевую) тачку скопировать!?
8 сен 03, 07:38    [329135]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
АлександрК
Member

Откуда: Белгородская обл.
Сообщений: 121
в активации гида пишу
ThisForm.Grid1.RecordSource="fio"


Что стоит в RecordSourceType ?
8 сен 03, 07:55    [329137]     Ответить | Цитировать Сообщить модератору
 Re: Создал проект.....  [new]
sigarilla
Member

Откуда:
Сообщений: 28
.... с этим я разобрался, у меня в конце стояло close data...перенес в начало все заработало...

спасибо за помощь!
8 сен 03, 09:28    [329182]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить