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

Откуда:
Сообщений: 409
Коллеги!

Есть форма Ф, у нее ДЕ - DataEnvironment.
В ДЕ, перед стартом формы Ф, должна появиться таблица Т.
После закрытия формы Ф из ее ДЕ таблица Т должна быть удалена.
Следует отметить, что и без добавления-удаления программа работает правильно, но, я думаю, что это некрасиво...

Как это сделать программно?
25 окт 18, 17:45    [21715169]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
Dima T
Member

Откуда:
Сообщений: 13347
Пропиши в DT.BeforeOpenTables()
lcTable = 'my_table' && как-то задаем таблицу
use in 0 &lcTable alias Table_T
25 окт 18, 18:09    [21715209]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
UAP
Member

Откуда:
Сообщений: 409
Dima T,

Я попробую, а как удалить?
25 окт 18, 18:13    [21715214]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
Dima T
Member

Откуда:
Сообщений: 13347
Если хочешь сделать генератор формы с заполнением DE, то изучай aSelObj()
Например
			if aSelObj(laDE,2)> 0
				loDe=laDE[1]
				with loDE
					.WriteMethod('BeforeOpenTables', '...')
					.AddObject('CA', 'CursorAdapter')
					with .CA
					    ...
25 окт 18, 18:14    [21715216]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
Dima T
Member

Откуда:
Сообщений: 13347
UAP
Dima T,

Я попробую, а как удалить?

что удалить? Это просто код чтобы открыть нужную таблицу(ы) до того как начнется инициализация контролов формы, которые скорее ссылаются на поля таблицы.
25 окт 18, 18:17    [21715223]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
UAP
Member

Откуда:
Сообщений: 409
Dima T,

Удалить из ДЕ вышеназванную таблицу
25 окт 18, 18:19    [21715225]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
Dima T
Member

Откуда:
Сообщений: 13347
UAP
Dima T,

Удалить из ДЕ вышеназванную таблицу

21715216 перебирай объекты внутри loDE, найди и удали ненужный.
25 окт 18, 18:21    [21715227]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
UAP
Member

Откуда:
Сообщений: 409
Dima T,

Спасибо большое! Я проверил, предложенное вами решение полностью удовлетворяет моим эстетическим потребностям!
25 окт 18, 18:22    [21715228]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1401
UAP
Dima T,

Спасибо большое! Я проверил, предложенное вами решение полностью удовлетворяет моим эстетическим потребностям!
Осталось только выяснить задлянафига сей геморрой нужен?
26 окт 18, 09:00    [21715612]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
UAP
Member

Откуда:
Сообщений: 409
Sergey Sizov,

Эта тема все о том же см. https://www.sql.ru/forum/1302972/internal-consistency-error

Очень плохо работает связка Форма (модальная)+ Грид+Таблица, открываемая НЕ по алиасу.

Вот и приходится изворачиваться.

Возможно, я не проверял, проще, без ДЕ, открыть таблицу с неким алиасом ДО открытия формы и, чтобы Грид обращался

к таблице по алиасу
26 окт 18, 09:09    [21715620]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1401
UAP,
трындец...

Что такое "таблица, открываемая по алиасу"? Это открытие таблицы сразу с установкой ей алиаса? Если да, то при чем тут DE?
Таблица легко и свободно открывается в методе Load (собственно и предназначенном для открытия таблиц) сразу с нужным алиасом без каких-либо танцев с бубнами. Код соответствующий тут уже показали. Зачем тут велосипед с треугольными колесами?
26 окт 18, 09:21    [21715633]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
UAP
Member

Откуда:
Сообщений: 409
Sergey Sizov,
Пожалуйста, дайте ссылку, чтобы я не танцевал с бубном, как вы выразились
26 окт 18, 09:25    [21715639]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7819
Data Environment смотрит на окружение данных и если все таблицы уже открыты, то ничего повторно не открывается. "Смотрит", естественно, по алиасам, поскольку среда FoxPro идентифицирует таблицы в рабочих областях именно по их алиасам

Как следствие, если Вы не хотите, чтобы Data Environment автоматически открывал таблицы, то Вы должны их открыть самостоятельно. В методе BeforOpenTables() объекта DataEnvironment

О чем Вам и написал Dima T сразу же после Вашего вопроса. Обратите внимание на опцию alias в команде use. Именно это значение Вам нужно корректно задать
26 окт 18, 12:04    [21715853]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
UAP
Member

Откуда:
Сообщений: 409
Уважаемый ВладимирМ!

Спасибо за внимание к моему вопросу...

Очень жаль, что конструкция

This.Grid1.RecordSource = ""
This.Grid1.RecordSourceType = 0
This.Grid1.RecordSource = 't.dbf'

работает плохо.

А жаль...
Она делает некоторые работы более понятными и естественными
26 окт 18, 12:22    [21715899]     Ответить | Цитировать Сообщить модератору
 Re: Программная модификация DataEnvironment  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7819
FoxPro работает в своей среде и пытаться заставить его работать как-то по другому - это искать себе приключения, которые Вы с успехом и нашли

Не трогайте значения по умолчанию без понимания того, на что это повлияет. Ничего "понятного" Вы не получите. FoxPro - это язык. Пусть и программирования, но язык. У него слова могут обозначать вовсе не то, что те же самые слова обозначают в других языках программирования. Другая языковая среда - другие "понятия", пусть и обозначенные тем же самым словом

Так что, меняя значения по умолчанию, Вы только вводите самого себя в заблуждение. Вы как раз делаете работу не понятной и не естественной с точки зрения FoxPro. Ну, грубо говоря, лезете со своим уставом в чужой монастырь.
26 окт 18, 14:53    [21716194]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить