Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
MS Access

Не работает сортировка через запросы SQL

14.10.2017, 09:40. Показов 2028. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сортировка происходит абсолютно криво, сразу по всем полям, обратная сортировка не работает, но отлично работает сортировка по Коду

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
procedure TFMain.DBGrid1TitleClick(Column: TColumn);
var i:integer;
begin
begin
if not(last1=Column.FieldName) then sorti:=0;
case sorti of
0: begin
   last1:=Column.FieldName;
   DataModule2.QPac.Active:=false;
   DataModule2.QPac.SQL.Clear;
   DataModule2.QPac.SQL.Add('Select * from Пациенты ORDER BY column ASC');
   DataModule2.QPac.Parameters.ParamByName('column').Value:=last1;
   DataModule2.QPac.Active:=true;
   FMain.Caption:=inttostr(sorti);
   sorti:=1;
   end;
1: begin
   last1:=Column.FieldName;
   DataModule2.QPac.Active:=false;
   DataModule2.QPac.SQL.Clear;
   DataModule2.QPac.SQL.Add('Select * from Пациенты ORDER BY column DESC');
   DataModule2.QPac.Parameters.ParamByName('column').Value:=last1;
   DataModule2.QPac.Active:=true;
   FMain.Caption:=inttostr(sorti);
   sorti:=2;
   end;
2: begin
   last1:=Column.FieldName;
    DataModule2.QPac.Active:=false;
   DataModule2.QPac.SQL.Clear;
   DataModule2.QPac.SQL.Add('Select * from Пациенты ORDER BY Код ASC');
   DataModule2.QPac.Active:=true;
   FMain.Caption:=inttostr(sorti);
   sorti:=0;
   end;
end;
 
end;
 
end;
Вложения
Тип файла: rar database mod 13.rar (3.39 Мб, 2 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2017, 09:40
Ответы с готовыми решениями:

Поиск через SQL запросы в бд
Всем, день добрый и заранее спасибо) Делаю, для зачёта и экзамена бд по регистратуре поликлиники Подскажите, какие запросы...

Ajax запросы через SQL
Здравствуйте! Помогите плииз! Взялся за изучение XML. Прочел, ознакомился, рассматривал пару примеров, но не мог разобраться в...

Сортировка в гриде через запросы
Уважаемые программисты помогите разобратся по такому вопросу Вот код void __fastcall TMainForm::DBGrid1TitleClick(TColumn...

13
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
14.10.2017, 10:25
Забыт символ двоеточие перед именем параметра.
0
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
14.10.2017, 10:47  [ТС]
Поставил, ничего не изменилось, asc работает криво, desc не работает вовсе
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
14.10.2017, 11:02
Проверил: любая сортировка работает как ей предписано, т.е правильно.
0
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
14.10.2017, 11:12  [ТС]
Сколько бы я не жал по "фамилия", DESC отказывается работать
и ORDER BY Код ASC работает почему-то в обратном порядке
Миниатюры
Не работает сортировка через запросы SQL   Не работает сортировка через запросы SQL   Не работает сортировка через запросы SQL  

Не работает сортировка через запросы SQL  
0
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
14.10.2017, 11:13  [ТС]
видно что sorti меняет значение, но Order by Фамилия DESC не работает
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
14.10.2017, 11:19
Да,правда, не работает. Надо разбираться.
Для этого нужно временно заблокировать третье ветвление, где происходит сортировка по коду.
0
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
14.10.2017, 11:32  [ТС]
Если вместо параметра указать сразу нормальное значение, то всё работает, вероятно в параметр сам нужно записывать ASC\DESC

даже если сразу в параметр вписываем, SQL игнорирует наше DESC


Оно вовсе игнорирует значение Column.FieldName, потому что если жать на поле "Код", будет идти сортировка исключительно в обратном порядке
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
14.10.2017, 11:35
Лучший ответ Сообщение было отмечено Solaris5000 как решение

Решение

Такая переделка процедуры привела в чувство сортировку по любом полю (и прямую и обратную):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TFMain.DBGrid1TitleClick(Column: TColumn);
var i:integer;
begin
  DataModule2.QPac.SQL.Text := 'Select * from Пациенты ORDER BY ['+
                               Column.FieldName+']';
  case sorti of
    0: sorti:=1;
    1: begin
      DataModule2.QPac.SQL.Text := DataModule2.QPac.SQL.Text + ' DESC';
      sorti:=0;
    end;
  end;
 
  DataModule2.QPac.DisableControls;
  DataModule2.QPac.Open;
  DataModule2.QPac.EnableControls;
  FMain.Caption := inttostr(sorti);
end;
0
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
14.10.2017, 11:52  [ТС]
Теперь новая проблема, переменная sorti, которая овтечает за порядок сортировки отказывается приниамть какое-либо значение кроме 1
а, потому что в коде отсутствовало присвоение переменной last1, а я не заметил этого

добавил присвоение last1:=Column.FieldName; и вывод на название формы FMain.Caption := inttostr(sorti)+last1;
в итоге выясняется что в last1 нет значения никакого

Добавлено через 8 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TFMain.DBGrid1TitleClick(Column: TColumn);
var i:integer;
begin
if not(last1=Column.FieldName) then sorti:=0;
last1:=Column.FieldName;
DataModule2.QPac.SQL.Text := 'Select * from Пациенты ORDER BY ['+
                               last1+'] ';
  case sorti of
    0: begin sorti:=1; end;
    1: begin
      DataModule2.QPac.SQL.Text := DataModule2.QPac.SQL.Text + ' DESC';
      sorti:=2;
    end;
    2: begin
       DataModule2.QPac.SQL.Text := 'Select * from Пациенты ORDER BY Код  ASC';
       sorti:=0;
      end;
  end;
  DataModule2.QPac.DisableControls;
  DataModule2.QPac.Open;
  DataModule2.QPac.EnableControls;
  FMain.Caption := inttostr(sorti)+last1;
end;
так оно работает, но поле "дата рождения" криво сортирует, лишь по дням
0
14.10.2017, 11:54

Не по теме:

Цитата Сообщение от Solaris5000 Посмотреть сообщение
переменная sorti, которая овтечает за порядок сортировки отказывается приниамть какое-либо значение кроме 1
восстание переменных

кто у вас программы пишет? вы их или они вас?
не работает - берешь отладчик и сидишь и сидишь пока не сделаешь

0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
14.10.2017, 11:58
Зачем нужна сортировка по коду? Мешает нормальной сортировке.
У меня без нее и даты сортируются правильно.
1
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
14.10.2017, 12:09  [ТС]
Разобрался, там нужно что бы формат даты при сортировке был YYYY.MM.DD, но мне нужно что бы формат на DBGrid был DD.MM.YYYY, для чего у меня есть в датамодуле строка
Delphi
1
TDateTimeField(QPac.FieldByName('Дата рождения')).DisplayFormat :=('DD.MM.YYYY');
но как ради сортировки поменять этот формат?

Цитата Сообщение от Скандербег Посмотреть сообщение
Зачем нужна сортировка по коду? Мешает нормальной сортировке.
У меня без нее и даты сортируются правильно.
С нас требуют, что бы при третьем нажатии таблица возвращалась к исходному виду

Добавлено через 6 минут
Всё работает, спасибо
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
14.10.2017, 12:15
Цитата Сообщение от Solaris5000 Посмотреть сообщение
нужно что бы формат даты при сортировке был YYYY.MM.DD
Проблема, может быть, зависит от локальных установок. Ведь у меня даты в этой программе сортируются правильно, хотя установленный формат я в датамодуле не менял, т.е. как был ...DisplayFormat :=('DD.MM.YYYY'), так и остался.
ADO адекватно преобразует форматы дат для того чтобы передавать их в Аксесс.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.10.2017, 12:15
Помогаю со студенческими работами здесь

SQL запросы через ADO в ExcelVBA
Народ есть следующий код выполняю insert на SQL серваке инфа не добавляется :( не понимаю почему ??? тотже запрос на SQL query...

Добавление информации в бд через sql запросы
Здравствуйте, уважаемые форумчане. Появилась небольшая проблема - никак не могу сделать нормальное добавление. Точнее говоря, код,...

Подготовленные sql запросы - как это работает?
Здравствуйте! Сегодня услышал о подготовленных sql запросах, и хотел бы узнать по подробнее, как это работает и как выглядит простой...

Некоторые запросы через построитель (без sql)
Кто может помочь сделать такие запросы с помощью построителя. БД содержит 3 таблицы студенты - оценки - родители 1) Выбрать всех...

Не добавляется новая запись в dbgrid через sql запросы
procedure TF_KMR.ToolButton1Click(Sender: TObject); Var kmr:string; begin Q2.Close; Q2.DatabaseName:='ARENA_'; ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru