Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/39: Рейтинг темы: голосов - 39, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183

Как сократить запрос о многих записях по разным полям

23.02.2021, 18:10. Показов 8281. Ответов 115
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех форумистов. Может, кто посодействует. Проблема след. Есть 3 поля в БД: Деталь (текст), Модификация, КодДетали. Деталей (записей) за сотню. На каждую есть 3 - 5 Модифов. Детали обозначаются кодами по номерам записей: от 1 до 100. Модифы тоже кодами от 1 до 5 - их вводим вручную. При вводе кода Модифа нужно автоматически присваивать в поле запроса Коэфф: соответствующий тоже код от 1 до 7. Каждый из этих кодов строго соответствует коду Модифа. Если в поле Модиф вводим 1, то в поле запроса Коэфф ставится 3. Если в Модиф вводим 2, то в поле Коэфф ставится 4 и пр.
Я попытался ввести условия в Запрос, но для каждой Детали надо писать в одной строке одной ячейке Конструктора запросов 5 условий, типа:
IIf([Деталь]=1;IIf([Модиф]=1;3;IIf([Модиф]=2;4;0))) - это для Детали 1. Тут же после этого кода ставим для Детали 2 -
IIf([Деталь]=1;IIf([Модиф]=1;3;IIf([Модиф]=2;4;0;IIf([Деталь]=2;IIf([Модиф]=1;2;IIf([Модиф]=3;5;0)) и так для всех 100 Деталей. Вряд ли что путное получится. Может можно это как-то запрограммировать? Это Access 2000. Ставлю скрин чтоб попонятнее.
Миниатюры
Как сократить запрос о многих записях по разным полям  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.02.2021, 18:10
Ответы с готовыми решениями:

Запрос выборки по разным полям, а результат в одну таблицу
Есть такой запрос например SELECT ALL Фамилия, Имя, Отчество, Страна INTO FROM WHERE Страна = 'Армения' Вопрос: как...

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

Поиск по разным полям.
Приветствую. Подскажите такой вопрос. Есть база. В таблице 8 полей. По нажатию на кнопку открывается новая форма с 8-ю edit'ами. В них...

115
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
30.10.2021, 17:53
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от shanemac51 Посмотреть сообщение
...вопрос о максимальном размере модуля...
Приведите, пожалуйста, цитату так, чтобы её можно было опознать.
Кто это пишет?
В какой теме?

novyi,

В БД запорчен модуль формы ВОПРОСЫ КОПИЯ.
Декомпиляции не поддаётся.
Очень вероятно, что вносились изменения в модуль, когда форма была в режиме формы.

Переделайте.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
30.10.2021, 18:13
novyi,

Функции Func_Koeff[1-20] дико раздуты.

Зачем тьма строк F = Choose(M, 0, 0, 0, 0, 0) ?

Да и Choose в такой ситуации ни к чему, это просто F =0

И какой смысл в использовании функции Nz, ведь проверки в первой строке уже гарантированно отсекли пустые значения:
Visual Basic
1
2
 If Not IsNull(D) And Not IsNull(M) Then
  If Nz(D) < 200 And Nz(M) < 8 Then
И так далее.

В общем, код такой, что как-то не очень хочется во всём этом копаться.
1
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
30.10.2021, 19:43
Цитата Сообщение от shanemac51 Посмотреть сообщение
novyi,
и кстати у вас MDB,а на нем действует ограничение на размер модуля
...не рекомендует использовать размер модуля более 64 kb ,
и советует разбивать на несколько модулей , так как могут быть необьяснимые последствия
Сейчас посмотрела размер модуля одной из форм у себя - 92 Kb.
И подобных форм не одна.
И общие модули большие есть.

Что-то, тьфу-тьфу, "необьяснимые последствия" не случаются.
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,972
Записей в блоге: 4
30.10.2021, 20:10
Цитата Сообщение от Capi Посмотреть сообщение
"необьяснимые последствия" не случаются
какая у вас версия аксесс и какой размер оперативки?

п.с. у novyi довольно древняя,2000
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
31.10.2021, 01:32
shanemac51,

Версия Access?
У меня лично - от 2000-го до 2010-го (на разных машинах).
У пользователей - вариантов много.
ОП - например, на ноутбуке 2 Гб, на ПК побольше.
Формат файла интерфейса - mde, файлов данных - mdb.
Работает везде без сюрпризов.

Вы не ответили на вопрос об источнике цитаты.
Откуда эти данные о 64 кб.
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,972
Записей в блоге: 4
31.10.2021, 09:02
Capi,
взяла я с известного форума, текст тоже приложила, в чем непонятки
книШки А.Гарнаев VBA Полное руководство , где автор просто не рекомендует использовать размер модуля более 64 kb ,и советует разбивать на несколько модулей , так как могут быть необъяснимые последствия
кстати я лично с этим сталкивалась в 1998, когда у меня стоял аксесс -97 и слабая оперативка

Добавлено через 16 минут
Capi,
а это из документации Микрософт
Ограничения в Visual Basic
более ранние версии Visual Basic принудительно применяют границы кода, такие как длина имен переменных, количество переменных, допустимых в модулях, и размер модуля. в Visual Basic .net эти ограничения были ослаблены, что обеспечивает большую свободу при написании и упорядочении кода.

Физические ограничения зависят больше от объема памяти во время выполнения, чем в вопросах времени компиляции. если вы используете разумные методики программирования и разбиваете крупные приложения на несколько классов и модулей, то вероятность возникновения внутренних ограничений на Visual Basic невелика.

Ниже перечислены некоторые ограничения, которые могут возникнуть в экстремальных случаях.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
31.10.2021, 12:05
Цитата Сообщение от shanemac51 Посмотреть сообщение
в чем непонятки
А нельзя ли без жаргона?

Вам вопрос мой был непонятен? Вроде, ясно и четко задан.
Цитата Сообщение от Capi Посмотреть сообщение
Приведите, пожалуйста, цитату так, чтобы её можно было опознать.
Кто это пишет?
В какой теме?
Но Вы опять повторяете всё тот же текст, не давая ссылок на источник.
А это уже получается просто отсебятина, извините.

Без Вас нашла. Вот.
Там совсем о другом речь идет, а ограничение на объем модуля выдвигается как версия.
Причем эту версию в той же теме опровергают.

Цитата Сообщение от shanemac51 Посмотреть сообщение
а это из документации Микрософт
в Visual Basic .net эти ограничения были ослаблены
Опять без ссылки.
И при чем тут VB.net ?

Цитата Сообщение от shanemac51 Посмотреть сообщение
я лично с этим сталкивалась в 1998, когда у меня стоял аксесс -97
И в чём же это выражалось?
Может, Вы просто истинную причину своих "глюков" не нашли?
У меня лично и в Access 97 "необъяснимые последствия" отсутствовали.

Но применительно к вопросу ТС это всё - оффтоп.
Его большой модуль нормально работает.
Не работает модуль формы.
Почему - я уже писала.
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
31.10.2021, 13:09  [ТС]
Разбил Модуль на 3 отдельных. Все сделал заново в новой базе. Запуск запроса - Неоднозначное имя. в выражении звпроса Func_Koeff1([Код],[Ответ]). Абзац системе.

Добавлено через 15 минут
Дамы, приветствую.
Только что узрел ваш бой в цитатах. Я тем временем опять погибаю - не сдаюсь. Capi, все переделал заново в новой базе, и форму тоже, и модулей теперь аж 3. Результ в ответе выше. Как чего куда урезать в коде не волоку в принципе. Код склепал на основании Вашего рекоменда в первых страницах данной темы. Сразу предупред на ваши непонятки в эмоционе : ЭТО НЕ могет быть претензионом - опять респект за помощь, и все работало до изменений.

Добавлено через 9 минут
Код модуля формы тоже от вас работал без проблем. Может в нем чего не так?
Он вот:
Visual Basic
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
29
30
31
32
33
34
35
36
37
38
39
40
41
Option Compare Database
 
Private Sub Вопрос_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
End Sub
 
Private Sub ОбластьДанных_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
End Sub
 
Private Sub Ответ_AfterUpdate()
 
 
End Sub
 
Private Sub Ответ_Change()
    If Len(Me.Ответ.Text) > 0 Then
        If IsNumeric(Me.Ответ.Text) Then
            Select Case CInt(Me.Ответ.Text)
                Case 1 To 5
                    Me.Dirty = False
                    With Me.Recordset
                        If Not .EOF Then .MoveNext
                    End With
            End Select
        End If
    End If
End Sub
 
 
Private Sub Ответ_KeyDown(KeyCode As Integer, Shift As Integer)
 
End Sub
 
Private Sub Ответ_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
End Sub
 
Private Sub Ответ_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
End Sub
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
31.10.2021, 13:13
novyi,

Еще раз: #17.

Цитата Сообщение от novyi Посмотреть сообщение
все переделал заново в новой базе, и форму тоже, и модулей теперь аж 3
Зачем их три?
Я писала только о необходимости переделать форму, так как в её модуль был запорчен.
Всё.
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
31.10.2021, 13:15  [ТС]
ОЗУ у меня всего 960 мб. Акс 2000, работает только на одном этом компе, на всех других виснет или глючит.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
31.10.2021, 13:18
Цитата Сообщение от novyi Посмотреть сообщение
Код модуля формы тоже от вас
У меня не может отсутствовать OPTION EXPLICIT.
Это раз.
И семейства пустых процедур быть не может.
Это два.
И никаких Change я не предлагала.
Это три.
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
31.10.2021, 13:33  [ТС]
Capi, модули делил по предложению вашего оппонента до того, как увидел ваше сражение. Форму тоже переделал, скопировав приведенный выше код. Результат при запуске запроса - Неоднозначное имя. в выражении запроса Func_Koeff1([Код],[Ответ]).

Добавлено через 4 минуты
Change сделаны не от вас, а по произв. необходимости. Они были только в правке текстов Деталей и в изменении чисел в строках Case. Я не могу найти в теме код, звиняйте, если не от вас, значит не помню, кто прислал.

Добавлено через 3 минуты
Форма, кстати, работает нормально на этой вновь сделанной базе, пишет только про глюк в выражении запроса, что и от формы может идти ИМХО.

Добавлено через 6 минут
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,972
Записей в блоге: 4
31.10.2021, 13:38
Цитата Сообщение от shanemac51 Посмотреть сообщение
Capi,
а это из документации Микрософт
можете почитать по ссылке
https://docs.microsoft.com/ru-... imitations

и посмотреть картинки
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
31.10.2021, 13:41
Цитата Сообщение от shanemac51 Посмотреть сообщение
можете почитать по ссылке
Там не о VBA.

Цитата Сообщение от shanemac51 Посмотреть сообщение
и посмотреть картинки
Какие ещё картинки?
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,972
Записей в блоге: 4
31.10.2021, 13:42
Capi,
картинки
Миниатюры
Как сократить запрос о многих записях по разным полям   Как сократить запрос о многих записях по разным полям  
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,972
Записей в блоге: 4
31.10.2021, 13:49
Цитата Сообщение от novyi Посмотреть сообщение
Результат при запуске запроса - Неоднозначное имя. в выражении запроса Func_Koeff1([Код],[Ответ]).
проверьте, не имеете ли вы одинаковые имена функций в разных модулях

Добавлено через 3 минуты
Цитата Сообщение от novyi Посмотреть сообщение
как увидел ваше сражение
сколько программистов - столько и вариантов решения, я не применяю многие рекомендации форума, ибо они противоречат моему видению задачи

в вашем случае я видимо применила бы таблицу из 190 записей(количество деталей) и 21 столбец(по числу ваших параметров) и корректировку ее формой, сразу бы были видны все данные по детали
- пустые значения бы не заполняла
- одна функция для получения коэффициентов

у вас на деталь 20 раз вызываются функции со средним количеством проверок 190/2=95, итого около 2000 проверок на деталь

есть и второй вариант - таблица размером (количество деталей, для которых нужны коэфф) * (колич коэфф), это даст примерно те же 200-400 строк, т.к. нулевые описывать не надо
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
31.10.2021, 13:49
А-а-а..
Картинки из той темы скопировали?
Понятно.
Сами книжку в руках не держали, как видно.

Ещё раз - это ничем не подкрепленные домыслы.
У меня прекрасно работают большие модули - как в 2010, так и в 2000.
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
31.10.2021, 13:54  [ТС]
"....и тогда никаких проблем не возникнет." Его бы молитвы да богу в уши.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
31.10.2021, 13:56
Цитата Сообщение от shanemac51 Посмотреть сообщение
сколько программистов - столько и вариантов решения
Но когда возникает ошибка, то причина её - одна.

Эту-то причину и надо уметь квалифицированно определить.

А не разносить слухи.
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
31.10.2021, 13:57  [ТС]
Capi, У меня тут осень золотая за окном шумит, клен листву на асфальт роняет, смотрю и как-то жизнь спокойнЕй становится. У вас там нет такого пейзажа?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.10.2021, 13:57

Как составить сложный запрос из многих таблиц
Имеется такая база : как получить на выходе таблицу со сводными данными по каждому челу? например - петя, большая квартира,...

Поиск пользователя по разным полям
Здравствуйте! Столкнулся с задачей которую не могу решить, нужно выводить данные с таблицы пользователей которые имеют соответственное имя,...

Поиск записей в бд по разным полям
Добрый день. По заданию надо создать базу данных в прологе и реализовать поиск и вывод информации о записи по всем полям. Domains ...

Поиск в структуре по разным полям
Доброго времени суток. Нужна небольшая консультация. Задание стандартное, работа со структурой. И одним из пунктов идет поиск.Собственно...

Сортировка массива структур по разным полям
Имеется массив студентов. Подскажите, пожалуйста, как сортировать их по полю &quot;курс&quot; и полю &quot;фамилия&quot; . #include...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru