powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VB2010е, Access, Запрос к БД
4 сообщений из 54, страница 3 из 3
VB2010е, Access, Запрос к БД
    #39195990
iddqd_winВы получили значения 2 дня для последнего интервала и 3 дня для 2 последних?
Да.
Кроме того - 3 для 3-х последних ЗАПИСЕЙ, 4.75 для 4-х, 5.8 для 5-и, 6.33 для 6-и.
Предпочитаю говорить о записях, а не неизвестно о каких интервалах.
Выкладываю архив, в котором две базы: db1.mdb создана в Access2003, Database1.accdb - в Access2010 Portable. Запрос Запрос1 отрабатывает нормально.
iddqd_winЧто же я делаю не правильно?(((
Чтобы это понять необходима Ваша база.
Хотя, если задаете значение N в диалоговом окне, появляющемся при запуске запроса, то, на всякий случай, в запросе перед началом запроса (выше SELECT) поместите строку
Код: sql
1.
PARAMETERS N Long;


iddqd_winДавайте разберём код чтобы понять, почему у меня ошибка?
Подзапрос
Код: sql
1.
2.
SELECT Sum(1) FROM Таблица1  As T 
WHERE T.Событие=Таблица1.Событие And T.Дата>=Таблица1.Дата


для каждого события таблицы Таблица1 определяет номера записей, начиная с последней, (1-последняя, 2-предпоследняя, ...). Сравнение
Код: sql
1.
подзапрос<=N+1


фильтрует записи, номера которых не превышают N+1, и основной запрос работает только с отфильтрованными записями.
...
Рейтинг: 0 / 0
VB2010е, Access, Запрос к БД
    #39196001
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-Практикант-,
Спасибо за объяснение)
И да
PARAMETERS N Long;

именно этого не хватало) Теперь работает.
...
Рейтинг: 0 / 0
VB2010е, Access, Запрос к БД
    #39196120
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-Практикант-,
Не получается этот запрос адаптировать для VB2010((
Если оставить так как есть ругается на - Отсутствует значение для одного или нескольких требуемых параметров.
Пробовал так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim N As Long
        N = 2
        SqlCom = New OleDbCommand("SELECT Событие, Max(Дата) AS Последняя, " _
                                  & "(Max(Дата)-Min(Дата))/(Count(*)-1) AS Периодичность, " _
                                  & "Date()-Последняя AS Прошло " _
                                  & "FROM Таблица1 " _
                                  & "WHERE (SELECT Sum(1) FROM Таблица1 As T " _
                                  & "WHERE T.Событие=Таблица1.Событие And T.Дата>=Таблица1.Дата)<=@N+1 " _
                                  & "GROUP BY Событие " _
                                  & "HAVING Count(*)>1 And Date()-Max(Дата)>=(Max(Дата)-Min(Дата))/(Count(*)-1);", Con)
        SqlCom.Parameters.AddWithValue("@N", N)


Работает но параметры не задает и получается 6.33
И по всякому с параметрами поигрался все равно 6.33
А что то типа такого сделать нельзя?)))
SqlCom = NewOleDbCommand("Таблица1.Запрос1", Con)
...
Рейтинг: 0 / 0
VB2010е, Access, Запрос к БД
    #39196308
iddqd_win
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-Практикант-,
Разобрался сам)
Правда теперь встал вопрос как обозначить N для всех событий. Ну да ладно просто сделаю код с условием if ... then)
Спасибо!
...
Рейтинг: 0 / 0
4 сообщений из 54, страница 3 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VB2010е, Access, Запрос к БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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