информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медЗа кого нас держат?Страшный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Блокировка российских аккаунтов... 
 Отзыв сертификатов ЦБ РФ, ПСБ,... 
 Памятка мирным людям во время информационной... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
во всплывающем списке (popup) или в выпадающем... 08.03.11 15:47  Число просмотров: 1090
Автор: Den <Denis> Статус: The Elderman
Отредактировано 08.03.11 15:54  Количество правок: 2
<"чистая" ссылка> <обсуждение закрыто>
> Есть таблица параметров: params (id, title); есть таблица
> значений, допустимых для этих параметров: values (id,
> title); есть таблица соответствия значений параметрам:
> params_values (param, value); есть таблица list (id, param,
> value), в которой хранится список параметров и их значений.
> Параметры и типы выбираются с помощью всплывающего списка.
>
> Необходимо сделать так, чтобы во всплывающем списке
> отображались только те значения, которые соответствуют
> выбранному параметру. Ранее я уже задавал подобный вопрос,
> но поторопился закрыть тему, не расставив все точки над i.

во всплывающем списке (popup) или в выпадающем (combobox)???

> Мне частично удалось решить эту задачу: я создал форму и на
> событие AfterUpdate списка params поставил Requery для
> values. В списке values прописан следующий запрос:
>
>
> SELECT id, title FROM values WHERE id in
> (SELECT value FROM params_values WHERE
> param=param.value);
> 

---
> Жирным выделена переменная, которая подставляется из
> всплывающего списка params.

неоптимальный запрос. сделай так:
SELECT values.id, values.title
  FROM params_values
    INNER JOIN values
      ON values.id = params_values.value
  WHERE params_values.id = Me.cmboxParam_ID.Value

---

где Me - ссылка на текущую форму; cmboxParam_ID - поле с выпадающим списком в форме Me.

У тебя неописательные имена полей в таблице params_values, может поэтому ты сам часто путаешься. Если поле предназначено для хранения идентификатора значения, то так и называй - value_id, а не просто value.

> Проблема в следующем. Если в таблице list есть только одна
> запись, то всё работает как часы, но если добавляются ещё
> записи, то начинается такая следующая неприятная вещь. В
> первой строке я задаю параметр и значение. Во второй, я
> задаю новый параметр.... И как только я делаю это (как
> только сработает AfterUpdate и, соответственно Requery), то
> значение из первой строки исчезает, т.к. уже не
> соответствует текущей выборке. Но исчезает оно только
> визуально, - оно не отображается только из-за
> несоответствия критериям текущей выборки, но в таблице
> params_values соответствующая запись остаётся.

Ты используешь ленточную форму в которой у тебя поля с выпадающим списком??? В ленточных формах используется многократно повторяющаяся одна и таже форма, потому у тебя и возникает такая "неприятная вещь".
Есть три варианта обхода этой проблемы:
1. Для выборки DropDownList не задавать ограничений до момента события выпадания списка, а перед выпадением списка уточнять запрос.

2. Использовать ленточную форму только для просмотра и/или редактирования полей, значения которых не зависит от других значений. Например, ленточную форму можно использовать только для чтения, а при двойном щелчке по записи открывать одиночную форму для редактирования выбранной записи.

3. Частный случай, который далеко не всегда удается использовать "в лоб" - подформы (вложенные формы).

> Такой вопрос. Можно ли сделать так, чтобы последствия
> Requery затрагивали только текущую запись таблицы, а все
> остальные записи оставляли не тронутыми?

можно. решения смотри выше.

P.S. Для изучения Access'а лучше всего использовать Access '97, т.к. в нем самый лучший (хоть и устаревший) файл помощи + база решений, в которой можно почерпнуть интересные решения.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach