powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / нумерация строк в сложном запросе
25 сообщений из 26, страница 1 из 2
нумерация строк в сложном запросе
    #39324392
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Помогите сделать нумерацию строк для такого запроса:

Код: sql
1.
2.
3.
SELECT Тип_инструмента.Тип_инструмента, Инструмент.Маркировка, Инструмент.Id_инструмент
FROM Тип_инструмента INNER JOIN Инструмент ON Тип_инструмента.id_тип_инструмента = Инструмент.id_тип_инструмента
ORDER BY Тип_инструмента.Тип_инструмента, Инструмент.Маркировка;




Если запрос обращается только к 1 таблице я знаю как нумерацию сделать, а вот когда нужно к нескольким таблицам обращаться - не получается.
Вот этот запрос с нумерацией с обращением к 1 таблице. (в поле "Маркировка" могут быть повторяющиеся значения)

Код: sql
1.
2.
3.
4.
5.
SELECT (Select Sum(1) 	
From Инструмент q1 
Where q1.Маркировка & q1.Id_инструмент<= q2.Маркировка & q2.Id_инструмент) AS №, q2.Маркировка
FROM Инструмент AS q2
ORDER BY Маркировка & Id_инструмент;
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39324586
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала записи надо как-то упорядочить (отсортировать), а уж потом нумеровать.(определитесь с критерием)
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39324589
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу не читать сообщение
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39325371
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что никто не решал проблему нумерации строк в сложных запросах?
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39325380
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969...что никто не решал проблему нумерации строк в сложных запросах?...
А нафига это надо?
Если нужно нумеровать строки, то для этого можно создать в таблице поле - №пп и в нем производить нумерацию.
Если будут добавляться новые записи, то № каждый раз будут меняться, запись в запросе, которая была 4-й может стать 3-й или 5-й.
Обычно производят сортировку по одному или нескольким полям.
Хоть и видел примеры. где именно в запросе производится нумерация, но ни когда этим не пользуюсь.
Типа - Баловство это не нужное.
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39325445
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лапух,

1) Если я добавлю поле с номером в таблицу, то при применении сортировки по какому-то из полей вся нумерация собьется. Гибкости нет никакой. Мне нужно сначала задать по какому полю сортировать, а затем произвести нумерацию отсортированных записей.

2) Число строк в запросе может не соответствовать числу строк в таблицах.
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39325453
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969,
На мой взгляд нумерация нужна только в отчете, типа для печатного документа, но вот там как раз и можно задать № п/п в свободном поле, а в запросе считаю это не нужным.
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39325470
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969что никто не решал проблему нумерации строк в сложных запросах?ЛапухА нафига это надо?
Уж если ооочень хоца то как-то так: (только после исправлений или добавлений в таблицах-источниках запроса запускать ф-цию/или сделайте из нее процедуру/ по новой)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Function my1()
Dim rs As DAO.Recordset, a
DoCmd.DeleteObject acTable, "vr"
CurrentDb.Execute "SELECT типы.тип, марка.марка, модель.модель, ' ' AS Выражение1 INTO vr" _                   'Ваш запрос 
& " FROM типы INNER JOIN (марка INNER JOIN модель ON марка.КодМарка = модель.марка) ON типы.КодТ = марка.тип order by модель" 'переделанный под создание таблицы
'с соответствующей сортировкой 
DoCmd.SelectObject acTable, "vr", -1
Set rs = CurrentDb.OpenRecordset("vr")
a = 1
Do Until rs.EOF
rs.Edit
rs!выражение1 = a
a = a + 1
rs.Update
rs.MoveNext
Loop
DoCmd.OpenTable "vr"
Set rs = Nothing
End Function
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39325908
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, апдейт рекордсета в цикле будет работать в несколько раз быстрее, если цикл обернуть в BeginTrans - CommitTrans. В этом случае измененная запись не выгружается на диск после каждой строки, а только в конце все скопом записывается.
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39326586
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinКстати, апдейт рекордсета в цикле будет работать в несколько раз быстрее, если цикл обернуть в BeginTrans - CommitTrans. В этом случае измененная запись не выгружается на диск после каждой строки, а только в конце все скопом записывается.

прошу прощения, что встреваю...
Объясните пожалуйста написанное выше... Или направление, в каком поискать эту информацию.
Я такого не знал.
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39326726
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игортан,

Вот здесь хорошая статья по повышению производительности Акса, а вот здесь в п.10 упоминается о рекордсетах и транзакциях.
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39327324
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin,

спасибо за ссылки.
Буду разбирать, меня в последнее время этот вопрос и интересовать начал , а тут на ловца и зверь бежит...
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330436
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, примерно то, что я хотел можно сделать так:
Код: sql
1.
2.
3.
SELECT DCount("Id_инструмент","Инструмент","Id_инструмент<=" & CStr([Id_инструмент])) AS №, Инструмент.Id_инструмент, Тип_инструмента.Тип_инструмента
FROM Тип_инструмента INNER JOIN Инструмент ON Тип_инструмента.id_тип_инструмента = Инструмент.id_тип_инструмента
ORDER BY Инструмент.Id_инструмент;


Такой запрос позволяет ввести нумерацию при обращении к нескольким таблицам.

Теперь проблема как этот запрос в код vba запихать. В Access сам запрос с таким sql кодом работает, а вот когда пытаюсь запихать это выражение в vba, то появляется "error: expected: end of statement"

Код: vbnet
1.
2.
3.
Qx.SQL = "SELECT DCount("Id_инструмент","Инструмент","Id_инструмент<=" & CStr([Id_инструмент])) AS №, Инструмент.Id_инструмент, Тип_инструмента.Тип_инструмента " & _
"FROM Тип_инструмента INNER JOIN Инструмент ON Тип_инструмента.id_тип_инструмента = Инструмент.id_тип_инструмента " & _
"ORDER BY Инструмент.Id_инструмент"



В чем проблема я примерно понимаю: ему не нравится, что функции DCount и CStr в общем тесте запроса записаны без разделителей, но если добавить разделители - тоже ничего хорошего: "Invalid use of null". Как бы мне заставить данный код работать без жестких извращений? )
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330442
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969,

Кавычки внутри выражения продублируйте или замените на одинарные
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330527
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin,
точно, ошибка в кавычках, спасибо.

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

Код: vbnet
1.
2.
Qx.SQL = "SELECT DCount('Id_инструмент','Инструмент','Id_инструмент<=' & CStr([Id_инструмент])) AS № FROM Инструмент"
Me.subForm.SourceObject = "Запрос." & Qx.Name



При выполнении кода в форме, в контроле subform появляется пустой запрос с полем "№". А если открыть сам запрос "Qx", то там уже есть значения в поле "№".
В чем тут дело? me.requery, me.refresh, me.subform.requery не помогают.
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330539
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969,

Возьмите № в квадратные скобки: [№] и лучше не использовать в такие символы в запросах.
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330550
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin,
и снова спасибо)
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330639
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969...Только проблемы не закончились...
И не закончатся, если Вы будете использовать для нумерации [ID_инструмент] (если это ключ-счетчик)
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330645
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuИ не закончатся, если Вы будете использовать для нумерации [ID_инструмент]
Да должно нормально работать до тех пор, пока не понадобится сортировка, отличная от [ID_инструмент], там же DCount используется, а не значение счетчика.
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330689
ЛапухНа мой взгляд нумерация нужна только в отчете, типа для печатного документа, но вот там как раз и можно задать № п/п в свободном поле, а в запросе считаю это не нужным. Sergey8969, я полностью согласен с коллегой. Вы так и не ответили, зачем вам нумерация именно в запросе?
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330738
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinДа должно нормально работать до тех пор, пока не понадобится сортировка, отличная от [ID_инструмент], там же DCount используется, а не значение счетчика.Это и подразумевалось
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330745
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),
Да бывает она нужна. Например при экспорте данных в Эксель, ну или в той же форме строки должны быть пронумерованы. Вечно приходится извращаться с подобными запросами из-за отсутствия элементарного аналога ROWNUM.

В самих запросах иногда нужно сравнивать разные строки или выделять диапазоны из середины, когда TOP не достаточно
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330868
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев )ЛапухНа мой взгляд нумерация нужна только в отчете, типа для печатного документа, но вот там как раз и можно задать № п/п в свободном поле, а в запросе считаю это не нужным. Sergey8969, я полностью согласен с коллегой. Вы так и не ответили, зачем вам нумерация именно в запросе?

Да в принципе, наверное, могу я обойтись без нумерации. Я просто не думал, что это так проблематично)

Есть у меня форма для отображения инструмента в базе склада инструмента. Эта форма может выдавать информацию об инструменте через различные запросы (с применением фильтров, перекрестных запросов и прочего). Нумерацию я хотел добавить в эти запросы просто для того, чтобы было видно сколько позиций выдает тот или иной запрос. Знаю, что можно и иначе это реализовать, но хотел именно так. Не знал, что это вызовет столько сложностей)
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39330871
Sergey8969
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuMrShinДа должно нормально работать до тех пор, пока не понадобится сортировка, отличная от [ID_инструмент], там же DCount используется, а не значение счетчика.Это и подразумевалось

Если понадобится другая сортировка, то изменю запрос соответственно )
...
Рейтинг: 0 / 0
нумерация строк в сложном запросе
    #39331155
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey8969то изменю запрос соответственно
Ну попробуйте изменить сортировку, чтобы первым шел тип инструмента - не уникальное поле. Ничего не получится с нумерацией. Отсортировано должно быть при таком способе только по уникальному полю. Всегда злюсь на разработчиков Акцесса из-за отсутствия этой фичи.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / нумерация строк в сложном запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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