for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
  

Re: Научите работать с Data Environment
Crispy

Сообщений: 16854
Дата: 14.09.20 09:01:37
Вообще так по мелочам - много чего, если бы немного доработать - могло бы сегодня сделать фокспро едва ли не самым удобным средством разработки.
Вот скажем недавно взялся перелопатить один сам-для-себя проектик на лазарусе, и как же оно раздражало со всеми этими паскальными сложностями визуализации объектов, которые на фоксе, как бы оно странно ни прозвучало, были реализованы намного удобнее! Несмотря на всю уже моральную устарелость собственно VFP9. Т.е. как раз по мыслям - в древнем как бы по своей сути фоксе разные задумки были намного более удобные для программиста. Нежели во всех этих "современных" иных средах.
Как и сама структура языка - изначально гениальная. В отличие от всех прочих. Причем, самое удивительное - даже в отношении набрасывания визуального интерфейса!
Еще бы ему добавить чуть больше встроенных возможностей по более углубленной работе с графикой, вообще было бы просто таки супер.
Т.е. фокспро - намного более высокого уровня язык получается. При достаточной все еще компактности. Что для многих нужд - намного более удобно. Нежели закапываться в мелочах, как в сишных и прочих моделях именно с визуальным интерфейсом.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено: Crispy, 14.09.20 09:05
Ratings: 0 negative/1 positive

Re: Научите работать с Data Environment
lulgu

Сообщений: 1703
Дата: 14.09.20 11:19:04
Crispy
Igor Korolyov
По мнению разработчиков всё же более подходит для создания источников данных метод Load

Увы, тоже не совсем удачное для этого место. Из-за несколько странной реализации этого метода собственно в фокспро.
Когда-то давно, перебирая все загружаемые поочерредно методы, я обнаружил самое подходящее для создания источников - как раз таки в DE - в методе BeforeOpenTables. Который возможно единственный и имеет смысл использовать даже и без использования прочих возможностей DE, предлагаемых разработчиками.
Именно в этом методе скажем созданный курсор отлично затем цепляется к чему угодно - скажем без проблем становясь источником хоть того же грида.
Заполнять его разумеется можно и после - например в том же Init грида, что в принципе смотрится достаточно логично, ну можно и формы, если уж есть такая необходимость по какой-то причине.
В целом же, как мне кажется, все проблемы DE - из-за недоработки его на этапе последней их версии.

Можно еще добавить, что DE и объекты Cursor имеют свои Init-ы.

Откуда-то сохранился чей-то порядок загрузки формы:
  
  DATAENVIRONMENT.OPENTABLES  
  DATAENVIRONMENT.BEFOREOPENTABLES  
  FORM.LOAD  
  INIT FOR EACH CURSOR IN the DATAENVIRONMENT  
  DATAENVIRONMENT.INIT  
  INIT FOR EACH CONTROL IN the FORM  
  FORM.INIT  
  FORM.SHOW  
  FORM.ACTIVATE  
  FORM.REFRESH  
  WHEN FOR 1st CONTROL IN TABORDER  
  GOTFOCUS FOR 1st CONTROL IN TABORDER (IF it has one)
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
LUCIAN

Сообщений: 338
Откуда: Лида Беларусь
Дата: 15.09.20 10:21:52
Шутенко где то предлагал в Load формы вставлять такой код:
This.DataEnvironment.CloseTables  
  Local lni, loDEObject, lcCurrentDBCPath, lcNewDatabasePropValue  
  lcCurrentDBCPath=SYS(5)+SYS(2003)+'\'  
    
  For lni=1 To This.DataEnvironment.Objects.Count  
     loDEObject=This.DataEnvironment.Objects(lni)  
     If loDEObject.BaseClass=="Cursor"  
        If PEMSTATUS(loDEObject,"Database",0)  
           If Upper(Addbs(Justpath(loDEObject.Database)))!=Upper(lcCurrentDBCPath)  
              lcNewDatabasePropValue = ;  
                 Strtran(;  
                 loDEObject.Database,;  
                 Addbs(Justpath(loDEObject.Database)),;  
                 lcCurrentDBCPath;  
                 )  
              loDEObject.Database=lcNewDatabasePropValue  
             *!* Wait ;  
             *!*    loDEObject.Name + ;  
             *!*    [ is member of ]+;  
             *!*    loDEObject.Database ;  
             *!*    Window Timeout 2  
           Endif  
        Else && here i deal with a free table  
           If Upper(Addbs(Justpath(loDEObject.CursorSource)))!=Upper(lcCurrentDBCPath)  
              lcNewCursorSourcePropValue = ;  
                 Strtran(;  
                 loDEObject.CursorSource,;  
                 Addbs(Justpath(loDEObject.CursorSource)),;  
                 lcCurrentDBCPath;  
                 )  
              loDEObject.CursorSource=lcNewCursorSourcePropValue  
           Endif  
        Endif  
     Endif  
  Endfor  
  This.DataEnvironment.OpenTables
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
Igor Korolyov

Сообщений: 33823
Дата: 15.09.20 22:18:23
Crispy
Увы, тоже не совсем удачное для этого место. Из-за несколько странной реализации этого метода собственно в фокспро.
Когда-то давно, перебирая все загружаемые поочерредно методы, я обнаружил самое подходящее для создания источников - как раз таки в DE - в методе BeforeOpenTables. Который возможно единственный и имеет смысл использовать даже и без использования прочих возможностей DE, предлагаемых разработчиками.
Этот метод имеет смысл использовать только если используется сам DE - и как раз для "настройки" объектов в DE расположенных (обычно ограничиваются путями к таблицам/базам). Метод Load формы хоть и работает после данного, но до того как происходит "привязка" элементов управления к своим источникам данных - поэтому нет ни единой проблемы всю подготовку источников данных делать в Load. Есть лишь проблема в "заполнении" этих источников, т.к. зачастую для заполнения нужно знать какие параметры переданы извне в форму, а их, увы, можно получить только в Init самой формы - что уже слишком поздно для нормального открытия куросров, выполнения запросов и.т.д.
Если DE не используется (там нет объектов-курсоров), то и смысла в DE.BeforeOpenTables нет никакого.

LUCIAN
Шутенко где то предлагал в Load формы вставлять такой код:
Это требует отключения "автооткрытия" курсоров в DE (т.к. если курсор уже открыт, то поменять его CursorSource/Database не получится, да и бессмысленно). А сделать это при помощи суюклассирования нельзя. Т.е. настройку нужно производить для каждой scx формы в проекте отдельно. Да, в принципе можно делать эту програмно - даже несколько вариантов есть, но это всё уровень "мастеров приложения/построителей/генераторов-модификаторов кода" - для среднего/малого размера проектов это выглядело явным перебором. Кстати, если уж заморачиваться на построители/генераторы, то не проблема просто прописывать этот самый код в DE.BeforeOpenTables.
Лично я пользовался недокументировнным багом/фичей, которая позволяла "волшебным образом" заставить все пустые DE.BeforeOpenTables в проекте исполнять мой код. Т.е. через зад но сделал нечто типа "субклассирования DE".
Впрочем, для многих применений вообще не требуется шаманитиь с этими самыми путями к таблицам - можно обойтись тупым автоматическим поиском dbf в Default папке или по SET PATH - для малых/средних проектов это нормальный вариант (главное на время разработки использовать сугубо локальную копию таблиц/БД, чтобы в DE не прописывались абсолютные пути к файлам).


------------------
WBR, Igor
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
lulgu

Сообщений: 1703
Дата: 16.09.20 08:06:50
А в чем собственно проблема с DE, или без писанины с USE старперам некомфортно что-ли?
С этой известной ИК-проблемой передачи параметров через INIT - заведите глобальный объект goPublic класса EMPTY и храните в нем хоть тыщу своих параметров как свойства.
С субклассированием DE и прочее - заведите объект класса CUSTOM и обращайтесь к нему из DE.
Ratings: 3 negative/1 positive

Re: Научите работать с Data Environment
lulgu

Сообщений: 1703
Дата: 17.09.20 13:56:18
Логика домохозяйки - при проблемах с DE раскрасить нужно пост lulgu.
Ratings: 2 negative/1 positive

Re: Научите работать с Data Environment
of63

Сообщений: 19939
Откуда: Н.Новгород
Дата: 17.09.20 14:45:11
Закладки, чтобы долго не искать
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
lulgu

Сообщений: 1703
Дата: 17.09.20 15:00:39
of63
Закладки, чтобы долго не искать

С такими метками мимо поста поневоле не проскочишь.
Ratings: 2 negative/1 positive

Re: Научите работать с Data Environment
pasha_usue

Сообщений: 3448
Откуда: Е-бург
Дата: 18.09.20 16:53:34
lulgu
Логика домохозяйки - при проблемах с DE раскрасить нужно пост lulgu.
Просто с luglu дискутировать неинтересно. У неё аргументация бабкина.
Поэтому и красят, когда очередную чушь сморозит.
Ratings: 0 negative/2 positive

Re: Научите работать с Data Environment
lulgu

Сообщений: 1703
Дата: 18.09.20 19:05:05
Еще один художник, проснулся.
Хоть бы разок хоть что-то путное услужил.
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
lulgu

Сообщений: 1703
Дата: 18.09.20 19:31:07
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Остальное в поиске по "BeforeOpenTables".
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
pasha_usue

Сообщений: 3448
Откуда: Е-бург
Дата: 18.09.20 19:58:41
lulgu
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Остальное в поиске по "BeforeOpenTables".
И нахера? С native ďatabase ещё ничего, а с external - никак.
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
lulgu

Сообщений: 1703
Дата: 18.09.20 20:17:23
pasha_usue
lulgu
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Остальное в поиске по "BeforeOpenTables".
И нахера? С native ďatabase ещё ничего, а с external - никак.

Сам-то хоть понял, что написал?
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
sphinx

Сообщений: 28046
Откуда: Каменск-Уральски
Дата: 18.09.20 21:59:28
lulgu
У каждого свой DE.
У кого-то инструмент для домохозяек, у кого-то - для работы своя версия.

Посильно почистил карму. Но мало.


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку"..."(с)
Ratings: 2 negative/0 positive

Re: Научите работать с Data Environment
sphinx

Сообщений: 28046
Откуда: Каменск-Уральски
Дата: 18.09.20 22:03:03
pasha_usue
lulgu
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Остальное в поиске по "BeforeOpenTables".
И нахера? С native ďatabase ещё ничего, а с external - никак.

Пашка, подбирай выражения. Ты же на основном форуме.


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку"..."(с)
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
sphinx

Сообщений: 28046
Откуда: Каменск-Уральски
Дата: 18.09.20 22:08:22
lulgu
А в чем собственно проблема с DE, или без писанины с USE старперам некомфортно что-ли?
С этой известной ИК-проблемой передачи параметров через INIT - заведите глобальный объект goPublic класса EMPTY и храните в нем хоть тыщу своих параметров как свойства.
С субклассированием DE и прочее - заведите объект класса CUSTOM и обращайтесь к нему из DE.

Одно другому не помеха. На универсальных формах через инит и передаю, где надо перекрою по NODEFAULT, и глобальный класс есть.


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку"..."(с)
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
lulgu

Сообщений: 1703
Дата: 18.09.20 22:30:30
sphinx
lulgu
А в чем собственно проблема с DE, или без писанины с USE старперам некомфортно что-ли?
С этой известной ИК-проблемой передачи параметров через INIT - заведите глобальный объект goPublic класса EMPTY и храните в нем хоть тыщу своих параметров как свойства.
С субклассированием DE и прочее - заведите объект класса CUSTOM и обращайтесь к нему из DE.

Одно другому не помеха. На универсальных формах через инит и передаю, где надо перекрою по NODEFAULT, и глобальный класс есть.

Конечно, надо иметь здравый смысл - ничего друг друга взаимно не исключает.
Про карму - я давно знаю, что эти художники не программисты.
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
sphinx

Сообщений: 28046
Откуда: Каменск-Уральски
Дата: 19.09.20 13:34:41
По ссылке про DE:
Цитата:
Правда, для начинающих надо отметить следующее:
1. Пути к свободным таблицам и к базам (пути к таблицам, входящим в базу храняться в базе) жестко задаются при разработке.

Это что ли в тексте программы прописываются? Вроде здравомыслящие всегда используют какой-то файл настроек - DBF, TXT (INI), XML и пр. Или как-то еще "жестко" можно задать?


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку"..."(с)
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
Божья_коровка

Сообщений: 23526
Дата: 19.09.20 15:38:31
lulgu
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Кто бы сейчас спросил ХелаРайсера использует ли он DE
В свое время тоже задавалась этим вопросом и хотела использовать DE в приложении, на что piva сказал - забудь. С тех пор этим вопросом и не задавалась.


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено: Божья_коровка, 19.09.20 15:45
Ratings: 0 negative/0 positive

Re: Научите работать с Data Environment
lulgu

Сообщений: 1703
Дата: 19.09.20 18:52:32
Божья_коровка
lulgu
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Кто бы сейчас спросил ХелаРайсера использует ли он DE
В свое время тоже задавалась этим вопросом и хотела использовать DE в приложении, на что piva сказал - забудь. С тех пор этим вопросом и не задавалась.

Так ведь никто не заставляет.
Но на форуме свою точку зрения все-таки надо уметь хоть как-то аргументировать.
Но здесь, когда Главные асы форума ищут DE то в классах, то в Database, то в среде домохозяек, попутно устраивая срач, то это нехорошо.
Или, упомянутое субклассирование без конкретного примера просто вброс ни о чем, только чтобы потрындеть для важности.
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 tata Peter Wild ZAY  (Гостей: 1)

30.11.2020 23:39:58 exec: 0.17
Mem: 1.581 Mb

© 2000-2020 Fox Club 
Яндекс.Метрика