powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка значений по нескольким полям.
7 сообщений из 7, страница 1 из 1
Проверка значений по нескольким полям.
    #32428738
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно говоря есть три поля: "товар" "масса" "тип упаковки", и есть проверочная таблица всех возможных товаров с этими тремя полями, подскажите, пожалуйста, как мне сделать так, чтобы после занесения в Б.Д. этих трех параметров Access проверял их на соответствие в проверочной таблице, и если эти три параметра не соответствуют проверочной таблице, то Access выдавал бы ошибку.
Буду ОЧЕНЬ признателен за любое мнение по моему вопросу.
...
Рейтинг: 0 / 0
Проверка значений по нескольким полям.
    #32428742
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
1. Создаем запрос:

select top 1 * from однатаблица inner join другаятаблица
on
однатаблица.товар=другаятаблица.товар
and
однатаблица.масса=другаятаблица.масса
and
однатаблица.типупаковки=другаятаблица.типупаковки
where
и тут условие, что берется только последняя запись

2. if currentdb.openrecordset("тотсамыйзапрос").bof then msgbox...
...
Рейтинг: 0 / 0
Проверка значений по нескольким полям.
    #32428751
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Или лучше так:

1. Создаем запрос:

select top 1 * from проверочнаятаблица
where
товар=p1
and
масса=p2
and
типупаковки=p3

2.

dim q as querydef
set q=currentdb.querydefs("тотсамыйзапрос")
q.parameters!p1=товар
q.parameters!p2=масса
q.parameters!p3=типупаковки
if q.openrecordset().bof then msgbox...
...
Рейтинг: 0 / 0
Проверка значений по нескольким полям.
    #32428759
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, только правильно ли я понял, что p1 - это проверочная_таблица_товар и т.д.?
И я не очень понимаю, что означает "top 1" для запроса, т.е. вроде получается, что мы берем первую запись, а должны ведь брать последнюю?
:-)
...
Рейтинг: 0 / 0
Проверка значений по нескольким полям.
    #32428762
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще: запрос почему-то не работает, Access все время спрашивает параметры:
однатаблица.товар
однатаблица.масса
однатаблица.типупаковки

P.S. одна_таблица - это у меня те значения, которые надо проверить,
а другая_таблица - это проверочная таблица.

:-)
...
Рейтинг: 0 / 0
Проверка значений по нескольким полям.
    #32428808
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще вариант, если поля на форме. Правильность написания соответствии с типом данных - это в FAQ
Код: plaintext
1.
2.
3.
If IsNull(DLookup( "товар" ,  "другая_таблица" ,  "[товар]="  & ПолеТовар &  " AND [масса]="  _
          & ПолеМасса &  " AND [типупаковки]="  & типупаковки)) Then
MsgBox  "Нет такого!" 
End If
...
Рейтинг: 0 / 0
Проверка значений по нескольким полям.
    #32429383
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
авторправильно ли я понял, что p1 - это проверочная_таблица_товар и т.д.?
Это не таблица, это параметр, в который подставляется значение - товар и т.д.

авторИ я не очень понимаю, что означает "top 1" для запроса, т.е. вроде получается, что мы берем первую запись, а должны ведь брать последнюю?
Мы выбираем из проверочной таблицы, поэтому последнюю брать не должны. Top 1 сделан для того, чтобы запрос работал быстрее, нам ведь не нужны данные из него, а надо только проверить, есть ли хотя бы одна запись.

авторзапрос почему-то не работает, Access все время спрашивает параметры:
однатаблица.товар
Это из моего первого варианта. Не надо им пользоваться, второй лучше.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка значений по нескольким полям.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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