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

Список Форумов  :: Visual Foxpro, Foxpro for DOS
   :: Помощь сайту :: 

Re: Проблема блокировки клавиатуры на время выполнения процедуры
sphinx
[Модератор]

Сообщений: 21897
Откуда: Каменск-Уральски
Дата: 01.01.18 19:56:00ОтветитьЦитировать
Ydin
Да, нормально. Даже нравится. Я его читатель

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


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

Re: Проблема блокировки клавиатуры на время выполнения процедуры
lulgu

Сообщений: 490
Дата: 01.01.18 21:23:26ОтветитьЦитировать
descent52_tmp
Igor Korolyov
"В принципе" делать "одну таблицу - универсальный справочник" ...
Искренне тебе, Игорь, желаю никогда не встретиться с подобной бредятиной в работе, потому что понять некий код это одно, а понять логику - да вот к..й вам, а не золотая рыбка, это другое. Втыкать, почему тут id_str=2, а тут id_str=3 и т.д., a не A.id_str=B.id_str, да лопатой по башке автору ..уть пару раз, может автор начнёт кислое от длинного отличать... Паразитизм хорош только для паразита, одно дело по незнанию, и совсем другое дело осознанно такое писать

Наверное, можно вернуться к этому вопросу.
Вы правы только наполовину, и вот почему.

В постах в теме красочно (даже с использованием очень умного слова "сущность") описывается известное с ДОС-времен объединение справочников в одну таблицу.
Но справочники обычно связаны каскадно между собой, в ДОСе эта проблема мобильно решалась через SET RELATION.
В VFP из-за триггеров этот прием заброшен, коды смотрятся нелепо, и применяется он разве что как самоделка в старых программах для каких-нибудь фирм.
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
sphinx
[Модератор]

Сообщений: 21897
Откуда: Каменск-Уральски
Дата: 01.01.18 22:38:21ОтветитьЦитировать
lulgu
Но справочники обычно связаны каскадно между собой, в ДОСе эта проблема мобильно решалась через SET RELATION.

Это да. SQL-SELECT пришел в Foxpro позднее. Хотя я и сейчас эти связки пользую - ибо еще нужно в кодовой странице правильно сохранить. Хотя все что можно - селектами в курсор, а потом в подготовленные структуры заливаем.

lulgu
В VFP из-за триггеров этот прием заброшен, коды смотрятся нелепо, и применяется он разве что как самоделка в старых программах для каких-нибудь фирм.

Так Александр Юдин об этом и говорит - что переписывать логику из-за зависимости от триггера (а значит СУБД, почти у всех есть свой синтаксис и функционал, я больше с Оракл работаю, вряд ли туда легко перенести триггеры Мускуля. Идеи можно, не спорю.
Разумеется, если правильно понял Юдина. Ну, мы-то с ним лично знакомы.


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

Re: Проблема блокировки клавиатуры на время выполнения процедуры
lulgu

Сообщений: 490
Дата: 01.01.18 23:00:14ОтветитьЦитировать
sphinx

В принципе, да.
Судя по описанию, Юдин перенес все что можно, но такие решения не тиражируются.
К сожалению, компактное ДОС-решение в данном случае в VFP превращается в тяжелую проблему интерфейса.
Мне приходилось заниматься этой проблемой в свое время - в ДОСе точно также относительно компактно решалось не только со справочниками, но и с однотипными отчетами (когда еще рамки рисовались "черточками").
По-моему, в VFP решение лежит полностью в области довольно сложного класса динамически формируемого Grid, но какой-либо необходимости в этом ведь нет.
И, конечно, SQL-серверы могут сами решить эти логики, выводить вполне можно через курсоры.



Исправлено: lulgu, 01.01.18 23:01
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
sphinx
[Модератор]

Сообщений: 21897
Откуда: Каменск-Уральски
Дата: 01.01.18 23:23:03ОтветитьЦитировать
lulgu
Судя по описанию, Юдин перенес все что можно, но такие решения не тиражируются.

Трудно сказать, что у них тиражируется, но он вопросами ЖКХ, как я понял занимался плотно, а это уже не для разового заказчика. Но тут лучше его комменты услышать, я лишь выдвинул предположения.

lulgu
К сожалению, компактное ДОС-решение в данном случае в VFP превращается в тяжелую проблему интерфейса.
Это да. Сам на днях переписывал простенькую по виду задачу - но пришлось менять все - не только интерфейс, а и всю логику. У меня получился один SQL-запрос, когда разобрал, что надо получить на выходе. Ну и грид (со своим приемом параметров, чтоб не рисовать ручками всякую ширину колонок и прочую ненужную чепуху)

lulgu
По-моему, в VFP решение лежит полностью в области довольно сложного класса динамически формируемого Grid, но какой-либо необходимости в этом ведь нет.

Суть мысли может и не понял.. Но! 1) Неплохие гриды есть на форуме, изобретать велосипед (я все равно тоже под себя переделываю, не все устраивает) - большого смысла и нет. К примеру, меня в свое время вполне устраивал Grid aka Petrovish - он есть в решениях.

Может созрею - так покажу свою систему загрузки грида, в частности с ключевыми столбцами (полями) в разных формах. Критику приму с радостью, ибо допилить можно (фиг знает, может и концепцию поменяю)

lulgu
И, конечно, SQL-серверы могут сами решить эти логики, выводить вполне можно через курсоры.

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


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

Re: Проблема блокировки клавиатуры на время выполнения процедуры
pasha_usue

Сообщений: 2890
Откуда: Е-бург
Дата: 02.01.18 18:18:08ОтветитьЦитировать
PaulWist
PSS Аналогичную структуру использует всё "конфигурируемое" ПО (1С, Навижен, Аксапта итд)
1С - ни разу. При создании нового справочника в базу летит DDL на создание новой таблицы (иногда 2-3).
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
pasha_usue

Сообщений: 2890
Откуда: Е-бург
Дата: 02.01.18 18:25:41ОтветитьЦитировать
Igor Korolyov
spinz
На самом деле контроль ссылочной целостности - адское зло и лишняя головная боль как для юзеров, так и для разработчиков.
Ну это можно решить по всякому - например абсолютным дублированием информации. Т.е. занесли в договор "Иванова Ивана Ивановича" - записали в специальную таблицу "ЧеловекиДоговора" всю необходимую для договора инфу (не обязательно всю что есть вообще в системе на этого человека). После этого и справочник можно править (хоть сделать из этого человека "Гадю Петрович Хренову", хоть просто удалить), и договор не "развалится" никогда...
Во многих случаях это вполне себе нормальное решение будет.
Есть, например, такая штука: FDA 21 CFR Part 11 Compliance. При проектировании БД, соответствующей всем правилам изложенным в этих документах, безвозвратное удаление вообще должно отсутствовать как класс.
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
of63

Сообщений: 11071
Откуда: Н.Новгород
Дата: 02.01.18 18:56:55ОтветитьЦитировать
PaulWist
of63
... Я ниче не понял ...

Пример: есть справочник "Тип документа" содержащий поля TypeDoc_ID, Name, так же есть справочник "Должности" с полями Appointment_ID, Name, ну и до кучи справочник валют с полями TypeCurrency_ID, Name.
Что общего у этих справочников - это структура данных ID, Name.

Что напрашивается сделать - поместить все три справочника в одну таблицу, поскольку структура у них одинаковая.
Какие выгоды это даст - можно создавать любое количество справочников с таким типом данных, те юзеру не нужны права на create/alter/drop table, а достаточно прав на Insert/Update/Delete одной таблицы (вернее двух).

Таким образом, структура данных из множества таблиц вырождается в две таблички:
таблица метаданных - Dictionary (ID primary key, Name) это название справочников ("Тип документа", "Должности", "Валюты" итд).

И табличка самих данных DictDetails (ID primary key, Dictionary_ID foreing key on Dictionary (ID), Name) это Директор, Дворник, Рубли, Юани, Договор, Заявка итд.

PS Вроде Игорь "разжевал на пальцах".

PSS Аналогичную структуру использует всё "конфигурируемое" ПО (1С, Навижен, Аксапта итд)

Я эту абстрактную (но малополезную) идею понимаю. Ради шутки, ведь можно вообще без справочников (дикшенори) обойтись, а писать в единственное мемо поле "основной" таблицы данных строку типа (имя=значение), где имя - это аналог имени из справочника, или число (его ИД, и имя справочника). Тогда вся БД будет как 2 таблицы:
- "основная" - (ID и memo) с memo-содержимимым в виде строк (имя=значение)
- таблица связей - такое-то ID связано с другим ID в той же единственной "основной" таблице данных
Толку от этой идеи ровно ноль, кроме идеи, что можно все примерно нормально связать в абстрактном виде, и можно и "идеально" (много дикшенори-таблиц, и много основных, и много связующих). Может есть простая процедура, чтобы разобрать эти строки в memo основной таблицы, и пострить из них "обычную" структуру из множества таблиц (основных, связей, и дикшенори)
(В XML ведь так и сделали, именуют каждый элемент тэгом, размещают в нужном вложении, в другом тэге...)
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
Ydin

Сообщений: 5848
Откуда: Киев
Дата: 02.01.18 19:00:56ОтветитьЦитировать
pasha_usue
Есть, например, такая штука: FDA 21 CFR Part 11 Compliance. При проектировании БД, соответствующей всем правилам изложенным в этих документах, безвозвратное удаление вообще должно отсутствовать как класс.
Есть такая штука - провозгласить коммунизм. Еще есть такая штука - реализовать во всем мире...
- Экономика д.б. экономной.
-imagine all the people living life in peace (John Lennon)
Цитата:
Леннон заявил, что песня «является в сущности Коммунистическим манифестом, хотя он сам не коммунист и не принадлежит ни к какому политическому движению».
- Jai guru deva om



Исправлено: Ydin, 02.01.18 19:03
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
Igor Korolyov

Сообщений: 31519
Дата: 02.01.18 20:27:02ОтветитьЦитировать
of63
Я эту абстрактную (но малополезную) идею понимаю.
Видимо не полностью... Иначе не было бы про её полезность замечаний. Идея сама по себе нормальная - но как и любая другая идея, она имеет свою сферу применения. Когда у тебя в системе будет 100500 справочников (и они будут чуть ли не ежедневно добавляться) примитивного вида id/name, то я гарантирую что уже после первой сотни CREATE TABLE очередной_справочник (id int, name varchar(200)) ты кардинально изменишь своё мнение относительно "унифицированного" справочника.
Как тут иногда бывало - решают задачу автоматизации "тестов/вопросников" и начинают лепить на каждый вариант/набор вопросов по таблице - потом ещё на каждого сдающего тесты тоже по таблице... Смешно, конечно, но ведь "лабу" в институте то и так можно сдать - и потом писать в резюме что "хорошо понимаю теорию реляционных БД"

А когда у тебя в задаче потребуется вводить данные произвольно-форматных документов, при том что заранее ты даже не можешь представить сколько там будет реквизитов в "шапке", сколько в "строках", сколько вообще уровней подчинённости будет в этих самых "строках", и на какие из справочников какие реквизиты будут ссылаться, то ты поймёшь и другие идеи универсализации хранения информации, в частности и нечто подобное
of63
Ради шутки, ведь можно вообще без справочников (дикшенори) обойтись, а писать в единственное мемо поле "основной" таблицы данных строку типа (имя=значение)
подход, который реализован в так называемых NoSQL СУБД - например MongoDB...
of63
Толку от этой идеи ровно ноль
Если бы это был так, то не было бы создано несколько сотен разнообразных и разнонацеленных NoSQL СУБД.
Так что надо писать "Я не понимаю смыла", а не "нет смысла". То что ты лично не сталкивался с задачами в которых реляционная модель данных, мягко говоря, совершенно неподходящая, не значит что таких задач не существует, а те кто их решает - "психи какие то"


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

Re: Проблема блокировки клавиатуры на время выполнения процедуры
of63

Сообщений: 11071
Откуда: Н.Новгород
Дата: 02.01.18 20:31:31ОтветитьЦитировать
> (Я эту абстрактную (но малополезную) идею понимаю.) ...Видимо не полностью...
Позволь тебе не поверить (что я не "понимаю", что я предлагаю), как я и тебе не всегда верю (что ты "понимаешь")

Доб. Ты так капсом, отметил особенности твоей задачи )
> То что ты лично не сталкивался с задачами в которых реляционная модель данных, мягко говоря, совершенно неподходящая, не значит что таких задач не существует, а те кто их решает - "психи какие то"

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

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



Исправлено: of63, 02.01.18 20:47
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
Simple777

Сообщений: 19027
Дата: 02.01.18 20:40:18ОтветитьЦитировать
Программирование находится на стыке науки и искусства. "Искусство программирования" - так сказал Кнут. Как известно, даже в науке довольно часто есть несколько альтернативных путей, приводящих к схожему результату. В искусстве же путей достижения "истины" множество.

"Имеющий уши да услышит!.." [sm128]
Ratings: 0 negative/1 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
of63

Сообщений: 11071
Откуда: Н.Новгород
Дата: 02.01.18 20:52:58ОтветитьЦитировать
Нафик Кнута, я не читал этого автора, как и Маркса/Энгельса/Ленина. Жизнь подсказала все законы жизни, которые есть. (Прогамерство 80-90-х тоже ))
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
Simple777

Сообщений: 19027
Дата: 02.01.18 20:56:02ОтветитьЦитировать
Ссылку на Кнута я дал для любителей "священных коров". [sm128]
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
of63

Сообщений: 11071
Откуда: Н.Новгород
Дата: 02.01.18 20:57:20ОтветитьЦитировать
Они и так на нее молятся, у них нюх нах
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
Ydin

Сообщений: 5848
Откуда: Киев
Дата: 02.01.18 20:57:59ОтветитьЦитировать
Но Кнут очень хорош, вернее его книга...
Полезней Маркса IMHO



Исправлено: Ydin, 02.01.18 20:59
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
of63

Сообщений: 11071
Откуда: Н.Новгород
Дата: 02.01.18 21:04:28ОтветитьЦитировать
Я без книги понял, что писать прогу надо как "человек", как его "представления о программе", выступить как идеальный компьютер, - и повторить тоже в коде (на каком то языке)

Доб. Вот будь внутри механического (программного)робота, будь как робот... вот ты и программист, мтк



Исправлено: of63, 02.01.18 21:05
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
lulgu

Сообщений: 490
Дата: 02.01.18 21:07:49ОтветитьЦитировать
Igor Korolyov
of63
Я эту абстрактную (но малополезную) идею понимаю.
Видимо не полностью... Иначе не было бы про её полезность замечаний. Идея сама по себе нормальная - но как и любая другая идея, она имеет свою сферу применения. Когда у тебя в системе будет 100500 справочников (и они будут чуть ли не ежедневно добавляться) примитивного вида id/name, то я гарантирую что уже после первой сотни CREATE TABLE очередной_справочник (id int, name varchar(200)) ты кардинально изменишь своё мнение относительно "унифицированного" справочника.

К сожалению, вы рассматриваете справочники как абстрактные кубики.
Но таблицы имеют свои "обвязки" - связи, триггеры, процедуры, правила, SELECT-ы, NewID и т.д.
И с громоздкостью кодов для вашего "унифицированного" справочника вы столкнетесь уже не на сотой таблице, а в первой десятке.
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
of63

Сообщений: 11071
Откуда: Н.Новгород
Дата: 02.01.18 21:09:20ОтветитьЦитировать
Лулгу, какой язык изложения связей ты предложишь?
Ratings: 0 negative/0 positive

Re: Проблема блокировки клавиатуры на время выполнения процедуры
Simple777

Сообщений: 19027
Дата: 02.01.18 21:11:33ОтветитьЦитировать
of63
Лулгу, какой язык изложения связей ты предложишь?

Черномырдин для связки использовал ненормативку. [sm128]
Ratings: 0 negative/0 positive



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

On-line: 50 and Guests: 50


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