Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577

Реализация сортировки в зашифрованной базе данных

15.03.2016, 16:30. Показов 1356. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!

Прошу дать совет по реализации задачи.

Имеется зашифрованная БД. За расшифровку данных в BDGrid'е отвечают следующие события:
C++
1
2
void __fastcall TForm2::ADOQuery1name1GetText(TField *Sender, UnicodeString &Text, bool DisplayText)
void __fastcall TForm2::ADOQuery1name1SetText(TField *Sender, const UnicodeString Text)
Для сортировки, использую следующий код:
C++
1
ADOQuery1->Sort="name1";
Но он как-то коряво отображает:
АБ
АВ
ВР
БА

Как мне реализовать сортировку?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.03.2016, 16:30
Ответы с готовыми решениями:

При подключениеи к зашифрованной базе данных всплывает окно "ошибочный пароль"
Доброго времени суток, после разделения базы данных зашифровал внутреннюю часть (с данными), при подключении к внешней части (с формами)...

Дописать функцию сортировки по алфавиту в базе данных
Есть программа база данных. я ее уже расписал. все кроме одной функции sort . в этой функции должна происходить сортировка переменных...

Реализация иерархии классов в базе данных?
Понимаю, что любая база данных очень плохо подходит для ООП. Но все же, какие на практике есть способы реализации иерархии классов в базе...

20
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
15.03.2016, 17:19
Цитата Сообщение от Within_t Посмотреть сообщение
Для сортировки, использую следующий код:
C++
1
ADOQuery1->Sort="name1 ASC";
1
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
15.03.2016, 18:26  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
ADOQuery1->Sort="name1 ASC";
Не помогло(
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
15.03.2016, 19:05
You cannot use OnGetText to compute the value and expect sorting to work. When you sort you are sorting the values that are actually stored in the CDS, not the values that are shown on the screen as the result of the OnGetText event
Так что не пойдет тут просто Sort-ом пользоваться.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
15.03.2016, 23:06
Здесь походу надо запросом сортировать

Добавлено через 25 секунд
volvo, верно я говорю?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
15.03.2016, 23:11
А как запросом дешифровать значения поля? Пока непонятно, как такое провернуть вообще.
1
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
16.03.2016, 04:00
Цитата Сообщение от volvo Посмотреть сообщение
запросом дешифровать значения поля
если дешифровать через запрос, то зачем тогда данные шифровать.
Как вариант: на клиенте в ADOQuery сделать CalculatedField для дешифрованного значения. Через, какой-нибудь, ClientDataSet подсоединиться к ADOQuery и уже сортировать в нем.
Должно сработать.
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
17.03.2016, 10:43  [ТС]
Создал вычисляемое поле, поместил в него расшифрованное значение. А вот как провернуть сортировку, понять не могу.
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
17.03.2016, 10:57
Цитата Сообщение от Within_t Посмотреть сообщение
А вот как провернуть сортировку, понять не могу.
Цитата Сообщение от Bit_Man Посмотреть сообщение
Через, какой-нибудь, ClientDataSet подсоединиться к ADOQuery и уже сортировать в нем.
Это сделал?
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
17.03.2016, 12:37  [ТС]
Не знаю как с ним работать, в инете ни чего стоящего не нашёл)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
17.03.2016, 15:13
Все очень просто. Кому понадобится - все с самого начала, с создания вычислимого поля:

1) создаем в своей ADOQuery вычислимое поле: в инспекторе обхектов ADOQuery1 - Fields - New field, там выставляешь имя поля, тип данных, все остальное, и Field type = Calculated
2) в OnCalcFields для AdoQuery:
C++
1
2
3
4
void __fastcall TForm1::ADOQuery1CalcFields(TDataSet *DataSet)
{
    ADOQuery1NameSort->AsString = Decrypt(ADOQuery1name1->AsString); // NameSort - имя вычислимого поля, name1 - шифрованное поле
}
3) на форму кидаем TClientDataset + TDatasetProvider. Провайдер связываем с ADOQuery, в ClientDataset->ProviderName выставляем этот самый провайдер. DataSource, с которым связан грид, тоже прилепляем к ClientDataset-у.

Всё, теперь для того, чтобы отсортировать по полю NameSort, где хранится расшифрованная информация, достаточно:
C++
1
    ClientDataSet1->IndexFieldNames = "NameSort";
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
17.03.2016, 19:59  [ТС]
Не работает(

Попытался активировать ClientDataSet, вылетает ошибка:
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
17.03.2016, 20:05
Если б не работало - я бы не писал:
до сортировки


после
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
18.03.2016, 04:46  [ТС]
Даже когда смотришь ClientDataSet1->IndexFieldNames, там все пусто(
*в mastersource добавил datasource
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
18.03.2016, 05:33
Цитата Сообщение от Within_t Посмотреть сообщение
*в mastersource добавил datasource
Причем здесь MasterSource и DataSource!
Связка:
C++
1
2
ClientDataSet1->ProviderName = DataSetProvider1;
DataSetProvider1->DataSet = ADOQuery1;
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
18.03.2016, 15:13  [ТС]
ни чего не получается
Новая.rar
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
18.03.2016, 17:02
Твой проект открыть не могу, ибо не держу новых оффисов (только mdb, никаких accdb), вот с mdb, все прекрасно работает:
Вложения
Тип файла: 7z crypted_db.7z (145.4 Кб, 9 просмотров)
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
18.03.2016, 17:35  [ТС]
Ваш проект тоже не запускается, а приложение требует логин и пароль.
Вот наделал скринов
Новая папка (2).rar
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
18.03.2016, 22:24
Цитата Сообщение от Within_t Посмотреть сообщение
а приложение требует логин и пароль.
Нет там никакого логина и никакого пароля. Просто нажать на Ok достаточно. В общем, от темы отписываюсь, интерес потерян...
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
19.03.2016, 05:34  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Нет там никакого логина и никакого пароля. Просто нажать на Ok достаточно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.03.2016, 05:34
Помогаю со студенческими работами здесь

Реализация системы поиска по базе данных
Добрый день. Прошу помощи по реализации системы поиска по базе данных. Имеется таблица базы данных и форма ввода информации. ...

Реализация продажи в базе данных товаров
Всем привет, подскажите как сделать так чтобы из таблицы Товары при нажатии клавиши покупка из 1 datagrid на форме заносились данные в...

Реализация тригера в базе данных SQL
Есть проект c# с базой данных посещений занятий, не получается реализовать тригер, который автоматически будет добавлять строку в таблицу...

Реализация алгоритма сортировки для любых типов данных
Помогите пожалуйста переделать реализацию сортировки так, чтобы она могла работать с любыми типами данных(int, double, etc) Т.е. могла...

Работа с табличными базами данных. Реализация функции сортировки.
Вот код моей программы. Необходимо реализовать функцию сортировки данных!!! //project.cpp - Lab. #8 #define lname 80 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru