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

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

23.02.2021, 18:10. Показов 8275. Ответов 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
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
27.02.2021, 18:35  [ТС]
Студворк — интернет-сервис помощи студентам
Я уже на уровне подлета к полосе. Осталось зайти на посадку, уж дайте ориент последний.

Почему же таблица лучше, если нужно делать 2500 строк?

Взялся потому, что остальные вообще в минусе, я хоть в нулях, есть расти куда.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
27.02.2021, 18:50
Цитата Сообщение от novyi Посмотреть сообщение
Я уже на уровне подлета к полосе. Осталось зайти на посадку, уж дайте ориент последний.
Сомневаюсь я, однако...
Цитата Сообщение от novyi Посмотреть сообщение
Почему же таблица лучше, если нужно делать 2500 строк?
А в функции не нужно?
Ну, 500. Но ведь и править сложнее.

Цитата Сообщение от novyi Посмотреть сообщение
Взялся потому, что остальные вообще в минусе, я хоть в нулях, есть расти куда.
Так им тем более есть, куда расти.

А если серьезно, обращение на форум за помощью предполагает наличие хотя бы минимального багажа знаний и самостоятельной работы.
Чтобы не получалась "каша из топора".
Иначе это, действительно, во Фриланс.
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
27.02.2021, 19:11  [ТС]
Цитата Сообщение от Capi Посмотреть сообщение
Сообщение от novyi
Я уже на уровне подлета к полосе. Осталось зайти на посадку, уж дайте ориент последний.
[/quote]Сомневаюсь я, однако...[/quote]

Можете мне сразу сообщить, когда отвянуть, вполне соглашусь.

[/quote]Сообщение от novyi
Почему же таблица лучше, если нужно делать 2500 строк?
А в функции не нужно?[/quote]

В таблице надо для 100 записей сделать 500 копий (по 5 Модифов в каждой), а в функции сначала сделать 10 Кейсов, 10 раз их скопировать, потом спокойно ставить Коэффы в каждый кейс из 100. Номера, кейсов, правда, править. Или нет?

[/quote]Сообщение от novyi
Взялся потому, что остальные вообще в минусе, я хоть в нулях, есть расти куда.
Так им тем более есть, куда расти.[/quote]

Они полосу даже по радио не определят, им уши тоже фашисты грохнули.

[/quote]А если серьезно, обращение на форум за помощью предполагает наличие хотя бы минимального багажа знаний и самостоятельной работы.
Чтобы не получалась "каша из топора".
Иначе это, действительно, во Фриланс.[/quote]

Умелый солдат и из топора кашу сварит.

Вопрос еще есть. Писать или the end? ...
[/quote][/quote]
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
27.02.2021, 19:21
Цитата Сообщение от novyi Посмотреть сообщение
Вопрос еще есть. Писать или the end?
Пишите.

Цитата Сообщение от novyi Посмотреть сообщение
Умелый солдат и из топора кашу сварит.
Да-да.
И каким образом.
Сказку-то эту все знают.
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
27.02.2021, 19:32  [ТС]
Я вас еще отвлеку чуток другой историей про солдата: Хозяйка, не дадите ли водички напиться, а то так есть хочется, аж
переночевать негде.

Как поставить туда код для еще одного другого Коэффициента? Он определяется теми же Модиффами, но имеет другое название и другие значения. Просто скопировать ведь нельзя, надо что-то менять в операторах?

Добавлено через 4 минуты
Сорри, отойду на неск.врем.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
27.02.2021, 19:37
Цитата Сообщение от novyi Посмотреть сообщение
чуток другой историей про солдата
Это самокритика?

Цитата Сообщение от novyi Посмотреть сообщение
Как поставить туда код для еще одного другого Коэффициента? Он определяется теми же Модиффами, но имеет другое название и другие значения. Просто скопировать ведь нельзя, надо что-то менять в операторах?
Передавайте в функцию признак, какого Коэффициента ждете.
А в функции формируйте значение в зависимости от признака.

А с таблицей-справочником еще проще.
1
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,971
Записей в блоге: 4
27.02.2021, 21:03
Цитата Сообщение от novyi Посмотреть сообщение
Почему же таблица лучше, если нужно делать 2500 строк?
всегда может потребоваться переход от ACCDB в ACCDE и все - коэффициенты не скорректируете
коэффициентов может быть потребоваться и более 5 - ничто не вечно, особенно в базах данных

когда-то , очень давно мне передали базу, написанную другим программистом, счета-фактуры
- основная таблица вмещала только 7 товаров
- понадобился 8-й товар
- после недолгого гадания пришла к мысли, что где 8 там может быть и 9 и10 и более
- переделала на 2 таблицы(головная с общими данными по счету и подчиненная с товарами)


очень кстати оказалось, вскоре пошли счета с десятками товаров, а некоторые и с сотнями
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
27.02.2021, 22:43  [ТС]
Всем респект, завтра разберусь, код положу для контроля.

Цитата Сообщение от Capi Посмотреть сообщение
Это самокритика?
Конечно да, неудобняк загрыз.

Цитата Сообщение от shanemac51 Посмотреть сообщение
всегда может потребоваться переход от ACCDB в ACCDE и все - коэффициенты не скорректируете коэффициентов может быть потребоваться и более 5 - ничто не вечно, особенно в базах данных
А разве в коде нельзя исправить, если больше 5 ?
Не просветите, что такое ACCDB в ACCDE на всяк пожар?
0
 Аватар для VinniPuh
9148 / 6183 / 594
Регистрация: 27.03.2013
Сообщений: 20,057
27.02.2021, 22:58
Цитата Сообщение от novyi Посмотреть сообщение
в ACCDE на всяк пожар?
в ACCDE невозможно ни чего испортить в процедурах, некоторыми шаловливыми ручками.
Можно - Просто работать, а что то изменить и новую процедуру написать или удалить, ну прям ни как, хоть весь лоб расшиби.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
27.02.2021, 23:01
ACCDB - исходный формат, допускающий изменение кода.
ACCDE - "откомпилированный" формат, доступа к коду нет, следовательно, и изменения невозможны.

В формате ACCDE рекомендуется передавать разработку в пользование.
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
28.02.2021, 00:04  [ТС]
Понял, это вроде исполняемого .exe или он и есть?
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
28.02.2021, 00:17
Нет.

Exe-шник обычно самодостаточен, а ACCDE всё равно требует для выполнения среду Access.
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
28.02.2021, 11:21  [ТС]
Здравствуйте Дамы, господа!

Сделал:
1. Вставил в Модуль 1 доп код, как согласовано выше :
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function Func_Koeff(D As Variant, M As Variant) As Variant
 Dim F As Variant
 If Not IsNull(D) And Not IsNull(M) Then
  If Nz(D) < 3 And Nz(M) < 8 Then
   Select Case D
    Case 1
     F = Choose(M, 3, 4, 0, 0, 0)
    Case 2
     F = Choose(M, 2, 0, 5, 0, 0)
   Case 3
     F = Choose(M, 2, 1, 3, 2, 0)
    Case 4
     F = Choose(M, 3, 4, 5, 0, 1)
  End Select
  End If
 End If
 Func_Koeff = F
End Function
2. Ввел в таблицу Детали еще две:
ДЕТАЛЬ 3 Модиф = 4
ДЕТАЛЬ 4 Модиф = 2

3. Открыл Запрос 1.
Коэффициенты для этих двух новых Деталей не появились. Скрины прилагаю. Не знаю, как сделать их крупнее.
Разрешение монитора менять перед отправкой?
Миниатюры
Как сократить запрос о многих записях по разным полям   Как сократить запрос о многих записях по разным полям   Как сократить запрос о многих записях по разным полям  

0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
28.02.2021, 11:45
novyi,

Две строчки добавили.

Условие в коде видите - If Nz(D) < 3 And Nz(M) < 8 Then ?
Это проверка корректности данных - для ДВУХ деталей и семи модифов!!!
Столько данных было указано Вами первоначально!!!
Об этом я писала уже!!!

Добавили данные - меняйте и условие проверки.

И теги для кода используйте.
Я ведь Вам уже несколько раз правила посты с указанием этой причины.

Добавлено через 1 минуту
Цитата Сообщение от novyi Посмотреть сообщение
Модуль 1
И не Модуль 1, а Module1.

Что ж всё так небрежно делается-то?
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
28.02.2021, 12:26  [ТС]
Ура! Работает. Понятия не имел что это проверка и что для т. д., т. п.

Щас попробую вставить для другого Коэффа.

Добавлено через 22 минуты
Можно ли так ?

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
Option Compare Database
Option Explicit
 
Function Func_Koeff(D As Variant, M As Variant) As Variant
 Dim F As Variant
 If Not IsNull(D) And Not IsNull(M) Then
  If Nz(D) < 200 And Nz(M) < 8 Then
   Select Case D
    Case 1
     F = Choose(M, 3, 4, 0, 0, 0)
    Case 2
     F = Choose(M, 2, 0, 5, 0, 0)
   Case 3
     F = Choose(M, 2, 1, 3, 2, 0)
    Case 4
     F = Choose(M, 3, 4, 5, 0, 1)
 
 Function Func_Koeff2(D As Variant, M As Variant) As Variant
 Dim F As Variant
 If Not IsNull(D) And Not IsNull(M) Then
  If Nz(D) < 200 And Nz(M) < 8 Then
   Select Case D
    Case 1
     F = Choose(M, 1, 2, 3, 0, 0)
    Case 2
     F = Choose(M, 2, 1, 5, 4, 3)
   Case 3
     F = Choose(M, 4, 0, 1, 0, 5)
    Case 4
     F = Choose(M, 1, 3, 0, 5, 2)  
   End Select
  End If
 End If
 Func_Koeff = F
End Function
В Запрос 1 в код нужно поставить ? :
SQL
1
2
3
SELECT Детали.*, Func_Koeff([Код1],[Модиф]) AS Коэфф1
FROM Детали;Func_Koeff2([Код1],[Модиф]) AS Коэфф1
FROM Детали
или надо в таблице Конструктора сделать поле? : Коэфф1: Func_Koeff([Код1];[Модиф])

или и то и другое?
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
28.02.2021, 12:41
Цитата Сообщение от novyi Посмотреть сообщение
или и то и другое?
Ни то, ни другое.

Добавлено через 6 минут
Почему два поля в запросе называются Коэфф1?
Почему нарушена структура запроса - после секции FROM идет поле?

Добавлено через 1 минуту
Всё. Мне некогда. Я ухожу.
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
28.02.2021, 22:07  [ТС]
Ой, боюсь, боюсь - вроде работает.

Добавлено через 4 часа 40 минут
А нельзя ли номера функций описать каким-то типа массивом, чтобы не надо было исправлять их для функции каждой из 100 записей в 2-х местах кода:
Function Func_Koeff 1 (2,3,4) ; Func_Koeff1 (2,3,4) = F, т.е. 200 раз исправлять на порядковый № функции.

(Не знаю, надо ли выделять тут как код и кнопку искал, не нашел, хоть стреляйте.)

Добавлено через 3 часа 44 минуты
Нет, это опять у меня фейк. Имелось в виду номера записей, т. е. Case 1, 2, 3.....500. Упреешь вводить, хотя меньше, чем 2500, видать придется.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
28.02.2021, 23:00
Не глупите, делайте таблицу коэффициентов.

В этих 2500 записях оба вида коэффициентов поместятся.

Больше не буду убеждать.
Последний раз.
Делайте, что хотите, а то ведь Ваше начальство считает, что тут коварные вредители собрались.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
28.02.2021, 23:25
Цитата Сообщение от novyi Посмотреть сообщение
Не знаю, надо ли выделять тут как код и кнопку искал, не нашел, хоть стреляйте.
Кнопки тегов для различных языков программирования находятся прямо перед Вами - на панели инструментов окна редактирования сообщений.
Вам в этом разделе могут потребоваться в основном кнопки VB и SQL.

Справка по редактору сообщений - ссылка под окном редактирования сообщений.
Миниатюры
Как сократить запрос о многих записях по разным полям  
0
1 / 1 / 0
Регистрация: 21.01.2021
Сообщений: 183
01.03.2021, 12:54  [ТС]
И на том спасибо, помощь велика и неожиданна. Всеж иду своим путем, т.к. пользоваться этой таблицей на 2500 еще и неудобно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2021, 12:54

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
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