|
CursorAdapter не обновляет поля(date) на MySQL- Прошу помочь
|
|||
---|---|---|---|
#18+
VIVA_CA, Уважаемый Учитель, грустно стало без общения! Хочу отказаться от создания СА в DE и по Вашей методике перейти в LOAD. Если можно – подробнее по пунктам( как в последнем ответе) : Я создаю Class CA штатным билдером и на его основе затем в DE используя This.ca1=This.NEWOBJECT('ca1', 'sqlCursor', 'mylib') привязываю к конкретной форме. ( Сейчас уже все ок! даже с датами) Но если весь текст настройки переношу в LOAD (простым копированием) - при инициализации формы Выдает:( из Help) Объектный класс недопустим для этого контейнера (Ошибка 1744) Вы попытались добавить объект, как член родительского объекта, методом AddObject . Он не может быть добавлен, потому что класс объекта как члена, не может быть членом объекта родительского класса. Например, Вы не можете добавить объект Grid к объекту PageFrame. Это понятно! Но как выкрутиться? При This.ca1=CREATEOBJECT("CursorAdapter")- не ругаетя – но естественно это уже другой СА. Я так понимаю – вы изначально создаете СА в DE чтобы отладиться? Как Вы писали раньше – создал свойство CA1(все описание его по умолчанию) на форме и в LOAD ( или это сделает утилита tr_cad ?) Как сделать привязку к элементам формы( Что под этим понимается - указание конкретных полей?) Как запускается (откуда) ? tr_cad И какие еще учесть нюансы CA после отработки tr_cad, копирования из буфера в LOAD, и удаления из DE? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2012, 12:38 |
|
CursorAdapter не обновляет поля(date) на MySQL- Прошу помочь
|
|||
---|---|---|---|
#18+
VIVA_CAБоюсь утомить, но хотелось бы узнать Ваше мнение – по каким причинам не рекомендуют использовать среду DE? (на сайтах просто не рекомендуют использовать) Основная причина - банальное непонимание! Непонимание даже не столько собственно DE, сколько общих принципов построения приложения. Разумеется, есть ситуации, с которыми DE справиться не может или может очень "экзотическими" способами. Но в подавляющем большинстве проектов подобных ситуаций просто не возникает. Собственно, главная претензия к DE - это невозможность (или большая сложность) программного управления настройками DE на этапе выполнения приложения. Вопрос о том, а зачем собственно нужно эта самое программное управление и нельзя ли обойтись без него даже не поднимается. Вот хочется и все! С другой стороны, то, что делает DE - очень просто выполнить программно. Это буквально несколько строк кода. Вот и появляется рекомендация не использовать DE совсем. А это неправильно. DE - это очень удобный инструмент для "визуальной" настройки объектов формы. Ну, например, чтобы указать таблицу-источник объекта, можно выбрать из раскрывающегося списка. Но только в том случае, если эта таблица включена в DE. VIVA_CAи еще - как обмануть DE не закрывать CA при закрытии формы – AutoCloseTables c CA не срабатывает (хотя уже перевожу все в LOAD формы) Вот это как раз и является типичной ситуацией непонимания общих принципов построения приложения. Если Вам нужен объект вне формы, то и создавать его надо вне формы (до вызова формы), а не бороться с последствиями! Только вот, Вы предварительно пробовали понять, а ЗАЧЕМ Вам нужен CA после закрытия формы? Действительно ли нужен именно CA, а не что-то другое? VIVA_CAХочу отказаться от создания СА в DE и по Вашей методике перейти в LOAD. Зачем? Какая у Вас возникла проблема, которую невозможно решить в рамках использования DE? Хочу оставить CA после закрытия формы - это не проблема. Это выбранный Вами способ решения проблемы. А сама проблема-то в чем? Зачем Вам понадобился CA, созданный для работы в конкретной формы вне этой формы? На всякий случай напомню, что событие Object.Load выполняется непосредственно ПЕРЕД созданием экземпляра объекта Object. Т.е. в момент выполнения Form.Load собственно объекта Form еще не существует! Как следствие, невозможно как-то повлиять (создать, изменить) на свойства не существующего объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2012, 15:29 |
|
CursorAdapter не обновляет поля(date) на MySQL- Прошу помочь
|
|||
---|---|---|---|
#18+
Уважаеиый ВладимирМ, Большое спасибо за Ваши несколько резкие но справедливые ответы на мои предыдущие вопросы. Многие нюансы paботы с CA я переосмыслил в переписке с уважаеиым Sea_Cat и с Вами. Пока меня устраивает работа СА в DE. Но в большинстве ответов уважаемых метров на вопросы чайников проскальзывает совет переводить СА из DE в LOAD. В самом последнем моем запросе (!!! на 2-й стр.) я просил уважаемого Sea_Cat поделиться опытом. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2012, 18:10 |
|
CursorAdapter не обновляет поля(date) на MySQL- Прошу помочь
|
|||
---|---|---|---|
#18+
ВладимирМОсновная причина - банальное непонимание! Непонимание даже не столько собственно DE, сколько общих принципов построения приложения. Чтобы с пониманием подходить к работе с DE и CA, хочу порекомендовать циклы статей Юрия Шутенко по DE http://www.hot.ee/jurisfox/vfp60/de_01_ru.htm и по работе с СА http://kodu.neti.ee/~juri4/vfp60/ca_01_ru.htm . Также поиск по теме CursorAdapter на форуме FoxClub.ru даст много полезной информации. ВладимирМDE - это очень удобный инструмент для "визуальной" настройки объектов формы. От такого инструмента отказываться на этапе проектирования просто неразумно. Например, перетащив заголовок курсора из DE на форму, получаем заготовку грида, у которого все колонки уже привязаны к источнику данных, остается оформить заголовки, да отрегулировать ширину колонок. Также легко - перетаскиванием - создаются поля ввода TEXT. Когда визуальное проектирование формы закончено, закрываю редактор форм, запускаю tr_cad и указываю файл формы (.SCX). Затем снова запускаю форму, открываю LOAD и вставляю из буфера обмена программное описание всех СA. Остается удалить их из DE. В достаточно простых случаях - если в форме один - два СА - пусть они остаются в DE. Но если, к примеру, нужно при создании СА поменять SelectCmd - тут приходится работать с программной реализацией CA. То, что в событие LOAD невозможна передача параметров - не проблема. Нужную информацию для построения СА можно передать через класс-посредник (на худой конец - через глобальные переменные). Это только один из вариантов работы с СА. На этом форуме много своих примеров по работе с CA выкладывал прошелмимо , у него другой подход, тоже можно почерпнуть много полезного. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2012, 23:40 |
|
CursorAdapter не обновляет поля(date) на MySQL- Прошу помочь
|
|||
---|---|---|---|
#18+
Sea_Cat, Читаю с большим интересом статьи которые вы рекомендовали. Но хочется до конца разобраться с затронутой Вами темой. 1) Например, перетащив заголовок курсора из DE на форму – как это делается и что означает? Также легко - перетаскиванием - создаются поля ввода TEXT. - ? если можно подробнее! 2) Работа с tr_cad: Я создаю Class CA штатным билдером и записываю в бибилиотеку классов и на его основе затем в DE BeforeOpenTables: This.NEWOBJECT('ca1', 'sqlCursor', 'mylib') и дальше остальные свойства this.ca1.DataSource = gn_Soed и т.д. Закрываю форму Запускаю tr_cad – ругается на первой строчке Parameters n_frm (естественно тк не процедура) Ignore Scan For Alltrim(frm.Class) = 'cursoradapter' не выполняется условие- те не находит Визуально просмотрел и остальные поля таблицы frm - нет Я так понимаю надо использовать CREATEOBJECT("CursorAdapter")? Но теряется смысл ипользования созданного класса? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2012, 11:24 |
|
CursorAdapter не обновляет поля(date) на MySQL- Прошу помочь
|
|||
---|---|---|---|
#18+
VIVA_CA, что-то Вы совсем запутались. Зачем создавать объект в BeforeOpenTables ? И в чем смысл создания своего класса CA ? Так обычно поступают с визуальными объектами форм, создавая свои классы на основе стандартных, задавая общую цветовую схему, стиль оформления и т.п. А что общего можно прописать для свойств и методов СА ? Я рекомендую идти от простого к сложному. Почитайте статьи Юрия Шутенко - это как букварь по СА. Создайте тестовый проект и на простых примерах разберитесь, что и как работает. Начните с создания СА билдером в DE - без NEWOBJECT и промежуточных классов. Когда столкнетесь с ситуацией, когда невозможно что-либо реализовать в рамках DE - вот тогда и переходите к программному созданию СА. По поводу перетаскивания объектов из DE на форму - все очень просто. Откройте DE, найдите нужный Вам курсор, установите указатель мышки на заголовок курсора, нажмите левую кнопку и тяните на форму. Когда отпустите кнопку - будет Вам Grid. Точно также и с отдельными полями курсора. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2012, 13:33 |
|
|
start [/forum/topic.php?fid=41&msg=37881440&tid=1583570]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 179ms |
0 / 0 |