DFD, CacheTPSABC - не понял

Clarion, Clarion 7

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

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

DFD, CacheTPSABC - не понял

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

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

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

DFD, CacheTPSABC - не понял

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

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

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

DFD, CacheTPSABC - не понял

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

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

kreator
✯ Ветеран ✯
Сообщения: 3356
Зарегистрирован: 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. :)

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

DFD, CacheTPSABC - не понял

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

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

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

DFD, CacheTPSABC - не понял

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

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

kreator
✯ Ветеран ✯
Сообщения: 3356
Зарегистрирован: 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
✯ Ветеран ✯
Сообщения: 1272
Зарегистрирован: 06 Ноябрь 2014, 12:48

DFD, CacheTPSABC - не понял

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

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

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

DFD, CacheTPSABC - не понял

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

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

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

DFD, CacheTPSABC - не понял

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

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

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

DFD, CacheTPSABC - не понял

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

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

kreator
✯ Ветеран ✯
Сообщения: 3356
Зарегистрирован: 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
Ветеран
Сообщения: 874
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

DFD, CacheTPSABC - не понял

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

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

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

DFD, CacheTPSABC - не понял

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

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

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

DFD, CacheTPSABC - не понял

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

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

Ответить