powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
14 сообщений из 14, страница 1 из 1
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39683041
Xiaohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Никак не могу разобраться с несложной, на первый взгляд задачей.
Как при помощи SQL реализовать запрос, в котором дополнительном поле будет рассчитываться значение всех полей предыдущей строки.

Например: Есть таблица ДС, с полями дата ДС (дата), номер ДС(число).
Как написать запрос, чтобы дополнительное поле рассчитывало номер настоящего и все предыдущих ДС?

Изучал пример на форуме, но в основном все примеры с описанием реализации вывода только предыдущего значения.
http://www.sql.ru/forum/1195256/znachenie-polya-predydushhey-stroki-aksess-zapros-sql-bez-vba


Код: sql
1.
2.
3.
SELECT доходы.счетчик, доходы.доход, доходы.период,(SELECT TOP 1 доходы2.доход FROM доходы AS доходы2 
WHERE  доходы2.период <доходы.период ORDER BY  доходы2.период DESC) AS предыдущее_значение
FROM доходы ORDER BY доходы.период
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39683046
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам точно нужен запрос? или потом всё это пойдёт в отчёт? а то отчёт умеет сам считать нарастающие итоги...
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39683087
Xiaohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, Вообще планировал в дальнейшем использовать отчет, сформированный из запроса.
Буду признателен, если подскажете как это возможно реализовать в формате отчета.
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39683095
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39683100
Xiaohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, мне не нужна сумма с накоплением.
Формально мне нужна ячейка, содержащая текст предыдущих ячеек.
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39683106
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Xiaohnyмне нужна ячейка, содержащая текст предыдущих ячеек.Плохо понятно... покажите на примере.
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39683111
Xiaohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
ДАТА/ НОМЕРДС/ НакопленноеЗначение
01.12.15/ДС1/ДС1
01.12.16/ДС2/ДС1, ДС2
01.12.17/ДС3/ДС1, ДС2, ДС3
01.12.18/ДС4/ДС1, ДС2, ДС3, ДС4

Необходимо в запрос отобразить Накопленное значение
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39683125
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39683146
Xiaohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, Не совсем понимаю как это реализовать.
Насколько я понял нужно создать функцию group_concat в VBA, правильно?
Можно пример?
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39683241
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там по ссылкам есть и коды, и примеры... должно хватать.
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39696202
Xiaohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо за подсказку.
Воспользовался функцией, найденно на просторах рунета.

Код: vbnet
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.
GROUP_CONCAT_sub([T1].[Priznak ];'Name')

    Function GROUP_CONCAT(Priznak As Integer, FieldName As String) As Variant
     Dim strSQL As String
     Dim rs As ADODB.Recordset
     Dim cn As ADODB.Connection
     Set cn = CurrentProject.Connection
     Set rs = New ADODB.Recordset
     strSQL = "SELECT " & FieldName & " FROM T1 WHERE Priznak=" & CStr(Priznak) & " ORDER BY Name"
     rs.Open strSQL, cn
     Do While Not rs.EOF
     Result = Result & rs.Fields(FieldName)
     rs.MoveNext
     If Not rs.EOF Then Result = Result & ", "
     Loop
     rs.Close
     GROUP_CONCAT = Result
    FreeExit:
     Set rs = Nothing
     Set cn = Nothing
     Exit Function
    ErrExit:
     GROUP_CONCAT = ""
     Resume FreeExit
    End Function



Возможно ли обращаться к данным запроса, а не таблицы?
Если да то как это сделать?
Если нет, то каким образом возможно заменить значения с полем из связанной таблицы?

К примеру, если функция GROUP_CONCAT отображая через запятую поля [idName], в которых значения по полю [Priznak] из таблицы T1 одинаковы.
Как изменить функцию, чтобы в моем случае выводили значения поля [Name] из таблицы [Names] ключевым полем в которых является [idName]?
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39696289
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XiaohnyВозможно ли обращаться к данным запроса, а не таблицы?
Если да то как это сделать?
Если нет, то каким образом возможно заменить значения с полем из связанной таблицы?
Возможно конечно - надо сохранить запрос под собственным именем и обратится к нему как к таблице....
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39696300
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XiaohnyК примеру, если функция GROUP_CONCAT отображая через запятую поля [idName], в которых значения по полю [Priznak] из таблицы T1 одинаковы.
в которых значение поля [Priznak] из таблицы T1 равно значению переданной в функцию переменной Priznak As Integer,вроде бы то же самое сказал .... но как-то ИМХО понятней....
XiaohnyКак изменить функцию, чтобы в моем случае выводили значения поля [Name] из таблицы [Names] ключевым полем в которых является [idName]?
при каком условии ? Надо сначала сформулировать условие, как сделано выше
...
Рейтинг: 0 / 0
Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
    #39696314
Xiaohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока экспериментировал, самостоятельно разобрался.

Код: vbnet
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.
GROUP_CONCAT_sub([T1].[Priznak ];'Name')

    Function GROUP_CONCAT(Priznak As Integer, FieldName As String) As Variant
     Dim strSQL As String
     Dim rs As ADODB.Recordset
     Dim cn As ADODB.Connection
     Set cn = CurrentProject.Connection
     Set rs = New ADODB.Recordset
     strSQL = "SELECT " & FieldName & " FROM Names INNER JOIN T1 WHERE Priznak=" & CStr(Priznak) & " ORDER BY Name"
     rs.Open strSQL, cn
     Do While Not rs.EOF
     Result = Result & rs.Fields(FieldName)
     rs.MoveNext
     If Not rs.EOF Then Result = Result & ", "
     Loop
     rs.Close
     GROUP_CONCAT = Result
    FreeExit:
     Set rs = Nothing
     Set cn = Nothing
     Exit Function
    ErrExit:
     GROUP_CONCAT = ""
     Resume FreeExit
    End Function


GROUP_CONCAT_sub([T1].[Priznak];'Name')



Модератор: Xiaohny, последний раз выправляю тэги. Не хотите, чтоб вам помогали, значит так и будет
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Заполнение поля значениями из предыдущих строк. (нарастающим итогом)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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