Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
647 / 100 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
1

Создать редактируемый запрос

03.08.2016, 08:18. Показов 2552. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе утро, помогите откорректировать запрос ОстПостДогСчет чтобы появилась возможность в запросе налоговая ставить или снимать "галочку". При выполнении запроса нужно ввсести значение 201607.
Вложения
Тип файла: rar Database64.rar (834.4 Кб, 13 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2016, 08:18
Ответы с готовыми решениями:

Редактируемый ComboBox
Форумчане, подскажите собственно сабж возможен в Access? Если да, то как реализовать? Буду очень...

Подчиненный редактируемый список в форме
открыл впервые access, решил на примере понять как в нем работать тз: основная таблица:...

создать запрос
имеется 3 таблицы: 1) Товары(код_т,название_т, модель,характеристика) 2) Фирмы...

Создать запрос
Здравствуйте! Есть БД хранящая информацию о фильмах, актерах,жанрах и студиях. сделал все...

8
647 / 100 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
03.08.2016, 08:26  [ТС] 2
Я так понимаю, что запрос не редактируется из за группировок (суммирование записей по ключу). Если результат суммирования записать во временную таблицу и ее использовавть для запроса, ситуация изменится?
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
03.08.2016, 09:04 3
Лучший ответ Сообщение было отмечено alexpro1979 как решение

Решение

Цитата Сообщение от alexpro1979 Посмотреть сообщение
Если результат суммирования записать во временную таблицу и ее использовавть для запроса, ситуация изменится?
Не обязательно. У вас там множество соединений Left и Inner. Не исключено, что конечный набор все равно останется нередактируемым

Чтобы результат запроса писать в таблицу, надо после списка Select и перед From написать Into ИмяНовойТаблицы
1
647 / 100 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
03.08.2016, 11:23  [ТС] 4
Цитата Сообщение от mobile Посмотреть сообщение
Чтобы результат запроса писать в таблицу, надо после списка Select и перед From написать Into ИмяНовойТаблицы
Спасибо.

Добавлено через 1 час 57 минут
Подитожу, запросы с группировками выгружаю в таблицы предварительно очистив их от старых данных, затем формирую новый запрос на основании выгруженных таблиц, в результате должен получиться запрос редактируемый. Верно?

Добавлено через 16 минут
Попробовал не прокатил вариант
SQL
1
2
SELECT СпрПоставщик.ID, СпрПоставщик.Наименоваине, СпрПоставщик.ОКПО, Договора.НомерДоговора, Договора.ДатаЗаключения, Счета.НомерСчета, Счета.ДатаСчета, Счета.Сумма, ОплатаОстН.ИтогоОплата AS ОстОплата, РасхНаклОстН.Итого AS ОстРасх
FROM (((((Счета INNER JOIN Договора ON Счета.IDДоговора = Договора.Код) INNER JOIN СпрПоставщик ON Договора.IDПоставщика = СпрПоставщик.ID) LEFT JOIN ОплатаТекМ ON Счета.Код = ОплатаТекМ.идСчета) LEFT JOIN ОплатаОстН ON Счета.Код = ОплатаОстН.идСчета) LEFT JOIN РасхНаклТекМ ON Счета.Код = РасхНаклТекМ.id_Счета) LEFT JOIN РасхНаклОстН ON Счета.Код = РасхНаклОстН.id_Счета;
Есть варианты?

Добавлено через 4 минуты
ОплатаТекМ, ОплатаОстН, РасхНаклТекМ, РасхНаклОстН - это таблицы выгруженные запросом.
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
03.08.2016, 11:33 5
Лучший ответ Сообщение было отмечено alexpro1979 как решение

Решение

Попробуйте такой вариант:
1. Запрос на создание вспомогательной таблицы op1. Сохраним запрос с именем IntoOp1
SQL
1
2
3
4
5
6
7
8
9
10
SELECT Счета.Код, Счета.НомерСчета, Счета.ДатаСчета, Счета.Сумма AS СуммаСчета, 
ОстОплата.ИтогоОплата AS ОплатаОст, ОстРасхНакл1.Итого AS РасхНОст, 
ОстОплатаТекМ.ИтогоОплата AS ОплатаТекМ, ОстРасхНаклТекМ1.Итого AS РасхНТекМ, 
Счета.Налоговая 
INTO op1
FROM (((Счета LEFT JOIN ОстРасхНаклТекМ1 
ON Счета.Код = ОстРасхНаклТекМ1.id_Счета) LEFT JOIN ОстОплатаТекМ 
ON Счета.Код = ОстОплатаТекМ.идСчета) LEFT JOIN ОстОплата 
ON Счета.Код = ОстОплата.идСчета) LEFT JOIN ОстРасхНакл1 
ON Счета.Код = ОстРасхНакл1.id_Счета;
Второй запрос уже на основании вспомогательной таблицы op1. Пусть называется FromOp1
SQL
1
2
3
4
5
6
SELECT СпрПоставщик.ID, СпрПоставщик.Наименоваине, СпрПоставщик.ОКПО, Договора.НомерДоговора, 
Договора.ДатаЗаключения, Счета.НомерСчета, Счета.ДатаСчета, Счета.Сумма AS СуммаСчета, 
op1.ОплатаОст, op1.РасхНОст, op1.ОплатаТекМ, op1.РасхНТекМ, Счета.Налоговая
FROM СпрПоставщик INNER JOIN (Договора INNER JOIN (Счета INNER JOIN op1 
ON Счета.Код = op1.Код) ON Договора.Код = Счета.IDДоговора) 
ON СпрПоставщик.ID = Договора.IDПоставщика;
Процедура в коде для выполнения запросов
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub QueryFromOp1()
    Dim s, db As DAO.Database
    Set db = CurrentDb
    
    'Удаление op1
    On Error Resume Next
    DoCmd.Close acTable, "op1"
    DoCmd.Close acQuery, "FromOp1"
    db.Execute "drop table op1"
    On Error GoTo 0
    
    'Создать op1. Приходится использовать OpenQuery, поскольку запрос с параметрами
    DoCmd.OpenQuery "IntoOp1"
    
    'Вызвать запрос FromOp1
    DoCmd.OpenQuery "FromOp1"
End Sub
1
647 / 100 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
03.08.2016, 11:36  [ТС] 6
Первый запрос можно формировать на основании самих таблиц? Нет необходимости итоги по оплате выгружать в временную таблицу?
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
03.08.2016, 11:41 7
Мне сложно ответить на этот вопрос. Я слабо разбираюсь в схеме данных Вашей БД. Попробуйте предложенный вариант. Если не подойдет, попробуем что-нибудь еще
1
647 / 100 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
03.08.2016, 11:49  [ТС] 8
Ваши запросы справляются с поставленной задачей, премного благодарен.

Добавлено через 58 секунд
Цитата Сообщение от mobile Посмотреть сообщение
Процедура в коде для выполнения запросов
Обязательно использовать процедуру, на кнопке можно прописать
Visual Basic
1
2
DoCmd.OpenQuery "IntoOp1"   
DoCmd.OpenQuery "FromOp1"
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
03.08.2016, 11:55 9
Лучший ответ Сообщение было отмечено alexpro1979 как решение

Решение

Цитата Сообщение от alexpro1979 Посмотреть сообщение
Обязательно использовать процедуру, на кнопке можно прописать
Можно. Но выйдет на ошибку если будет открыта таблица op1, или запрос FromOp1. Поэтому лучше использовать процедуру целиком.
1
03.08.2016, 11:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2016, 11:55
Помогаю со студенческими работами здесь

создать запрос
создать запрос: «Спрашивающий» после запуска ( запрос с параметром) фамилию врача и находящий ФИО...

создать запрос!
У меня тема базы - Больница. Есть 3 главные таблицы - врач, пациенты, карта пациента. Нужно создать...

Создать запрос
Помогите пожалуйста составить запрос : сколько дней каждая книга была на руках.

Не получается создать запрос
Имеется база данных «Библиотека», содержащая три таблицы: a) о книгах: код книги, код раздела, код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru