Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail



Ответ
 
Опции темы
Старый 10.11.2017, 14:59   #1
superpsih
Форумчанин
 
Регистрация: 14.11.2013
Сообщений: 66
Репутация: 10
По умолчанию Номер записи в запросе

Здравствуйте.
Помогите решить, пожалуйста, следующую задачу.
Есть запрос, который выдаёт несколько записей. Хочу сделать вычисляемое поле, которое показывало бы номер каждой записи. Т.е. если записей всего три запрос выдал, то в этом поле были бы цифры, соответствующие номеру строки.
Изображения
Тип файла: png 2017-11-10_14-59-35.png (9.9 Кб, 44 просмотров)
superpsih вне форума   Ответить с цитированием
Старый 10.11.2017, 15:28   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 22,820
Репутация: 5078
По умолчанию

c SQL.RU - отсюда

Цитата:
Код:

Q7: Как сымитировать счетчик в обычном запросе либо ленточной форме?

A1:
SELECT (Select Sum(1) From t AS p Where p.f<=p1.f), p1.f
FROM t AS p1
ORDER BY p1.f;

A2:
SELECT DCount("f", "t","f<=" & CStr(f)), f
FROM t
ORDER BY f;

Примечание 1. Поле f обязано быть уникальным.

Примечание 2. Способ 1 быстрее работает, но является необновляемым.

Примечание 3. Аналогичный вопрос в другом разделе FAQ: http://www.sql.ru/faq/faq_topic.aspx?fid=126

A3: В новых версиях Аксесса у формы есть свойство CurrentRecord.

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 10.11.2017, 16:28   #3
superpsih
Форумчанин
 
Регистрация: 14.11.2013
Сообщений: 66
Репутация: 10
По умолчанию

Не очень понял, как этим пользоваться.
Можете на тестовой БД показать?
Сделал как во втором варианте, но у меня не работает.
Вложения
Тип файла: zip count.zip (24.2 Кб, 1 просмотров)

Последний раз редактировалось superpsih; 10.11.2017 в 16:40.
superpsih вне форума   Ответить с цитированием
Старый 10.11.2017, 16:51   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 22,820
Репутация: 5078
По умолчанию

Цитата:
Сообщение от superpsih Посмотреть сообщение
Не очень понял, как этим пользоваться.
ага. вижу.


Код:

SELECT DCount("id", "t","id<=" & CStr(id)), id, * FROM t
ORDER BY id;

вместо f нужно указать название поля, которое заведомо уникально в вашей таблице. например, id


по первому варианту для вашей таблицы:
Код:

SELECT (Select Sum(1) From t AS p Where p.id<=p1.id), p1.*
FROM t AS p1
ORDER BY p1.id;


а так будет выглядеть запрос по варианту 1, если нужно отобрать не все записи, а, допустим, только те, что содержат подстроку "gh" в поле f:
Код:

SELECT (Select Sum(1) From t AS p Where p.id<=p1.id and p.f like '*gh*'), p1.*
FROM t AS p1
where p1.f like '*gh*'
ORDER BY p1.id;


Последний раз редактировалось Serge_Bliznykov; 10.11.2017 в 16:57.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 10.11.2017, 16:56   #5
superpsih
Форумчанин
 
Регистрация: 14.11.2013
Сообщений: 66
Репутация: 10
По умолчанию

Ух ты! Круто! Работает! Спасибо, вам, большое!
superpsih вне форума   Ответить с цитированием
Старый 10.11.2017, 17:28   #6
superpsih
Форумчанин
 
Регистрация: 14.11.2013
Сообщений: 66
Репутация: 10
По умолчанию

В тесте всё работает, а в рабочей БД отказывается. По первому варианту считает не правильно (поле count). По второму варианту База данных вылетает после того как в Design View я устанавливаю связь между двумя таблицами и открываю табличный вид запросы. Вот код, который не правильно считает.
Код:

SELECT continuous_properties.Place_x_number, continuous_properties.I_x, continuous_properties.P1_x, continuous_properties.P2_x, continuous_properties.date1_x, continuous_properties.date2_x, continuous_properties.lifetime_testing, continuous_properties.number_of_holder_link, DCount("id","continuous_properties","[continuous_properties]![id]<=" & CStr([continuous_properties].[id])) AS [count]
FROM continuous_properties INNER JOIN group_list ON continuous_properties.ID = group_list.lot_g
WHERE (((continuous_properties.Place_x_number)=[Forms]![lifetime_testing]![Place]) AND ((continuous_properties.date1_x)=[Forms]![lifetime_testing]![date1]));

Вот код, который вешает базу:
Код:

SELECT (Select Sum(1) From continuous_properties AS p Where p.id<=p1.id) AS Expr1
FROM continuous_properties AS p1 INNER JOIN group_list ON p1.ID = group_list.lot_g
ORDER BY p1.id;

Изображения
Тип файла: png 2017-11-10_17-24-41.png (13.4 Кб, 0 просмотров)
superpsih вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Номер записи в таблице. FoxPro. Kingdom_Reborn Помощь студентам 0 03.12.2010 23:48
Добавление записи в запросе при условии Rekky SQL, базы данных 11 29.07.2010 14:22
Порядковый номер записи Yur@ БД в Delphi 4 25.12.2009 09:37
Номер текущей записи Streetmagic БД в Delphi 5 25.12.2009 08:43
НОМЕР ЗАПИСИ))) chekanoff БД в Delphi 2 02.04.2008 09:18




13:52.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru