C++, SQL, SQLite

Аналог UNNEST в SQLite

Такой удобной функции, как UNNEST, в SQLite нет (пссс, об UNNEST в PostgreSQL я писала вот здесь). А что использовать, если нам нужно элементы некоего массива/списка/контейнера впихнуть в один запрос вставки данных, например? Можно воспользоваться WITH и VALUES.

Предположим, у нас есть два списка — список кодов и список соответствующих им дат. Можно коды и даты скомпоновать сразу парами, можно — раздельно. В каких-то конкретных случаях будут разные ситуации.

[pastacode lang=»sql» manual=»with%20cte_code(id%2Ccode)%20as%20(%0Aselect%20rowid%2C%20a.*%20from%20%0A%09(values(‘111’)%2C(‘222’)%2C(‘333’))%20as%20a)%2C%0Acte_dates(id%2Cdate)%20as%20(%0Aselect%20rowid%2C%20b.*%20from%20%0A%09(values(‘2022-08-09’)%2C(‘2022-08-10’)%2C%0A%09%20(‘2022-08-11’))%20as%20b)%0A%0Ainsert%20into%20ones(task_id%2C%20code%2C%20date)%0Aselect%201%2C%20a.code%2C%20b.date%0Afrom%20cte_code%20a%20%0Ainner%20join%20cte_dates%20b%20on%20b.id%20%3D%20a.id» message=»Списки поотдельности» highlight=»1,4,9″ provider=»manual»/]

cte_code — список кодов, cte_dates — список дат. task_id — некая константа.

[pastacode lang=»sql» manual=»with%20cte_pairs(code%2C%20date)%20as%20(%0Aselect%20*%20from%20%0A%09(values(‘111’%2C%20’2022-08-09’)%2C%0A%09%20(‘222’%2C%20’2022-08-10’)%2C%0A%09%20(‘333’%2C%20’2022-08-11’)))%0A%0Ainsert%20into%20ones(task_id%2C%20code%2C%20date)%0Aselect%201%2C%20a.code%2C%20a.date%0Afrom%20cte_pairs%20a» message=»Спарованный список» highlight=»1″ provider=»manual»/]

cte_pairs — оба наших списка в одном.

Строка запроса в Qt C++, учитывая наличие QStringList codes и QStringList dates, может выглядеть так:

[pastacode lang=»cpp» manual=»QStringList%20codes%2C%20dates%3B%0AQString%20qry%20%3D%20QString(%22with%20cte_code(id%2Ccode)%20as%20(%20%22%0A%09%09%09%09%09%20%20%22select%20rowid%2C%20a.*%20from%20%22%0A%09%09%09%09%09%20%20%22(values(‘%252’))%20as%20a)%2C%20%22%0A%09%09%09%09%09%20%20%22cte_dates(id%2Cdate)%20as%20(%20%22%0A%09%09%09%09%09%20%20%22select%20rowid%2C%20b.*%20%22%0A%09%09%09%09%09%20%20%22from%20(values(‘%251′))%20as%20b)%20%22%0A%09%09%09%09%09%20%20%0A%09%09%09%09%09%20%20%22insert%20into%20ones(task_id%2C%20code%2C%20date)%20%22%0A%09%09%09%09%09%20%20%22select%201%2C%20a.code%2C%20b.date%20%22%0A%09%09%09%09%09%20%20%22from%20cte_code%20a%20%22%0A%09%09%09%09%09%20%20%22inner%20join%20cte_dates%20b%20on%20b.id%20%3D%20a.id%22)%0A%09.arg(dates.join(%22’)%2C%20(‘%22))%0A%09.arg(codes.join(%22’)%2C%20(‘%22))%3B» message=»» highlight=»» provider=»manual»/]

"Нет" выгоранию, C++, PostgreSQL, Qt, Мысли вслух

Незамеченные записи 2019 года

Начнем еще одну традицию — заведем тему о скромных темах. Стоят там в сторонке, никто на них не смотрит 🙂

  1. «Нет» выгоранию: прогулки на свежем воздухе
  2. Волшебство в обычном месте
  3. Мини-путешествие к Браславским озёрам
  4. Jobs trace: Учет потраченного на проекты времени
  5. Няня вместо мамы для больничных детей
  6. Qt: Добавить свой виджет на форму
  7. DBRecordWidget — Библиотека-виджет для работы с данными (Qt)
  8. Вывод даты с указанием часового и минутного смещения timezone в PostgreSQL
  9. Количество подключений к БД PostgreSQL
  10. Изменить цвет фона и текста ячейки или строки QTableView
C++, Qt, Портфолио

Jobs trace: Учет потраченного на проекты времени

В сообщении Qt: Добавить свой виджет на форму уже немного рассказала по поводу вышеуказанной темы. А тема — небольшая программка Jobs trace 🙂

Я вписывала в Гугл таблицы проведенное время над тем или иным проектом или отдельным заданием и , исходя из этих данных, высчитывала стоимость работы. Но для меня такой вариант не очень удобен — каждый раз регистрировать время начала и конца, потом это все подводить к итогу и т.д. Мне показалось это муторным, я решила поискать какой-то онлайн подсчитыватель отработанного времени. Но все это было не то. Было решено — напишу так, как надо мне, чтобы было просто и удобно:

  • Признак начала и конца работы над проектом — один клик по кнопке
  • Автоматический расчет стоимости работы по введенной почасовой ставке
  • Сохранение данных текущих заданий
  • Возможность ведения нескольких заданий
  • Каждое задание на своей вкладке
  • Присваивать заданию пользовательское название
  • После переоткрытия приложения разворачивать данные уже имеющихся заданий
  • Удаление заданий кликом по кнопке

[metaslider id=819]

Данные задания записываются в текстовый файл с содержимым вида:

<Название задания>

<Количество потраченных на проект секунд>

<Почасовая ставка>

При постановке задания на паузу и при выходе из программы этот файл обновляется. Также записывается текущий лог хода работы над проектом в отдельный файл (в качестве дополнительной аналитической информации).

Сам проект Jobs trace можно посмотреть/скачать/склонировать на bitbucket.org: https://bitbucket.org/secretsilent/jobstrace/

C++, Qt, Портфолио

Эмулятор работы инспектора машинного зрения (формирование выходных файлов)

При написании одного проекта мне необходимо обрабатывать файлы, формируемые на основании полученных данных от инспектора машинного зрения. Содержимое файла — список штрих-кодов определенного количества, наименование файла — <год месяц день>_<штрих-код короба>. Эти файлы сохраняются в определенном каталоге,  а формируются с периодичность N миллисекунд. Для тестирования приложения мне необходимо написать эмулятор такого «инспектора». Приложение будет формировать файлы со списком штрих-кодов и сохранять в заданный каталог.

главное окно эмулятора

Основной класс, отвечающий за работу эмулятора выглядит таким образом: Продолжить чтение «Эмулятор работы инспектора машинного зрения (формирование выходных файлов)»

C++, Qt, Портфолио

DBRecordWidget — Библиотека-виджет для работы с данными (Qt)

Сегодня вашему вниманию предстанет моя библиотека DBRecordWidget, которую я написала на Qt для удобства разработки пользовательского интерфейса приложения, требующего работу с моделями данных. Это могут быть и SQL модели, и другие. Библиотека не зависит от разновидности.

Открыта для общего доступа на BitBucket:

https://secretsilent@bitbucket.org/slalimited/dbrecordwidget.git

Поподробнее о DBRecordWidget…

Библиотека представляет собой виджет, где можно добавить кнопки Добавить, Изменить, Удалить, Экспорт, Импорт и пр. — в перечислении:

[pastacode lang=»cpp» manual=»namespace%20operationButtons%20%7B%0AQ_NAMESPACE%0Aenum%20buttons%20%7Binsert%3D0%2C%20update%2C%20remove%2C%20import_%2C%20export_%2C%20report%2C%20refresh%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20save%2C%20print%7D%3B%0AQ_ENUM_NS(buttons)%0A%7D» message=»» highlight=»» provider=»manual»/]

Продолжить чтение «DBRecordWidget — Библиотека-виджет для работы с данными (Qt)»

C++, SQL, Базы данных, Портфолио

Информационная система для учебной части университета StudyLoad

Информационная система для учебной части университета StudyLoad выполнена в C++Builder + MS SQL Server 2008 R2. Изображение в полном размере.

Функции:

  • Ведение данных о ФГОС и Профстандартах
  • Ведение информации о кафедрах, специальностях, направлениях.
  • Составление сопоставлений ФГОС + Профессиональный стандарт.
  • Составление отчетов.

Чтобы заказать проект или получить консультацию, перейдите, пожалуйста, на страницу Контакты.

Моё портфолио

Инфо обо мне

C++, Qt, Базы данных

Отображение данных выборки в виджете QTableView

Предположим, что на форме расположен объект класса QStackedWidget, на страницах которого расположены объекты QTableView, отображающие различные данные. В один момент времени данные будут отображаться только в одном из виджетов QTableView (по одному на страницу stacked widget). Объявим модель для данных типа QSqlQueryModel: Продолжить чтение «Отображение данных выборки в виджете QTableView»

Автоматизированная система работы сервисного центра Москва
C++, Базы данных, Портфолио

SVCenter. Автоматизация работы сервисного центра. C++Builder + MS SQL Server

SVCenter, Автоматизированная система обработки информации сервисного центра, г.Москва. Выполнена в C++Builder + MS SQL Server. Открыть исходное изображение.

Задачи системы:

  • ведение (добавление, редактирование, удаление) данных
  • регистрация работ с единицей техники от приема до выдачи клиенту, включая загрузку необходимых для работы фотографий
  • составление соответствующей документации для печати (договоры, акты и пр.)
  • экспорт необходимых данных в MS Excel
  • ведение базы клиентов
  • разделение уровней доступа к программе (администратор, начальник участка и пр.)

 

Моё портфолио

Связь со мной 

Автоматизированная система Складской учет C++Builder MySQL
C++, Delphi, Базы данных, Портфолио

АС «Складской учет». C++ Builder + MySQL

Автоматизированная система «Складской учет» выполнена в среде разработки C++ Builder + СУБД MySQL. Учебный проект. Посмотреть изображение в полном размере.

Функции:

  • Ведение (добавление, редактирование, удаление) данных БД
  • Учет текущего количества товара на складе
  • Поставка, отгрузка и возврат товара
  • Формирование соответствующих актов для последующей печати.

Чтобы заказать проект или получить консультацию, перейдите, пожалуйста, на страницу Контакты.

Посмотрите другие работы — моё портфолио: https://secretsilent.ru/портфолио/

Инфо обо мне — давайте знакомиться! 🙂 https://secretsilent.ru/info/

ИС Библиотека. C++ Builder + Access
C++, Базы данных, Портфолио

Информационная система «Библиотека»: C++ Builder + MS Access

Информационная система «Библиотека». Выполнена в C++ Builder + Microsoft Access. Учебный проект. Изображение в полном размере.

Функции:

  • Просмотр, поиск и фильтрация данных
  • Ведение (добавление, редактирование, удаление) данных.

Чтобы заказать проект или получить консультацию, перейдите, пожалуйста, на страницу Контакты.

Моё портфолио: https://secretsilent.ru/портфолио/

Давайте знакомиться! Инфо обо мне: https://secretsilent.ru/info/