powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пронумеровать строки в запросе/DBGrid'e.
24 сообщений из 24, страница 1 из 1
Пронумеровать строки в запросе/DBGrid'e.
    #32374581
Андрей GR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, а как можно пронумеровать строки в TDBGrid ?
SQL/DBGrid ?
К примеру:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
___________
| 1 |  Иванов |
 -------------
 
| 2 |  Петров |
 -------------
 
| 3 |  Сидоров|
 -------------
 
P.S. К индексам прошу не отправлять, поскольку сортировака может быть разная и критерии отбора тоже.
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32374707
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СУБД?
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32374718
1man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта тема уже обсуждалась - поищи в "Поиске"
Мне представляется, что наиболее простое решение - через left join присоединить таблицу, содержащую номера 1,2,3...
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32375014
Юрец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай так.
В Query создай новое поле Nomer типа Calculated.
В обработчик события onCalcFields для этого компонента напиши типа:
QueryNomer.AsInteger:=Query.RecNo;
Будет правильная нумерация не зависимо от сортировки.
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32375210
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/50163&pg=2#350523
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32375267
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нумерация строк возможна методами СУБД, то, IMHO, проще ими и воспользоваться.
Напимер, для DB2 7.2
Код: plaintext
1.
2.
SELECT CAST(ROW_NUMBER() OVER() AS INTEGER) AS ROW_NUM, T1.NAME
FROM TABLE1 AS T1
ORDER BY T1.NAME
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32375528
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CaclField & RecNo годятся до поры до времени! Потом Filer автор установит и будет спрашивать куда делся правильный порядок?

Лучше средствами СУБД + не использовать для этого набора данных Filter!

С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32375535
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS: Кроме фильтра еще может локальная сортировка поменяться!
А можно обойтись без этих "наворотов"?

С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32375587
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без "наворотов" ?
Вряд ли.
Возможные пути

1. Использовать не DBGrid а TDrawGrid и устанавливать параметры и рисовать ручками. Мда. Неприятно, но можно.

2. В случае ADO можно использовать AbsolutePosition - работает и с фильтром
и с сортировкой. Правда проверено только для _Recordset`а,
для TADODataSet не знаю как будет работать
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32375602
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Фильтровать и сортировать только на сервере, в запросе вызывать хранимую процедуру, которая и сформирует твой № п/п
2. А можно узнать, что за задача такая, чтобы юзер обязательно видел нумерацию в гриде?
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32375756
Berg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2mv:
Да, конечно, нет такой "задачи". Просто юзера или начальник требуют, чтобы номерок стоял. Привыкли к Excel, допустим и ломает их отсутствие оного...
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32375838
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столько проблем из - за теток-бухгалтеров...
Обойдутся и без номеров.
Для отмазки - пообещай, что обязательно сделаешь, и занимайся чем-либо полезным. Когда спросят со всей "строгостью", покажи "самому главному начальнику", что "конечно, можно, но для этого придется срочно бросить разработку чего-то очень срочного и важного . Недели на две. Без гарантии результата."
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376116
vlad451
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сработает при условии наличия поля id в таблице

select o1.id, count(o2.id) as num
from o1
join o2
on o1.id > o2.id
group by o1.id
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376151
vlad451
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один способ, найденный в сети (он более прост, чем тот, который написал я):

select rowcounter =
(select count(*) from a2
where a1.id >= a2.id),
* from a1
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376155
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А-бал-деть!

select rowcounter =
(select count(*) from a2
where a1.id >= a2.id),
* from a1


А сортировать/фильтровать не будем?
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376175
vlad451
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Специально для my:
если написать
Код: plaintext
order by <имя_поля>
получим сортировку
если написать
Код: plaintext
where <условие>
получим фильтрацию
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376181
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ма-лад-ца!
А не забыл, что со всем эти еще и записи нумеровать надо?
И не в порядке, определяемом id, и как злобный юзер желает, "по порядку, сверху вниз", типа отфильтровал три записи - они должны быть под номерами 1,2,3...
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376188
vlad451
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для mv:
да ты запрос-то запусти, он именно это и делает!!!
Уж потом критиковать будешь.
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376220
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, я отсортирую по полю "MyName" (char) или "MyDate" (DateTime) - что будет?
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376229
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql ansi92 вообще не знаем?
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376230
vlad451
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТЫ ЗАПРОС ЗАПУСКАЛ?
ЕСЛИ НЕТ, ТО ПРОДОЛЖАТЬ ДАЛЬШЕ НЕ ВИЖУ СМЫСЛА.
КРИТИКОВАТЬ МОЖНО ДО БЕСКОНЕЧНОСТИ
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376325
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> vlad451
ШИКАРНЫЙ КВЕРИ...!!!
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376396
Андрей GR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может компонент на основе TDBGrid уже есть, где устроена нумерация строк ?
Ы ? :-)
P.S. D7+ADO+Access 2000.
...
Рейтинг: 0 / 0
Пронумеровать строки в запросе/DBGrid'e.
    #32376543
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vlad451
Попробовал этот запрос:
Код: plaintext
1.
2.
3.
select rowcounter = 
(select count(*) from a2 
where a1.id >= a2.id), 
* from a1

точнее, немного модифицированный для моей таблицы:
Код: plaintext
1.
2.
3.
select
(select count(C2.IDCORRS) from CORRS C2 where C1.CNAME >= C2.CNAME) as rowcounter,
C1.* from CORRS C1
order by C1.CNAME


При попытке сортировки по полю(кроме id) неправильно показывает rowcounter
надо менять where C1.CNAME >= C2.CNAME , и при попытке поставить where (C1.CNAME like 'В%') ... в общем не работает :(

Если Вы уверены в своей правоте, то продемонстрируйте постановку №пп к запросу:
Код: plaintext
1.
2.
select name, birthday from t1 where name like 'Ж%' order by birthday, name
name - varchar(...)
birthday - date

Стало действительно интересно и полезно, может и пригодится где.

С уважением, Denis Uskov
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пронумеровать строки в запросе/DBGrid'e.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]