Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Читал про DataEnvironment ничего не понял / 17 сообщений из 17, страница 1 из 1
29.11.2009, 22:46
    #36337937
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
Ночи доброй !..

Вот маленькая задачка, а бился целый день, так и не вышло...
Две формочки в одном проекте (там же одна БД), ни в одной из форм DataEnvironment нет (в смысле
не добавлял туда что-либо)... запускаю одну форму, там OPEN DATABASE .... SHARED, потом USE
table1 shared in 0, из первой формы запускаю вторую, в которой тож самое и для той же таблицы,
как только пытаюсь INSERT в таблицу, дает "file is in use"

принтил и DBC() и ISEXCLUSIVE() все нормально, все доступно (c datasession и 1 и 2 делал)....
в чем тут загвоздка ?

про то что insert требует монопольного доступа читал, но тогда должно даваться другое сообщение,
наверное....

в итоге, и такой вопрос, когда подобным образом осуществляется доступ к таблицам что происходит
с этим странным dataenvironment ?
...
Рейтинг: 0 / 0
29.11.2009, 23:32
    #36337987
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
_usa__83_insert требует монопольного доступа
И где это написано?

INSERT SQL блокирует таблицу (заголовок) автоматически, принудительная блокировка не нужна. Грабли где-то в другом месте.
...
Рейтинг: 0 / 0
30.11.2009, 00:28
    #36338028
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
igorbik,

где написано эт я выложу ссылку (сейчас чтот не могу найти), мне интересно в принципе такие действия допустимы?

форма (без объектов dataenv) там Open database, use table shared ... при этом ведь файл таблицы не
должен блокироваться, а при попытке из другой формы, дает именно "file is in use"....

хммм.. правда эта пресловутая табличка участвует в связях БД (она родительская), мож это влияет?
...
Рейтинг: 0 / 0
30.11.2009, 06:07
    #36338123
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
Вероятно в виду имется навигационная команда INSERT, тогда действительно нужна монополия.
...
Рейтинг: 0 / 0
30.11.2009, 12:08
    #36338560
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
_usa__83_igorbik,

где написано эт я выложу ссылку

Интересно, посмотрим.

Со своей стороны выкладываю свою ссылку:
http://www.book-foxpro.com/index.php?nma=fp_20&fla=index3
...
Рейтинг: 0 / 0
30.11.2009, 12:10
    #36338568
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
igorbik,

А лучше прислать сюда приложением кусок проекта с формами и таблицами, где происходит непонятная блокировка, ибо неисповедимы пути программера, и ошибки могут быть где угодно. А тогда умные люди разберутся и ответят по существу.
...
Рейтинг: 0 / 0
30.11.2009, 12:21
    #36338598
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
Описание команды Insert-SQL по русски. Эксклюзивного доступа не требуется

INSERT - SQL Команда

Далее читаем описание ошибки с текстом "file is in use". Возможны 3 варианта

Файл используется (Ошибка 3)

Файл используется другим пользователем (Ошибка 108)

Файл используется в другом сеансе данных (Ошибка 2191)

Все эти ошибки связаны не с командой Insert-SQL как таковой, а с попыткой открыть таблицу повторно. Вот эта самая команда, скорее всего подобную ошибку и порождает.

Код: plaintext
USE table1 shared in  0 

Попробуйте в командном окне два раза подряд написать

Код: plaintext
1.
2.
USE table1 shared in  0 
USE table1 shared in  0 

На второй команде и увидите сообщение об ошибке.

Идея DataEnvironment в том и заключается, что не надо писать код открытия таблиц . По умолчанию, таблицы будут открыты сами. Автоматически.

Можно, конечно, отключить этот автоматизм, через настройку DataEnvironemtn.AutoOpen = .F. Но тогда Вы должны, во-первых, очень внимательно почитать HELP по команде USE. А, во-вторых, следует понимать, как вообще организована работа с таблицами в FoxPro. Т.е. понять, что есть "рабочая область".

Таблица
...
Рейтинг: 0 / 0
30.11.2009, 12:48
    #36338674
Местами администратор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
Если таблицы открываю не через DataEnvironment, на примере таблицы fl
IF USED("fl")
SELECT fl
ELSE
SELECT 0
USE ("..\DBFS\fl.dbf") IN 0 SHARED AGAIN ALIAS fl
ENDIF
...
Рейтинг: 0 / 0
30.11.2009, 13:24
    #36338793
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
Местами администратор,

Пасиба всем, разобрался...

Косяк действительно был в другом месте, сразу не обратил внимания на то что при выдаче INSERT
выскакивает окошко "Open", просто в INSERTE был не верное выражение для таблицы.... во как

а в остальном, работает как надо и двукратный USE не приводит к ошибкам....


Вот другой вопрос, если позволите:

чем-нибудь кроме PACK физически удалить записи можно? так как таблицы расшарены, то на выдачу PACK говорит что требуется ЭКСКЛЮЗИВНЫЙ доступ
...
Рейтинг: 0 / 0
30.11.2009, 13:26
    #36338799
Читал про DataEnvironment ничего не понял
_usa__83_чем-нибудь кроме PACK физически удалить записи можно? Нет. И не нужно.так как таблицы расшарены, то на выдачу PACK говорит что требуется ЭКСКЛЮЗИВНЫЙ доступВот именно поэтому удалять физически не надо. Надо воспользоваться штатными методами без физического удаления. См. set delete on
...
Рейтинг: 0 / 0
01.12.2009, 08:14
    #36340197
Местами администратор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
если только все записи снести -zap
...
Рейтинг: 0 / 0
01.12.2009, 08:15
    #36340199
Местами администратор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
требует так же монопольного доступа..., в результате - "чистое поле"
...
Рейтинг: 0 / 0
04.12.2009, 11:21
    #36347873
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
Другой вопрос, но все про тот же dataenvironment..

обратил внимание на тот факт что при добавлении таблиц (находящихся в одной БД) в
dataenvironment получается неприятная картина:

есть tab1, tab2, tab3, причем и tab1 и tab2 являются родительскими по отношению к tab3 (tab1 1:M
tab3, tab2 1:M tab3)....

так вот, при добавлении такого набора таблиц в dataenvironment в любой последовательности,
теряется одна из связей, т.е. рисуется либо связь tab1-<tab3 или tab2-<tab3, но никак не обе...

в дизайнере самой БД все связи присутствуют, более того на них висят правила ссылочной
целостности и генерация ri процедур проходит успешно...

быть может что-т неверно делаю?
...
Рейтинг: 0 / 0
04.12.2009, 11:32
    #36347902
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
Вы путаете понятия. То, что настривается в контейнере базы данных не имеет вообще никакого отношения к тому, что настривается в DataEnvironment. Это разные виды связей

Связи и отношения между таблицами
...
Рейтинг: 0 / 0
04.12.2009, 12:47
    #36348149
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
ВладимирМ,

Угу, прочитал.. Но все же не понял, почему дизайнер dataenvironment при добавлении подчиненной таблицы (эт которая в "постоянной связи" участвует) в dataenvironmet и наличие там родительской таблицы автоматически рисует между ними связь (которая соответствует постоянной связи)

а в случае когда добавляются две родительские таблицы и третья (подчиненная по отношению к первым двум в смысле что есть "постоянные связи") то автоматически рисуется только одна связь (соответствующая одной из "постоянных связей".... а не обе?
...
Рейтинг: 0 / 0
04.12.2009, 12:59
    #36348199
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
Надеюсь, Вы все-таки поняли, что то, что настроено в контейнере базы данных не есть то, что отображается в DataEnvironment?

А теперь поставьте себя на место разработчиков FoxPro. Есть связь в контейнере базы данных. В DataEnvironment добавляют таблицы. В каких случаях и по каким правилам следует ПРЕДЛОЖИТЬ установить связь в DataEnvironment? Заметьте, не "обязать", а именно "предложить"! Пользователь может и не согласится с этим "предложением".

Да, надеюсь, Вы знаете, что связи в DataEnvironment можно удалять и настраивать вне зависимости от автоматического их создания? Т.е. вне зависимости от связей в контейнере базы данных. Также, надеюсь, понимаете, что в большинстве случаев эти связи вообще не нужны для нормального отображения данных на форме?

И еще, ответьте на вопрос "ЗАЧЕМ"? Зачем Вам нужны эти связи в DataEnvironment формы? Что Вы с ними собираетесь делать?
...
Рейтинг: 0 / 0
04.12.2009, 20:58
    #36349418
_usa__83_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Читал про DataEnvironment ничего не понял
ВладимирМ,

Да, вот чуть позже все же осознал... пардон))
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Читал про DataEnvironment ничего не понял / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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