Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Белые прямоугольники вместо Grid / 25 сообщений из 43, страница 1 из 2
18.09.2005, 20:41:47
    #33275566
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
Леди и джентельмены!
Объясните мне, пожалуйста, в чем дело.
Имеются 4 немодальные формы с гридами ReadOnly=.t.
В Forma1 используются 3 таблицы, которые прописаны по отдельности источниками у гридов в 3 остальных формах. Я спокойно могу работать со всеми четырьмя открытыми формами. Но стоит мне закрыть Forma1, как в трех оставшихся вместо гридов остаются пунтые прямоугольники. Я уже прописала на GotFocus в каждой из этих форм grid.Refresh - не помогает. Как можно исправить положение?
Благодарю.
...
Рейтинг: 0 / 0
18.09.2005, 21:21:07
    #33275597
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
Сделать так, чтобы первая форма не закрыва/уничтожала те таблицы, которыми пользуются остальные формы.
Боле подробно можно ответить после получения информации о способе открытия/закрыти таблиц.
...
Рейтинг: 0 / 0
18.09.2005, 22:23:25
    #33275632
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
В каждой форме DE. Все. По клике на кнопке срабатывает THISFORM.RELEASE() либо форма стандартно закрывается при нажатии на "красную кнопку" в углу окна.
...
Рейтинг: 0 / 0
18.09.2005, 22:36:55
    #33275641
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
Лисонька, извини, но ты ответила не на тот вопрос, который я задал, а на совершенно другой. Я писАл про открытие/закрытие таблиц , а не форм . На эту тему надо внимательно изучить DE Forma1.
...
Рейтинг: 0 / 0
18.09.2005, 22:55:38
    #33275658
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
Sergey Sizov.Лисонька, извини, но ты ответила не на тот вопрос, который я задал, а на совершенно другой. Я писАл про открытие/закрытие таблиц , а не форм . На эту тему надо внимательно изучить DE Forma1.
Значит, моих знаний здесь недостаточно, я просто не знаю как ответить на поставленный вопрос. При создании формы в через конструктор нажимаю кнопку DE, там Add..., выбираю нужные мне таблицы или представления. Все, на этом мое участие закачивается. Попробовать проследить через Debugger, что где открывается/закрывается?
...
Рейтинг: 0 / 0
18.09.2005, 23:38:40
    #33275689
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
DE не пользуюсь, но всетаки - посмотри свойство DE AutoCloseTables - по умолчанию оно .T., что значит закрывать таблицы при закрытие формы или формсета. Поставь его в .F.
А закрывать нужные таблицы ручками, по выходу из формы
...
Рейтинг: 0 / 0
19.09.2005, 02:27:37
    #33275724
Komissar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
А DataSession у форм какая?
...
Рейтинг: 0 / 0
19.09.2005, 10:17:14
    #33275974
О_В_Д
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
Лисонька! Попробуйте в кажой из этих форм пставить DataSession Private. VFP будет создавать для каждой формы свою новую ДЕ. Проблема путсых grid должна решиться. Но такой шаг чреват пследствиями. Если в одной из форм вносятся в таблицу А новые записи, тогда в другой форме в этойже таблице А эти запписи наверняка окажутся не по order, а в конце грида. Да плюньте наконец на талицы, сделайте источником курсор. Судя по Вашему топику насчет алфавитного порядка к этому дело и идет
...
Рейтинг: 0 / 0
19.09.2005, 14:33:19
    #33276745
FoxLamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
2Лисонька!
Попробуйте перед закрытием формы1 оключать recordsource Gridов,
а потом включать его снова.
Я использую такую методику:

1. Отключаю источник данных thisform._grid1.recordsource=''
2. Делаю выборку Select ..... into cursor XXX или SQLEXEC(.....)
3. Подключаю источник thisform._grid1.recordsource='XXX'

Если не сделать п.1, то получим белые прямоугольники.
Правда у меня не используется DE и выставлена приватная сессия данных.
...
Рейтинг: 0 / 0
19.09.2005, 15:51:36
    #33277023
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
FoxLamer2Лисонька!
Попробуйте перед закрытием формы1 оключать recordsource Gridов,
а потом включать его снова.
Я использую такую методику:

1. Отключаю источник данных thisform._grid1.recordsource=''
2. Делаю выборку Select ..... into cursor XXX или SQLEXEC(.....)
3. Подключаю источник thisform._grid1.recordsource='XXX'

Если не сделать п.1, то получим белые прямоугольники.
Правда у меня не используется DE и выставлена приватная сессия данных.
Подход правильный, руками оно всегда надежнее, но... придется для всех колонок ControlSource восстанавливать. Что-то типа:
.Column1.ControlSource = "MyCursor.MyFiled1"
.Column2.ControlSource = "MyCursor.MyFiled2"
....
и так для всех столбцов

С уважением, Алексей.
...
Рейтинг: 0 / 0
19.09.2005, 17:13:08
    #33277291
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
Белый прямоугольник Grid означает что была закрыта таблица-источник для этого Grid. Разумеется, Refresh тут уже не поможет. "Поздно пить Боржоми...".

Если Вы работаете в Default DataSession (это настройка по умочанию) и оставлены опять же по умолчанию настройки DataEnvironment -

AutoOpen Tables = .T.
AutoClose Tables = .T.

То происходит примерно следующее:

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

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

"Штатное" (наиболее распространенное) решение - это использовать для каждой формы Private DataSession.

Но тут есть ряд особенностей:

1. Часть настроек автоматически сбрасываются в значение по умолчанию при открытии Private DataSession. Список этих настроек можно посмотреть в описании к команде SET DataSession. Т.е. их нужно заново настраивать при открытии форм в Private DataSession

2. Изменения, сделанные в одной DataSession становяться "видны" в другой DataSession не сразу, а спустя некоторый интервал времени. По умолчанию - через 5 секунд.
...
Рейтинг: 0 / 0
19.09.2005, 17:46:29
    #33277357
FoxLamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
2 Aleksey-K
Подход правильный, руками оно всегда надежнее, но... придется для всех колонок ControlSource восстанавливать. Что-то типа:
.Column1.ControlSource = "MyCursor.MyFiled1"
.Column2.ControlSource = "MyCursor.MyFiled2"
....
и так для всех столбцов


Не обязательно, если в курсор выбирать только нужные поля в нужной последовательности...))
...
Рейтинг: 0 / 0
19.09.2005, 22:57:04
    #33277653
Лисонька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
Благодарю всех, кто откликнулся!
Точно, в Private с добавлением новых записей ерунда получается.
Подключать вновь ControlSource попробую, но сейчас попытаюсь перевести все источники курсоры. Таблицы здесь на тысячу с небольшим записей, после добавления новой записи будет делаться заново выборка и обновление грида. Хотя... а наверно при этом тоже должен выходить пустой прямоугольник, ведь старый источник-курсор уничтожается... и все-таки указывать ControlSource опять...
Что ж, дети спят, впереди ночь - буду эксперементировать.
Еще раз огромное спасибо за советы!

З.Ы. А почему лучше не пользоваться DE, а открывать все строками кода?
...
Рейтинг: 0 / 0
20.09.2005, 09:08:42
    #33277846
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
>А почему лучше не пользоваться DE, а открывать все строками кода?
Потомучто в этом случа можно полностью контролировать процесс открытия таблиц, их наличия на диске, наличие индексов и прочей фигни. Что через DE делается значительно сложнее или ваще не делается
...
Рейтинг: 0 / 0
20.09.2005, 11:30:58
    #33278228
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
BurnПотомучто в этом случа можно полностью контролировать процесс открытия таблиц, их наличия на диске, наличие индексов и прочей фигни. Что через DE делается значительно сложнее или ваще не делается
Следует только иметь в виду, что для подавляющего большинства задача все это не требуется.

DE не используют либо полные ламеры, которые не знают, что такое вообще есть, либо сильно крутые профессионалы, которые предпочитают полную управляемость всеми процессами. Ну, и при определенных типах задача использование DE проблематично.

Т.е. использование DE в большинстве случаев вполне оправдано и целесообразно. Надо только понимать их ограничения.
...
Рейтинг: 0 / 0
20.09.2005, 11:50:02
    #33278299
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
замечание для локальных данных

я не понимаю вообще для чего люди
вообще передергивают открытые таблицы
(открывают, а затем закрывают таблицы)
поработал в мск 3 мес в одной конторе
там постоянные use в коде
и понял, что так нельзя никогда писать !!!!
(голова кругом идет проверять открыта или нет таблица)
вспоминаю как страшный сон (еще в сети и паковали когда хотели)
я пишу на фоксе 11 лет, такого не видел и за это ...
извините потом холодным обливался, когда пак в сети писал
(мне странно когда люди не умеют работать при наличии удаленных записей)
тем более извините когда форма тащит данные,
ну это .... я не понимаю такой подход

я даже для больших задач (с локальными данными)
при старте приложения открываю сразу все необходимые таблицы
(очень часто одни и те же в нескольких раб.областях с разными индексами)
(кстати в ненавистной мне 1С так делают)

и все, данные живут,
я не задумываюсь где их брать и как открывать
приучился писать без паков и запов и эксклюзива
для локальных данных стараюсь использовать только реляции
...
Рейтинг: 0 / 0
20.09.2005, 11:51:13
    #33278306
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
замечание для локальных данных

я не понимаю вообще для чего люди
вообще передергивают открытые таблицы
(открывают, а затем закрывают таблицы)
поработал в мск 3 мес в одной конторе
там постоянные use в коде
и понял, что так нельзя никогда писать !!!!
(голова кругом идет проверять открыта или нет таблица)
вспоминаю как страшный сон (еще в сети и паковали когда хотели)
я пишу на фоксе 11 лет, такого не видел и за это ...
извините потом холодным обливался, когда пак в сети писал
(мне странно когда люди не умеют работать при наличии удаленных записей)
тем более извините когда форма тащит данные,
ну это .... я не понимаю такой подход

я даже для больших задач (с локальными данными)
при старте приложения открываю сразу все необходимые таблицы
(очень часто одни и те же в нескольких раб.областях с разными индексами)
(кстати в ненавистной мне 1С так делают)

и все, данные живут,
я не задумываюсь где их брать и как открывать
приучился писать без паков и запов и эксклюзива
для локальных данных стараюсь использовать только реляции
...
Рейтинг: 0 / 0
20.09.2005, 12:08:39
    #33278373
О_В_Д
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
Народ! тогда скажите, а не прощ ли открыть единую для всех и вся DE в топ форме и не использовать ни каких DE в формах ин топ левел - все, что надо уже открыто? А для конкретных ситуаций использовать курсоры. :-)
Лажа или сойдет для проекта?
...
Рейтинг: 0 / 0
20.09.2005, 12:11:22
    #33278381
AKI
AKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
alex11100

я даже для больших задач (с локальными данными)
при старте приложения открываю сразу все необходимые таблицы
(очень часто одни и те же в нескольких раб.областях с разными индексами)
(кстати в ненавистной мне 1С так делают)



когда у Вас слетят заголовки открытых таблиц, вы так не будете делать
...
Рейтинг: 0 / 0
20.09.2005, 12:11:42
    #33278383
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
alex11100я не понимаю вообще для чего люди
вообще передергивают открытые таблицы
(открывают, а затем закрывают таблицы)
Объясняю. Если объект не используется в данный момент - его логично закрыть. Накладные расходы на открытие/закрытие таблиц настолько ничтожны, что об этом можно вообще не думать

alex11100поработал в мск 3 мес в одной конторе
там постоянные use в коде
и понял, что так нельзя никогда писать !!!!
(голова кругом идет проверять открыта или нет таблица)
вспоминаю как страшный сон (еще в сети и паковали когда хотели)
я пишу на фоксе 11 лет, такого не видел и за это ...
извините потом холодным обливался, когда пак в сети писал
(мне странно когда люди не умеют работать при наличии удаленных записей)
тем более извините когда форма тащит данные,
ну это .... я не понимаю такой подход
Вы сделали неверный вывод на основании "криво" написанной программы. FoxPro очень снисходительно относиться к ошибкам программистов. Как следствие, огромное количество программ имеет настолько "кривой" код, что просто диву даешся, как это вообще работает.

alex11100я даже для больших задач (с локальными данными)
при старте приложения открываю сразу все необходимые таблицы
(очень часто одни и те же в нескольких раб.областях с разными индексами)
(кстати в ненавистной мне 1С так делают)
А смысл. Это как раз совершенно бессмысленная растрата ресурсов.

alex11100и все, данные живут,
я не задумываюсь где их брать и как открывать
Уверяю Вас, при использовании DE все происходит абсолютно также. Не надо задумываться где брать и как открывать (при грамотной настройке, разумеется). DE сам все откроет и сам же закроет, когда надобность отпадет

alex11100приучился писать без паков и запов и эксклюзива
для локальных данных стараюсь использовать только реляции
А вот это уже чистое "извращение". Это значит, отказаться от memo-полей (они требуют PACK), отказаться от триггеров, от целой кучи команд, которые могут автоматически создавать записи. Т.е. Вы сознательно отбросили массу возможностей FoxPro.

Другое дело, что команды PACK не надо использовать непосредственно в рабчей проге. Это должно быть вынесено в отдельную служебную процедуру. Также как создание резервных копий, переиндексация, проверка целостностности базы данных
...
Рейтинг: 0 / 0
20.09.2005, 12:16:17
    #33278398
AKI
AKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
О_В_ДНарод! тогда скажите, а не прощ ли открыть единую для всех и вся DE в топ форме и не использовать ни каких DE в формах ин топ левел - все, что надо уже открыто? А для конкретных ситуаций использовать курсоры. :-)
Лажа или сойдет для проекта?

я бы Вам посоветовал глянуть в сторону КС технологий...
сделали селект из таблицы.. и работайте себе с курсором.. и так далее...
...
Рейтинг: 0 / 0
20.09.2005, 12:26:28
    #33278443
О_В_Д
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
Akiя бы Вам посоветовал глянуть в сторону КС технологий...
Пардон, КС - это клиент-сервер или что-то другое?
...
Рейтинг: 0 / 0
20.09.2005, 12:31:46
    #33278466
FoxLamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
2 ВладимирМ
DE не используют либо полные ламеры, которые не знают, что такое вообще есть, либо сильно крутые профессионалы, которые предпочитают полную управляемость всеми процессами. Ну, и при определенных типах задача использование DE проблематично.


DE не используют еще и те, кто не использует за основу в своих программах конструкцию DO FORM..
В форме, созданной на основе класса, DE просто нет.

Я, наверное, ламер, который знает, что есть DE, но не использую ее, так как мне больше нравится другая конструкция запуска формы:



Lparameters tcClass, tcClassLib, tcParamString

Local loForm

loForm = .NULL.

If EMPTY(tcParamString)
loForm = NEWOBJECT(tcClass,tcClassLib,'')
Else
loForm = NEWOBJECT(tcClass,tcClassLib, '', &tcParamString)
Endif

if vartype(loForm) == 'O'
loForm.Show
Endif
Else
Return loForm
EndIf
...
Рейтинг: 0 / 0
20.09.2005, 12:56:56
    #33278572
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
вы ребят наверное для одного компа и одного стола и делаете
а если б для локальных сетевых задач -
то и писали б по другому
и придумали б чего

а так лано - юзайте

от того что юзер по сети отвалится от открытой таблицы
я за 10 лет ни разу не увидел разрушения
и ресурсов не перекушивает даже открывающийся в 500 метров табл

все выше сказанное для локальных данных !!!!
...
Рейтинг: 0 / 0
20.09.2005, 13:00:52
    #33278592
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Белые прямоугольники вместо Grid
вы ребят наверное для одного компа и одного стола и делаете
а если б для локальных сетевых задач -
то и писали б по другому
и придумали б чего

а так лано - юзайте

от того что юзер по сети отвалится от открытой таблицы
я за 10 лет ни разу не увидел разрушения
и ресурсов не перекушивает даже открывающийся в 500 метров табл

все выше сказанное для локальных данных !!!!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Белые прямоугольники вместо Grid / 25 сообщений из 43, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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