Страница 2 из 4

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

Добавлено: 21 Май 2019, 20:03
gopstop2007
пример FillListBoxSql,так как Mssql не использую, попробовал под ODBC (Mysql), сходу не пошел... ;(

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

Добавлено: 22 Май 2019, 16:16
kreator
Я уже несколько десятков лет радуюсь, что есть программы, которые занимаются поддержкой целостности БД и разными другими вещами. Не приходиться тратить усилия на очевидные вещи.
Кстати (не помню высказывал ли здесь эту мысль), Велосипедисты ещё в бытность обычными пастухами, когда затевали формат TPS, могли бы внедрить в него поддержку всего того, что есть сейчас на стороне сервера БД. А-ля sqlite. Думаю, можно было бы получить неплохую прибавку к пенсии. Загнать все таблицы и индексы в один физический файл додумались, а дальше дело не пошло.

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

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

DFD, CacheTPSABC - не понял

Добавлено: 22 Май 2019, 17:55
finsoftrz
По констрейнам, ребята, видимо, вы просто не сталкивались. Не зря же в продвинутых серверах есть функция их отключения.