DFD, CacheTPSABC - не понял

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1182
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 21 Май 2019, 16:14

Игорь Столяров писал(а):
21 Май 2019, 16:04
finsoftrz писал(а):
21 Май 2019, 15:50
при изменении реквизита шапки накладной надо сделать изменения во все строки
Т.е. тупо прокрутить, присвоить и сохранить. Как раз задача для отложенной записи.
А то, что эти изменения попадут на диск с запозданием в несколько секунд - не проблема.
Если конечно речь идёт не о запуске ракеты с Байконура … ;)
Да там и так быстро, commit заливает изменения страницами. Сложность в том, чтобы это все автоматом отрабатывало. И надо ту самую очередь начального состояния корректировать. Не все такие изменения получится автоматически откатывать. И сами избранные реквизиты шапки еще синхронно со строками сохранять (а не всю родительскую запись), и проверять логическую возможность их сохранять. В общем, это мы сейчас совсем в дебри взрослых систем полезем... :-)
Рязань решает.

Андрей
Старожил
Сообщения: 250
Зарегистрирован: 30 Октябрь 2005, 3:58

DFD, CacheTPSABC - не понял

Сообщение Андрей » 21 Май 2019, 16:24

Игорь Столяров писал(а):
21 Май 2019, 15:29
Пардон - но здесь просто нужно корректно описать в словаре связь между родительским и дочерним списком, и при отказе
добавления шапки накладной - код шаблонов автоматически удалит и добавленные строки содержания. Без проблем.
А точно удалит без проблем ? Именно в случае, когда не сохранили еще родит. запись, а навводили уже дочерних и отказываемся ?

Андрей
Старожил
Сообщения: 250
Зарегистрирован: 30 Октябрь 2005, 3:58

DFD, CacheTPSABC - не понял

Сообщение Андрей » 21 Май 2019, 16:44

Интересное обсуждение, однако если вернуться к началу
Cache1.jpg
Cache1.jpg (11.12 КБ) 172 просмотра
вот этот якобы волшебный шаблон - мол выбери TPS файл, он на лету прямо InMemory подставит и ничего объявлять не надо ни в словаре, ни в коде - врут чтоль ?

kreator
Ветеран
Сообщения: 3248
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

DFD, CacheTPSABC - не понял

Сообщение kreator » 21 Май 2019, 18:15

Андрей писал(а):
21 Май 2019, 16:24
А точно удалит без проблем ? Именно в случае, когда не сохранили еще родит. запись, а навводили уже дочерних и отказываемся ?
Так не бывает. В правильной БД вы не можете создать дочерние записи без создания родительской. TPS позволит, но шаблон формы всё равно генерит создание родительской записи. Если форма открылась по добавлению, то запись уже в базе есть.
Андрей писал(а):
21 Май 2019, 16:44
от этот якобы волшебный шаблон - мол выбери TPS файл, он на лету прямо InMemory подставит и ничего объявлять не надо ни в словаре, ни в коде - врут чтоль ?
А что там дальше? Departme.tps уже существует? Не пустой? Если так, то логично, что шаблон создаст какой-то файл с типом "In Memory". Посмотрите по тексту, что он делает.
We are hard at work… for you. :)

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4003
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

DFD, CacheTPSABC - не понял

Сообщение Игорь Столяров » 21 Май 2019, 18:38

kreator писал(а):
21 Май 2019, 18:15
Если форма открылась по добавлению, то запись уже в базе есть.
Ну вот … сразу раскрыли все секреты и исчез эффект обыкновенного чуда … :(
Андрей писал(а):
21 Май 2019, 16:24
когда не сохранили еще родит. запись, а навводили уже дочерних и отказываемся
Однозначно. Мне кажется, что здесь уже проще попробовать сделать, чем спросить … :)
«V» значит Вендетта !

gopstop2007
Ветеран
Сообщения: 1220
Зарегистрирован: 25 Март 2009, 21:55

DFD, CacheTPSABC - не понял

Сообщение gopstop2007 » 21 Май 2019, 20:03

пример FillListBoxSql,так как Mssql не использую, попробовал под ODBC (Mysql), сходу не пошел... ;(
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

kreator
Ветеран
Сообщения: 3248
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

DFD, CacheTPSABC - не понял

Сообщение kreator » 22 Май 2019, 10:00

kreator писал(а):
21 Май 2019, 18:15
TPS позволит, но шаблон формы
Это я погорячился. TPS тоже не позволит. Конечно, если не ломать стандартное поведение. Стандартно дочерние записи должны иметь поле ссылки на родительскую запись. В момент ввода дочерних записей это поле должно быть чем-то заполнено. Если его заполнить чем-то абстрактным, то TPS позволит это сделать (SQL не позволит, если правильно прописать форейн-ключи), но всё равно на экране формы эти записи не появятся. Так что умозрительно это всё.
We are hard at work… for you. :)

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1182
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 22 Май 2019, 11:17

SQL сервер - это программа. TPS - это формат хранения данных. Драйвер для работы с tps ничего не знает о целостности и т.п. Он только обеспечивает базовые функции чтения и записи. Поэтому, если сравнивать, то надо сравнивать функции, обеспечиваемые SQL сервером как самостоятельной программы, и программы на кларионе, которая работает с tps. Именно она занимается поддержкой целостности и разными другими вещами, которые выполняет SQL сервер. К слову, actian zen в своей основе (транзакционный движок, работающий с записями), даже про структуру записей не знает. API работает с полями в терминах смещение от начала записи и количество байт в поле. Эти значения вычисляет кларионовская программа (btrieve драйвер в частности) на основании заданной структуры file.
Рязань решает.

kreator
Ветеран
Сообщения: 3248
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

DFD, CacheTPSABC - не понял

Сообщение kreator » 22 Май 2019, 16:16

Я уже несколько десятков лет радуюсь, что есть программы, которые занимаются поддержкой целостности БД и разными другими вещами. Не приходиться тратить усилия на очевидные вещи.
Кстати (не помню высказывал ли здесь эту мысль), Велосипедисты ещё в бытность обычными пастухами, когда затевали формат TPS, могли бы внедрить в него поддержку всего того, что есть сейчас на стороне сервера БД. А-ля sqlite. Думаю, можно было бы получить неплохую прибавку к пенсии. Загнать все таблицы и индексы в один физический файл додумались, а дальше дело не пошло.
We are hard at work… for you. :)

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1182
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 22 Май 2019, 16:57

Да это просто другая архитектура. Называется встраиваемые базы данных. Всей логикой рулит приложение. Мы же в кларионе для поддержки целостности при работе с tps тоже ничего ручками не пишем. Задаем в словаре, все остальное шаблонами автоматически создается.
Все таблицы в один файл загоняли они по другой причине. На тогдашней технике ресурсов мало было, экономили дескрипторы. Сейчас этим мало кто пользуется, минусов больше, чем плюсов.
Рязань решает.

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1182
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 22 Май 2019, 17:13

Когда-то давно разговаривал с одним весьма квалифицированным разработчиком, который работал на титульной должности в программистской фирме, пишущей под ms sql. Он сказал, что у них считается, что констрейны это зло, так как затрудняют сопровождение продукта. Не знаю, как сейчас у ms sql (разговор давно был, сейчас может что изменилось), читал, что у продвинутых серверов типа оракла есть возможность махом выключать все констрейны и триггеры. Видимо, как раз по этой самой причине.
Рязань решает.

kreator
Ветеран
Сообщения: 3248
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

DFD, CacheTPSABC - не понял

Сообщение kreator » 22 Май 2019, 17:23

finsoftrz писал(а):
22 Май 2019, 16:57
Мы же в кларионе для поддержки целостности при работе с tps тоже ничего ручками не пишем.
В каком месте есть проверка на запрет ввода дочерних записей с отсутствующем родителем? Никогда не проверял, но всё же. Если я в словаре укажу в Relations два файла с типом "один - ко многим" (Родитель, Ребёнок), шаблоны и классы отработают запрет на ввод в файл Ребёнка записи с несуществующим "Родителем". Вот я что-то сомневаюсь, что такая логика прописана на уровне работы с файлами.
We are hard at work… for you. :)

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 856
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

DFD, CacheTPSABC - не понял

Сообщение RaFaeL » 22 Май 2019, 17:29

finsoftrz писал(а):
22 Май 2019, 17:13
Когда-то давно разговаривал с одним весьма квалифицированным разработчиком, который работал на титульной должности в программистской фирме, пишущей под ms sql. Он сказал, что у них считается, что констрейны это зло, так как затрудняют сопровождение продукта.
Видимо потому что с констрейнтами базу хрен сломаешь логически и сопровождение становится ненужным, как же тогда деньги зарабатывать. А так убрал констрейнты и постоянно "лечишь" базу )) Выгодно!

kreator
Ветеран
Сообщения: 3248
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

DFD, CacheTPSABC - не понял

Сообщение kreator » 22 Май 2019, 17:35

finsoftrz писал(а):
22 Май 2019, 17:13
Он сказал, что у них считается, что констрейны это зло, так как затрудняют сопровождение продукта.
Конечно, зло! Записи не пропадают, вводимые данные соответствуют требуемым величинам, поддержка разработчика не нужна! Однозначно, зло.
В начале миросоздания мироздания была такая теория, что чем больше проблем разработчик зашьёт в программу, тем лучше. Вечно денюжка капать будет.
We are hard at work… for you. :)

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1182
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

Сообщение finsoftrz » 22 Май 2019, 17:55

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

Ответить