C++, SQL, SQLite

Аналог UNNEST в SQLite

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

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

with cte_code(id,code) as (
select rowid, a.* from 
	(values('111'),('222'),('333')) as a),
cte_dates(id,date) as (
select rowid, b.* from 
	(values('2022-08-09'),('2022-08-10'),
	 ('2022-08-11')) as b)

insert into ones(task_id, code, date)
select 1, a.code, b.date
from cte_code a 
inner join cte_dates b on b.id = a.id
Списки поотдельности

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

with cte_pairs(code, date) as (
select * from 
	(values('111', '2022-08-09'),
	 ('222', '2022-08-10'),
	 ('333', '2022-08-11')))

insert into ones(task_id, code, date)
select 1, a.code, a.date
from cte_pairs a
Спарованный список

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

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

QStringList codes, dates;
QString qry = QString("with cte_code(id,code) as ( "
					  "select rowid, a.* from "
					  "(values('%2')) as a), "
					  "cte_dates(id,date) as ( "
					  "select rowid, b.* "
					  "from (values('%1')) as b) "
					  
					  "insert into ones(task_id, code, date) "
					  "select 1, a.code, b.date "
					  "from cte_code a "
					  "inner join cte_dates b on b.id = a.id")
	.arg(dates.join("'), ('"))
	.arg(codes.join("'), ('"));
"Нет" выгоранию, 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…

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

namespace operationButtons {
Q_NAMESPACE
enum buttons {insert=0, update, remove, import_, export_, report, refresh,
             save, print};
Q_ENUM_NS(buttons)
}

Продолжить чтение «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/