UniGUI.DBGrid.RowsFetching. Пост-подсказка

Запутался немного в “фетчингах” UniGUI и FireDAC. Вижу, что в UniDBGrid выводятся не все записи, хотя если отправлять данные в обычный DBGrid, то всё будет в порядке.

Немного поизучал свойства UniDBGrid и увидел галочку FetchALL. Теперь записи отображаются все и целиком.

 

Delphi. MySQL. Считаем сумму заказа через Delphi и MySQL

Есть таблицы. Далее будут эволюционировать по мере написания поста.

39

Требуется посчитать сумму заказа. Самый простой способ, сделать это через MySQL

Вариант посложнее, через Delphi. Continue reading

MySQL. 2 способа пересечения множеств и объединения таблиц

Есть следующая структура

36

Нужно составить вот такую таблицу

37

Часть данных у нас в одной таблице, часть данных в другой. Как получить это за один запрос?

1 способ (спасибо Денису Зубову из Самары)

2 способ

На выходе получим

38

Но есть одна проблема – поля с одинаковыми названиями, тогда делаем так…

либо так…

 

Delphi. MySQL. Пишем в DECIMAL поле и читаем из него.

Есть Decimal поле для цены в одном из проектов. Есть на форме 2 spinEdit, рубли и копейки соответственно.

33

Чтение из базы

Получение дробной части из Float(Real)

Получение целой и дробной частей для загрузки на форму

Запись в базу

 

MySQL. Удаление записей с истекшим сроком давности

в базе

27

код, пример из проекта, допустим нам нужно удалить записи со сроком давности > 1 минуты

 

MySQL. Insert in table with foreign-key

Шпаргалочка. Допустим sessions_id это foreign key другой таблицы. Вот как можно вставить в таблицу с foreign key

 

Delphi. Делаем простой DBPaginator на примере MySQL

Понадобилось ручное листание страниц (определенного заранее числа записей на странице). Пользуюсь FireDAC, знаю, что там это уже реализовано, но после нескольких попыток понял, что хочу сделать такую штуку сам, поскольку явно пригодится в других языках и технологиях. Итак, вот что у меня получилось.

47

48

Проект выглядит примерно так…

46

Исходники

385_FireDacRowsFetching

Описание кода

Как видно здесь 2 FDQuery ,один из них основной, другой просто считает число записей в таблице. SQL запрос основного FDQuery должен быть без точки с запятой на конце, так как мы должны добавить инструкцию LIMIT StartRow, CountOfRows к основному запросу. Я здесь не делал акцент на подключении, а просто забил параметры подключения в FDConnection и подключил Queries к FDConnection визуально, хотя по хорошему, надо подключать их в коде. Но хотелось сосредоточиться на другом, именно на паджинаторе. Итак, основная работа у нас происходит в uDBPagination.

Требования к запросу SQL

В принципе он может быть любым SELECTом, главное, чтобы в его конец можно было добавить инструкцию LIMIT StartRow, CountOfRows 

В моем случае это был

Функционал 

-загрузить первую страницу

-загрузить следующую страницу

-загрузить предыдущую страницу

Далее описание юнитов Continue reading

Delphi. MySQL. Реализуем поиск вхождений, регистрозависимый поиск, поиск точной фразы.

Сделать это довольно просто, опираясь на запросы SQL, которые я рассмотрел в предыдущем посте. Вот что у нас получится

2

А если поиск ничего не обнаружил, получим следующее

3

Итак, оформим такую панель поиска

1

Всего будет 3 типа поиска

-Поиск вхождений

-Точное соответствие

-Регистронезависимый поиск

Будем собирать ID записей, при нажатии на “Найти” будем ставить курсор на первую запись в найденной выборке, либо сообщать, что ничего не найдено.

При нажатии на стрелки вправо или влево будем перемещать курсор на соответствующие записи в общей выборке.

Перво-наперво создадим запросы, по аналогии с тем, как это мы делали в прошлом посте

Поиск вхождений

Continue reading