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

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

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

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

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

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

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

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

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

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

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

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

А лучше прислать сюда приложением кусок проекта с формами и таблицами, где происходит непонятная блокировка, ибо неисповедимы пути программера, и ошибки могут быть где угодно. А тогда умные люди разберутся и ответят по существу.
...
Рейтинг: 0 / 0
Читал про DataEnvironment ничего не понял
    #36338598
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описание команды 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
Читал про DataEnvironment ничего не понял
    #36338674
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если таблицы открываю не через DataEnvironment, на примере таблицы fl
IF USED("fl")
SELECT fl
ELSE
SELECT 0
USE ("..\DBFS\fl.dbf") IN 0 SHARED AGAIN ALIAS fl
ENDIF
...
Рейтинг: 0 / 0
Читал про DataEnvironment ничего не понял
    #36338793
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Местами администратор,

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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