DFD, CacheTPSABC - не понял

Clarion, Clarion 7

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

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

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

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

DFD, CacheTPSABC - не понял

Сообщение Андрей »

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

DFD, CacheTPSABC - не понял

Сообщение Андрей »

Интересное обсуждение, однако если вернуться к началу
Cache1.jpg
Cache1.jpg (11.12 КБ) 1982 просмотра
вот этот якобы волшебный шаблон - мол выбери TPS файл, он на лету прямо InMemory подставит и ничего объявлять не надо ни в словаре, ни в коде - врут чтоль ?
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

DFD, CacheTPSABC - не понял

Сообщение kreator »

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

DFD, CacheTPSABC - не понял

Сообщение Игорь Столяров »

kreator писал(а): 21 Май 2019, 18:15Если форма открылась по добавлению, то запись уже в базе есть.
Ну вот … сразу раскрыли все секреты и исчез эффект обыкновенного чуда … :(
Андрей писал(а): 21 Май 2019, 16:24 когда не сохранили еще родит. запись, а навводили уже дочерних и отказываемся
Однозначно. Мне кажется, что здесь уже проще попробовать сделать, чем спросить … :)
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

DFD, CacheTPSABC - не понял

Сообщение gopstop2007 »

пример FillListBoxSql,так как Mssql не использую, попробовал под ODBC (Mysql), сходу не пошел... ;(
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

DFD, CacheTPSABC - не понял

Сообщение kreator »

kreator писал(а): 21 Май 2019, 18:15 TPS позволит, но шаблон формы
Это я погорячился. TPS тоже не позволит. Конечно, если не ломать стандартное поведение. Стандартно дочерние записи должны иметь поле ссылки на родительскую запись. В момент ввода дочерних записей это поле должно быть чем-то заполнено. Если его заполнить чем-то абстрактным, то TPS позволит это сделать (SQL не позволит, если правильно прописать форейн-ключи), но всё равно на экране формы эти записи не появятся. Так что умозрительно это всё.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

SQL сервер - это программа. TPS - это формат хранения данных. Драйвер для работы с tps ничего не знает о целостности и т.п. Он только обеспечивает базовые функции чтения и записи. Поэтому, если сравнивать, то надо сравнивать функции, обеспечиваемые SQL сервером как самостоятельной программы, и программы на кларионе, которая работает с tps. Именно она занимается поддержкой целостности и разными другими вещами, которые выполняет SQL сервер. К слову, actian zen в своей основе (транзакционный движок, работающий с записями), даже про структуру записей не знает. API работает с полями в терминах смещение от начала записи и количество байт в поле. Эти значения вычисляет кларионовская программа (btrieve драйвер в частности) на основании заданной структуры file.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

DFD, CacheTPSABC - не понял

Сообщение kreator »

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

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

Да это просто другая архитектура. Называется встраиваемые базы данных. Всей логикой рулит приложение. Мы же в кларионе для поддержки целостности при работе с tps тоже ничего ручками не пишем. Задаем в словаре, все остальное шаблонами автоматически создается.
Все таблицы в один файл загоняли они по другой причине. На тогдашней технике ресурсов мало было, экономили дескрипторы. Сейчас этим мало кто пользуется, минусов больше, чем плюсов.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

Когда-то давно разговаривал с одним весьма квалифицированным разработчиком, который работал на титульной должности в программистской фирме, пишущей под ms sql. Он сказал, что у них считается, что констрейны это зло, так как затрудняют сопровождение продукта. Не знаю, как сейчас у ms sql (разговор давно был, сейчас может что изменилось), читал, что у продвинутых серверов типа оракла есть возможность махом выключать все констрейны и триггеры. Видимо, как раз по этой самой причине.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

DFD, CacheTPSABC - не понял

Сообщение kreator »

finsoftrz писал(а): 22 Май 2019, 16:57 Мы же в кларионе для поддержки целостности при работе с tps тоже ничего ручками не пишем.
В каком месте есть проверка на запрет ввода дочерних записей с отсутствующем родителем? Никогда не проверял, но всё же. Если я в словаре укажу в Relations два файла с типом "один - ко многим" (Родитель, Ребёнок), шаблоны и классы отработают запрет на ввод в файл Ребёнка записи с несуществующим "Родителем". Вот я что-то сомневаюсь, что такая логика прописана на уровне работы с файлами.
We are hard at work… for you. :)
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

DFD, CacheTPSABC - не понял

Сообщение RaFaeL »

finsoftrz писал(а): 22 Май 2019, 17:13Когда-то давно разговаривал с одним весьма квалифицированным разработчиком, который работал на титульной должности в программистской фирме, пишущей под ms sql. Он сказал, что у них считается, что констрейны это зло, так как затрудняют сопровождение продукта.
Видимо потому что с констрейнтами базу хрен сломаешь логически и сопровождение становится ненужным, как же тогда деньги зарабатывать. А так убрал констрейнты и постоянно "лечишь" базу )) Выгодно!
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

DFD, CacheTPSABC - не понял

Сообщение kreator »

finsoftrz писал(а): 22 Май 2019, 17:13 Он сказал, что у них считается, что констрейны это зло, так как затрудняют сопровождение продукта.
Конечно, зло! Записи не пропадают, вводимые данные соответствуют требуемым величинам, поддержка разработчика не нужна! Однозначно, зло.
В начале миросоздания мироздания была такая теория, что чем больше проблем разработчик зашьёт в программу, тем лучше. Вечно денюжка капать будет.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

По констрейнам, ребята, видимо, вы просто не сталкивались. Не зря же в продвинутых серверах есть функция их отключения.
C6/C11, ШВС, tps/btrieve.
Ответить