|
0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 7
|
|
Запрос на выборку?05.08.2010, 11:00. Показов 1304. Ответов 4
Метки нет (Все метки)
Существует некая таблица 'Лицевые счета', где записываются данные(проводки) по каждому номеру лицевого счета(ключевое поле) на определенную дату.
Допустим в таблице для лицевого счета №1 существует четыре проводки за 10.12.03, за 15.01.04, за 09.02.04, и за 23.03.04. Как мне выбрать данные из строки на дату 09.02.04, а затем узнать дату предыдущей проводки (в этом примере - 15.01.04), чтобы посчитать количество дней, которое прошло с момента предыдущей оплаты.
0
|
|
| 05.08.2010, 11:00 | |
|
Ответы с готовыми решениями:
4
Запрос на выборку запрос на выборку |
|
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
|
|
| 05.08.2010, 11:20 | |
|
Создаём форму с соответствующим источником записей. По открытию формы создаём копию источника данных table (например, Me.RecordSetClone, если источник данных упорядочен по дате или просто отбираем в упорядоченный по дате RecordSet те же данные) и в нём ищем:
With table .FindFirst 'ДатаПроводки=#' & Me.ДатаПроводки & '#' .MovePrevious MsgBox !ДатаПроводки End With где Me.ДатаПроводки - имя поля формы, в котором выводятся данные поля ДатаПроводки из соответствующей таблицы.
0
|
|
|
0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 7
|
|
| 05.08.2010, 12:05 [ТС] | |
|
Дело в том, что мне надо выбрать из таблицы 'Лицевые счета', данные за определенный месяц, последнюю дату за этот месяц и предпоследнюю дату, не для какого то конкретного лицевого счета, а для двадцати с лишним тысяц лицевых счетов(в таблице лицевые счета больше 200000 проводок), а потом для каждого лицевого счета посчитать количество дней со дня последней оплаты, и получить в итоге таблицу в которой будут записи (№ лицевого счета, сумма отплаты, дата оплаты, предыдущая дата оплаты, количество дней со дня предыдущей оплаты) по каждому лицевому счету.
0
|
|
|
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
|
|
| 05.08.2010, 12:35 | |
|
1. Создаём запрос ПоследнийПлатёж:
SELECT ЛицевыеСчета.СчётНомер, Max(ЛицевыеСчета.ДатаПлатежа) AS [ПоследнийПлатёж] FROM [ЛицевыеСчета] GROUP BY ЛицевыеСчета.СчётНомер; 2. Создаём запрос ПредпоследнийПлатёж: SELECT ЛицевыеСчета.СчётНомер, Max(ЛицевыеСчета.ДатаПлатежа) AS [ПредпоследнийПлатёж] FROM [ПоследнийПлатёж] INNER JOIN [ЛицевыеСчета] ON ПоследнийПлатёж.СчётНомер = ЛицевыеСчета.СчётНомер WHERE (((ЛицевыеСчета.ДатаПлатежа)<>[ПоследнийПлатёж].[ПоследнийПлатёж])) GROUP BY ЛицевыеСчета.СчётНомер; 3. Результирующий запрос: SELECT ПоследнийПлатёж.СчётНомер, [ПоследнийПлатёж]-[ПредпоследнийПлатёж] AS Дней FROM [ПоследнийПлатёж] INNER JOIN [ПредпоследнийПлатёж] ON ПоследнийПлатёж.СчётНомер = ПредпоследнийПлатёж.СчётНомер;
0
|
|
|
0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 7
|
|
| 05.08.2010, 14:01 [ТС] | |
|
Сначала наверно надо создать промежуточный запрос где отсечь все записи дата оплаты у которых больше параметра [Введите дату окончания периода], а уже затем на основе запроса с выбранными значениями создавать запросы ПоследнийПлатеж и Предпоследний платеж.
Можно ведь и так? Вот что уменя получилось: 1.Создал запрос ПоследнийПлатеж: SELECT ЛИЦЕВЫЕСЧЕТА.[Номер абонента], Max(ЛИЦЕВЫЕСЧЕТА.[Дата оплаты]) AS ПоследнийПлатеж FROM [ЛИЦЕВЫЕСЧЕТА] WHERE (((ЛИЦЕВЫЕСЧЕТА.[Дата оплаты])<[Введите дату окончания периода]))GROUP BY ЛИЦЕВЫЕСЧЕТА.[Номер абонента]; Здесь я отсекаю записи которые мне не нужны, например оставляю все записи дата оплаты у которых до 31.01.04 2.Создал запрос ПредпоследнийПлатеж: SELECT ЛИЦЕВЫЕСЧЕТА.[Номер абонента], Max(ЛИЦЕВЫЕСЧЕТА.[Дата оплаты]) AS ПредпоследнийПлатеж FROM ПоследнийПлатеж INNER JOIN [ЛИЦЕВЫЕСЧЕТА] ON ПоследнийПлатеж.[Номер абонента] = ЛИЦЕВЫЕСЧЕТА.[Номер абонента] WHERE (((ЛИЦЕВЫЕСЧЕТА.[Дата оплаты])<[Введите дату окончания периода]) AND ((ЛИЦЕВЫЕСЧЕТА.[Дата оплаты])<>[ПоследнийПлатеж].[ПоследнийПлатеж]))GROUP BY ЛИЦЕВЫЕСЧЕТА.[Номер абонента]; 3. Создал РазультирующийЗапрос: SELECT ПоследнийПлатеж.[Номер абонента], ПоследнийПлатеж.ПоследнийПлатеж, ПредпоследнийПлатеж.ПредпоследнийПлатеж, [ПоследнийПлатеж]-[ПредпоследнийПлатеж] AS Дней FROM ПоследнийПлатеж INNER JOIN ПредпоследнийПлатеж ON ПоследнийПлатеж.[Номер абонента] = ПредпоследнийПлатеж.[Номер абонента]; А можно все это сделать проще?
0
|
|
| 05.08.2010, 14:01 | |
|
Помогаю со студенческими работами здесь
5
Запрос на выборку Запрос на выборку Запрос на выборку Запрос на выборку Запрос на выборку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита табличной части. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|