DataLife Engine / Доработка функционала редактирования и сохранения данных

Доработка функционала редактирования и сохранения данных

 

День сегодня пошёл малость не по плано. Но ничего худого в этом нет. Просто я занялся не тем, чем планировал вчера заняться. Но тем не менее сегодня я проделал не менее значимые доработки в своей программе. Ну начнем с функций редактирования контента в ячейках таблицы. Для этого я добавил ещё две команды в главное окно, таким образом доведя общее количество команд модели-представления окна до 275. Да, снова круглое число! Но надолго ли. Ведь я сам даже не могу сказать, добавил ли туде ещё новые команды. Это будет видно по мере дальнейшего продвижения в реализации функционала программы. Ну да ладно. А что же это за две новые функции? Идея первой функции пришла сегодня и неожиданно. Во время тестирования сохранения данных в файл базы данных при их редактировании. Возникла такая нужда закодировать строку до её использования в SQL-запросе сохранения в таблице SQLite. Там с кавычками возникали косяки. То есть строка, по краям заключенная в кавычки давала ошибку при выполнении запроса. Пришлось изобретать способы предотвращения данного непорядка.

Ну что ж, эти способы изобрел. Первый способ - в заключении такой строки в дополнительные кавычки при выполнении запроса, а второй - в кодировании этой строки перед сохранением при помощи функции "BASE64_ENCODE" и её оборачивание в определение SQLite-функции "BASE64_DECODE". То есть там при сохранении в базу данных закодированная строка сама раскодировалась. Так что вот так.

Ну и дальше. Всплыло оно небольшое упущение. А именно - вставка определения SQLite-функции прямо в ячейки таблицы. Да, я там по части вставки контента в ячейки сделал не мало. И диаграммы и фигуры и всякие шаблоны. Но не сделал этого. Вставки функций. Так что вот так. Пришлось сегодня это допиливать. И, разумеется, допилил. Сначала я это пытался сделать немного корявым способом - вставил контрол для определения функций прямо в контекстное меню поля редактора контента ячейки. Но потом подумал, что гораздо лучше будет вынести этот определитель функций в отдельное диалоговое окно. Ну в общем так и сделал. И теперь вот оно, это диалоговое окно:

 

Что ж, так смотрится намного симпатичнее. Ну и движемся далее. А далее было упущением не сделать обновления данных в ячейках рядов таблиц, после того, как выполняется сохранение данных в файле БД. Их синхронизацию. Ведь тут (как на скриншотах) имеется таблица со столбцом типа данных "временная метка". А там как раз нужно использовать SQLite-функции. Ну и вот, без синхронизации приходилось после сохранения вручную обновлять отображаемые данные таблицы. А хочется большей автоматизации. Для того, чтобы в ячейках таблицы видеть не определение функции, а сразу результат выполнения этой функции. Вот так. Тут мне пришлось немало повозиться для того, чтобы реализовать эту кажущуюся простой возможность. Но дело сделано и результат представлен на следующем скриншоте:

 

Вот, новый инструмент-кнопка на рядах таблицы. В дополнение к другим. И всё это включается в видимость с помощью настроек отображения таблиц. Там уже туча настроек. И сегодня добавилось ещё несколько. В общем, получилась такая вот синхронизация данных между представлением таблицы и таблицей базы данных SQLite. При нажатии на эту кнопу с кружком из стрелок отправляется SQL-запрос на выборку данных из таблицы БД. Далее полученные данные вставляются в соответствующий ряд. Так что всегда актуальные данные по клику на ряде. Но это работает только если у таблицы есть столбец с авто-инкрементом. Иначе не возможно идентифицировать строку при выборке данных из БД. Так что вот такие пироги.

Ну и вот на этом всё уже. На сегодня. Так что теперь уже до следующих постов и до новых свершений.

11-03-2025, 19:33
Вернуться назад