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

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

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

Сообщений: 23527
Дата: 19.09.20 19:06:30
lulgu
Но на форуме свою точку зрения все-таки надо уметь хоть как-то аргументировать.
Согласна, точка зрения должна быть аргументирована. Я не использую ДЕ поскольку не работаю по сути с фоксовой базой. У меня на поддержке оракловая база, к которой просто формируются динамические запросы и результат в виде курсоров на клиента хватает для реализаций поставленной задачи, поэтому именно для себя в данной ситуации не вижу смысла в ДЕ. В своё время piva по этому поводу и высказывался, что для такой задачи нет необходимости в ДЕ. Но у ТС другая задача, и тут надо думать именно под конкретную задачу как и писали мастодонты в 2002 году. Хотя я сомневаюсь, что ХелРайсер сейчас так же уверенно и четко проголосует за ДЕ. В 2002 году когда была эта тема ему было по 20 с хвостиком.


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

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

Сообщений: 1705
Дата: 19.09.20 19:43:36
Божья_коровка
lulgu
Но на форуме свою точку зрения все-таки надо уметь хоть как-то аргументировать.
Согласна, точка зрения должна быть аргументирована. Я не использую ДЕ поскольку не работаю по сути с фоксовой базой. У меня на поддержке оракловая база, к которой просто формируются динамические запросы и результат в виде курсоров на клиента хватает для реализаций поставленной задачи, поэтому именно для себя в данной ситуации не вижу смысла в ДЕ. В своё время piva по этому поводу и высказывался, что для такой задачи нет необходимости в ДЕ. Но у ТС другая задача, и тут надо думать именно под конкретную задачу как и писали мастодонты в 2002 году. Хотя я сомневаюсь, что ХелРайсер сейчас так же уверенно и четко проголосует за ДЕ. В 2002 году когда была эта тема ему было по 20 с хвостиком.

DE ведь не предмет для гадания или голосования.
Судя по теме, здесь с DE имел дело только Криспа.
Но этого мало, DE это все-таки контейнер для объектов.
Ratings: 1 negative/0 positive

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

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

Вернемся от комплексующих художников в VFP.

Простота фокса обманчива, и сыграла с ним злую шутку.
Чуть выше Коровка применила интересное сравнение - мастодонты.
Беда VFP в том, что он изначально был заточен не на мастодонтов, а на удобства программистов среднего пошиба, так и не вылезших из штанишек FPD - на форуме это легко просматривается.
Например, если бы разработчики сразу бы убрали многое типа USE или APEND BLANK то развитие фокса могло бы пойти по пути создания полноценной СУБД.
А визуализация FPD в комплекте с ООП это полностью заслуга MS, внедривших в примитивный древний фокс свои наработки.
С графикой непонятно, чем GDIP не устраивает.
Ratings: 2 negative/0 positive

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

Сообщений: 3424
Откуда: Москва
Дата: 20.09.20 13:36:17
lulgu
Вернемся от комплексующих художников в VFP.
Талантливая способность превращать любой топик в помойку



Исправлено: Аспид, 20.09.20 13:36
Ratings: 0 negative/3 positive

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

Сообщений: 28062
Откуда: Каменск-Уральски
Дата: 20.09.20 15:51:06
Коллеги, давайте уважительно относиться друг к другу, даже если не согласны со способами программирования!
В любом случае побеждает программирование, реализаций задач и/или своих идей.


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

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

Сообщений: 16859
Дата: 21.09.20 10:51:57
Аспид
lulgu
Вернемся от комплексующих художников в VFP.
Талантливая способность превращать любой топик в помойку

Специализация у нее такая. Что-то с психологией сетевого общения видимо связано (точнее с троллингом скорее всего). Вот и проводит эксперименты "на кошечках", может для какой-то своей работы.
А по чисто проф.моментам - кто-то явно консультирует.
Борман в теме в корзине давал ссылки на ее профиль в инстаграм, так тот профиль после этого вдруг был сразу закрыт. Совпадение видимо.


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




Исправлено: Crispy, 21.09.20 10:52
Ratings: 0 negative/1 positive

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

Сообщений: 1705
Дата: 21.09.20 12:16:26
Совсем уж мастодонты одичали ...

Цитата:
Траву кушаем, век на щавеле
Скисли душами, опрыщавели.
В. Высоцкий.

ЗЫ. Ну хоть бы один по делу хоть что-нибудь брякнул ...



Исправлено: lulgu, 21.09.20 12:50
Ratings: 1 negative/0 positive

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

Сообщений: 3424
Откуда: Москва
Дата: 21.09.20 13:04:17
Crispy
А по чисто проф.моментам - кто-то явно консультирует.
Да и не обязательно. При умелом использовании поиска, в инете. Дилетант, для слабо разбирающихся, может выглядеть вполне ничего.
А кто понимает, видит сплошную чушь.
Ну и вечные попытки вывести из себя собеседников)))
Иногда заюавно)
Ratings: 0 negative/1 positive

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

Сообщений: 1705
Дата: 21.09.20 13:26:22
Аспид
Кардинальный совет, отказаться от Dataenvironment.
Насовсем, навсегда. Забыть о его существовании.
1. Сделайте класс доступа к данным.
Возможно сразу не ясно. Сделайте процедуру. Если постараться сделать ее максимально абстрактной, то вот и базовый класс.
Да бог с ним, это можно и позже, а сначала, пищите процедуры. А потом ищите в них общие черты, сигнатуру, заготовка для будущего класса.
И там, мне кажется вам ясно как переключаться между БД.
2. Исходя из первого ответа, второй напрашивается сам.
Вы делаете процедуру получения данных, структура одинаковая, а откуда, можно передать в параметре.

И забудьте про инструмент для домохозяек - Dataenvironment.

Сколько десятков-сотен процедур будет в твоем классе в более-менее серьезном проекте?
С Private-формами в какой сессии будет работать твой класс?
Ratings: 1 negative/0 positive

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

Сообщений: 1705
Дата: 21.09.20 15:58:49
Crispy
Еще бы ему (фоксу) добавить чуть больше встроенных возможностей по более углубленной работе с графикой, вообще было бы просто таки супер.

Все-таки, повторно - чем тебе Gdip не угодил?
С классом Клепинина ты знаком, надеюсь?
Или, возможно, даже FoxCharts сумел освоить?



Исправлено: lulgu, 21.09.20 16:18
Ratings: 0 negative/0 positive

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

Сообщений: 1705
Дата: 23.09.20 15:00:56
Вернемся от мастодонтов (для нервных - выражение от Коровки) в VFP:

Вот еще когда разноголосье начало "хоронить" VFP.
forum.foxclub.ru

Кстати, там есть очень красивое изречение от ИК:
Цитата:
Без нормального каркаса? Постоянно кодировать одни и те-же рутинные операции? Кнопки навигации, сохранение данных, обработчики ошибок, прочие очень полезные классы? Нет уж увольте, я не машинистка чтоб перепечатывать одно и то-же по сути много раз и не VB-"профи" освоивший виртуозное владение Ctrl+C Ctrl+V как основной приём программирования
Странно, почему-то он полтора десятка лет делал прямо противоположное.

Так где-же каркас?



Исправлено: lulgu, 23.09.20 15:12
Ratings: 0 negative/0 positive

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

Сообщений: 338
Откуда: Лида Беларусь
Дата: 23.09.20 16:05:58
Божья_коровка
У меня на поддержке оракловая база, к которой просто формируются динамические запросы и результат в виде курсоров на клиента хватает для реализаций поставленной задачи, поэтому именно для себя в данной ситуации не вижу смысла в ДЕ.

Я тоже поддерживаю оракловую БД ,но ДЕ использую для курсорадаптеров.
Все курсорадаптеры в 50кб рисунок не поместились.

[attachment 33848 DE.GIF]

В ДЕ определяется соединение с БД:
[attachment 33849 DE1.GIF]

В курсорадаптерах свойство UseDeDataSource = .T.



Исправлено: LUCIAN, 23.09.20 16:39
Ratings: 0 negative/0 positive

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

Сообщений: 10785
Откуда: Красноярск
Дата: 23.09.20 16:22:24
LUCIAN
Я тоже поддерживаю оракловую БД ,но ДЕ использую для курсорадаптеров.
Все курсорадаптеры в 50кб рисунок не поместились.


Офигеть. И все эти и непоместившиеся CA используются в данной форме?
Ratings: 0 negative/0 positive

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

Сообщений: 338
Откуда: Лида Беларусь
Дата: 23.09.20 16:47:19
Taran
Офигеть. И все эти и непоместившиеся CA используются в данной форме?
Эта форма используется для формирования отчёта о приходе и расходе материалов и комплектующих поиздельно в цехах,учитывая план и нормы расхода.
Ratings: 0 negative/0 positive

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

Сообщений: 28759
Дата: 23.09.20 17:02:36
А пооперацилнные трудовые нормативы на изделия есть? Или материалы не обрабатываются?
Ratings: 0 negative/0 positive

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

Сообщений: 23527
Дата: 23.09.20 18:43:15
LUCIAN
Taran
Офигеть. И все эти и непоместившиеся CA используются в данной форме?
Эта форма используется для формирования отчёта о приходе и расходе материалов и комплектующих поиздельно в цехах,учитывая план и нормы расхода.
И все эти СА только для того чтобы сформировать один отчет? Он настолько страшный этот отчет о приходе и расходе материалов?

PS: Честно признаюсь стараюсь все отчеты по возможности формировать на сервере и на клиента просто в виде итогового результата получать данные. Иногда грешу 3-х этажными запросами, чтобы по меньше на клиента данных тащить для расчетов отчетов. Но у меня отчетность небольшая и не страшная.


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




Исправлено: Божья_коровка, 23.09.20 19:03
Ratings: 0 negative/1 positive

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

Сообщений: 1705
Дата: 23.09.20 21:33:31
Божья_коровка
PS: Честно признаюсь стараюсь все отчеты по возможности формировать на сервере и на клиента просто в виде итогового результата получать данные. Иногда грешу 3-х этажными запросами, чтобы по меньше на клиента данных тащить для расчетов отчетов. Но у меня отчетность небольшая и не страшная.

Но ведь это формирование отчета не программно, а практически вручную, вашими руками как продвинутого пользователя.
При сложной отчетности штат программистов будет сопоставим с числом пользователей.
Ratings: 2 negative/0 positive

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

Сообщений: 23527
Дата: 23.09.20 21:40:28
lulgu
Божья_коровка
PS: Честно признаюсь стараюсь все отчеты по возможности формировать на сервере и на клиента просто в виде итогового результата получать данные. Иногда грешу 3-х этажными запросами, чтобы по меньше на клиента данных тащить для расчетов отчетов. Но у меня отчетность небольшая и не страшная.

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


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

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

Сообщений: 1705
Дата: 23.09.20 22:18:46
Программист работает с программами для создания отчетов, в которых работают пользователи.
При необходимости вносит в них изменения и возвращается к своим делам (разумеется, если не аврал).
Вы же сами своими руками динамически сопровождаете отчеты, вручную формируя их на сервере, судя по вашему описанию.
При большой отчетности такое не проходит, отчеты формируют пользователи.
ЗЫ. Средняя система это несколько сот пользователей.



Исправлено: lulgu, 23.09.20 22:38
Ratings: 4 negative/0 positive

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

Сообщений: 338
Откуда: Лида Беларусь
Дата: 24.09.20 10:16:24
Божья_коровка
Он настолько страшный этот отчет о приходе и расходе материалов?
PS: Честно признаюсь стараюсь все отчеты по возможности формировать на сервере и на клиента просто в виде итогового результата получать данные.:

CAD тоже формирует данные на сервере.Отчёт о котором я говорю не совсем тот о котором думает Божья_коровка.Пользователь (комплектовщик цеха) может получить несколько вариантов отчёта,исходя из того как некоторый материал по некоторой цене на какую продукцию и в каком кол-ве спишет придерживаясь норм расхода.
Для этого ему необходима таблица наличия материалов в цеху и соотв. нормативные спецификации материалов для пр-ва заданного кол-ва изделий.Для этого он нажимает
кнопку с таким кодом:
ThisForm.Gm1.VALID && установка параметров связанных с отчётн.месяцем  
    
 *формиование таблицы на сервере для CAD C_OSTC  
    
  LnReturn = SQLEXEC(THISFORM.DATAENVIRONMENT.DATASOURCE, [{CALL OTC_COSTDK_VYB}])  
    
 * Обновление CADа C_OSTC  
  THISFORM.DATAENVIRONMENT.C_OSTC.CURSORREFRESH  
    
  SELECT C_OSTc  
  GO TOP  
 * CAD C_OSTC обновляем в Grid  
  ThisForm.Pageframe1.Page1.Grdm1.refresh  
  ThisForm.Pageframe1.Page1.Command6.Visible = .T.
Свойство SelectCmd для CAD C_OSTC
  
   SELECT id_tov, nmat, ed_izm, tmat, iedi, ost, k_per, ostx, id_mat_teh, ordf,  
  99999 ID_STR FROM otc_temp_costdk     
    UNION  
             SELECT   0 id_tov, RPAD ('  ', 60) nmat, RPAD ('  ', 30) ed_izm,  
                      INITCAP (nmat) tmat, INITCAP (iedi) iedi, 0 ost, 1 k_per,  
                      0 ostx, cmat id_mat_teh,  
                      RPAD (LTRIM (INITCAP (nmat)), 120) ordf,99999 ID_STR  
                 FROM (SELECT DISTINCT cmat, nmat, iedi  
                                  FROM otc_temp_limit  
                                 WHERE otc_temp_limit.scet = cx_p.get_scet  
                                   AND cmat NOT IN (SELECT id_mat_teh  
                                                      FROM otc_temp_costdk))  
             ORDER BY 10;

Код процедуры OTC_COSTDK_VYB, красным выделено то, чтобы доказать что этот запрос делает определённый выбор согласно заранее заданным параметрам.

  
  CREATE OR REPLACE PROCEDURE LIDA.OTC_COSTDK_VYB as  
  -- ВЫБОРКА ЛИМИТА СОГЛАСНО ПЛАНА  
     
  BEGIN  
    
    
  delete from otc_TEMP_COSTDK ;  
  commit ;  
    
  INSERT INTO otc_TEMP_COSTDK SELECT ostdk.id_tov, INITCAP (sp_tov.nmat) nmat,  
                          sp_tov.ed_izm, INITCAP (tmat) tmat,  
                          INITCAP (iedi) iedi, ostdk.ost,  
                          DECODE (SIGN (NVL (sp_tov.k_per, 0)),  
                                  0, 1,  
                                  1, sp_tov.k_per  
                                 ) k_per,  
                            ostdk.ost  
                         * DECODE (SIGN (NVL (sp_tov.k_per, 0)),  
                                    0, 1,  
                                    1, sp_tov.k_per  
                                   ) ostx,  
                          NVL (sp_tov.id_mat_teh, 0000) id_mat_teh,  
                          RPAD (LTRIM (INITCAP (tmat) || INITCAP (sp_tov.nmat)),  
                                120  
                               ) ordf  
                     FROM (SELECT   doks.id_tov, SUM (ostp.ost) ost  
                               FROM (SELECT   doks.id_str, SUM (ostp.ost) ost  
                                         FROM otc_ostd ostd INNER JOIN otc_ostp ostp  
                                              ON ostp.id_pri = ostd.id_pri  
                                            AND id_ost = cx_p.get_ost_id  
                                              INNER JOIN otc_doks doks  
                                              ON doks.id_str = ostd.id_pri  
                                              INNER JOIN otc_sp_tov sp_tov  
                                              ON sp_tov.id_tov = doks.id_tov  
                                            AND sp_tov.scet = cx_p.get_scet  
                                     GROUP BY doks.id_str  
  --                                     HAVING SUM (ostp.ost) > 0  
                                     UNION ALL  
                                     SELECT   doks.id_str, SUM (ostp.ost) ost  
                                         FROM otc_doks doks INNER JOIN otc_dok dok  
                                              ON dok.id_dok = doks.id_dok  
                                            AND d_dok >= cx_p.get_otc_mes  
                                            AND d_dok < cx_p.get_otc_mesl  
                                            AND pol = cx_p.get_otp  
                                              INNER JOIN otc_sp_tov sp_tov  
                                              ON sp_tov.id_tov = doks.id_tov  
                                            AND sp_tov.scet = cx_p.get_scet  
                                              INNER JOIN otc_ostp ostp  
                                              ON ostp.id_pri = doks.id_str  
                                     GROUP BY doks.id_str ) OSTP  
   --                                    HAVING SUM (ostp.ost) > 0) ostp  
                                    INNER JOIN  
                                    otc_doks doks ON doks.id_str = ostp.id_str  
                           GROUP BY doks.id_tov) ostdk  
                          INNER JOIN  
                          (SELECT sp.*, NVL (tex.nmat, RPAD (' ', 60)) tmat  
                                   FROM (SELECT id_tov, nmat, ed_izm, k_per,  
                                          id_mat_teh,nsi_sei.iedi  
                                     FROM otc_sp_tov INNER JOIN nsi_sei  
                              ON nsi_sei.kedi = otc_sp_tov.kedip  
                                    WHERE scet = cx_p.get_scet) sp  
                                  LEFT JOIN  
                                  (SELECT nsi_mat_tex.*  
                                     FROM nsi_mat_tex   
                                        where (  nsi_mat_tex.sch * 100  
                                             + nsi_mat_tex.ssch  
                                            ) = cx_p.get_scet  
                                          ) tex ON tex.cmat = sp.id_mat_teh  
                                  ) sp_tov ON sp_tov.id_tov = ostdk.id_tov ;  
  COMMIT;  
  UPDATE otc_TEMP_COSTDK SET ordf = ' '||LTRIM(RTRIM(ordf)) WHERE id_mat_teh =999999901;  
  commit;  
    
  END;  
  /[color=Red][/color]
Ratings: 0 negative/0 positive



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

On-line: 7 (Гостей: 7)

02.12.2020 03:22:23 exec: 0.34
Mem: 1.583 Mb

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