|
|
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
Есть таблицы: 1) persons (id, name) 2) projects (id, name) 3) projects_persons_link (project_id, person_id) Если персона прикреплена к проекту - такая запись есть в projects_persons_link Вопрос: как сделать форму в которой при выборе проекта (т.е. есть некий m_project_id) в подчиенной форме выдается список всех персон - и справа от каждой есть галочка (если запись с таким person_id есть в projects_persons_link - то галочка отмечена, иначе - не отмечена) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 00:39 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
select persons.*, not isnull(projects_persons_link.project_id) as XXX from persons left join [select * from projects_persons_link where projects_persons_link.project_id=...]. as pp on persons.id=pp.person_id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 00:53 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
Вопрос: как сделать форму в которой при выборе проекта (т.е. есть некий m_project_id) в подчиенной форме выдается список всех персон - и справа от каждой есть галочка (если запись с таким person_id есть в projects_persons_link - то галочка отмечена, иначе - не отмечена) Код: plaintext 1. 2. 3. 4. 5. Примерно так. Правда я не знаю, обновляемый ли получиться запрос такой. Если нет, надо поиграться с джойнами, видами запроса, distinct'ами и т.д. Если "выбор проекта" - это не смена значения поля, а листание записей главной формы, то такой запрос без последнего where надо положить в источник данных подчиненной формы и настроить их синхронизацию через св-ва "основное/подчиненное поле". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 00:56 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
авторПравда я не знаю, обновляемый ли получиться запрос такой. Если нет, надо Вот так точно обновляемый будет, хоть я и опоздал :) me.mysubform.form.recordsource="select *, " & _ "dlookup(""true"",""projects_persons_link"",""person_id="" & persons.person_id) as f " & _ "from persons " & _ "where project_id=" & nz(ПолеВыбораПроекта,0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 01:01 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
Я не думаю, что тут обязательно нужен обновляемый запрос. Ведь все равно для его обновления надо добавить запись в таблицу линков, а это надо делать не через этот запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 01:03 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
Мой вариант (что-то я не смог реализовать предыдущие) SELECT persons.name, IIf([project_id]=[forms]![formName]![cboProject],-1,0) AS [Участие] FROM persons LEFT JOIN projects_persons_link ON persons.id = projects_persons_link.person_id; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 01:36 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
В этом варианте вроде надо добавить group by? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 01:38 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
авторВ этом варианте вроде надо добавить group by? Может быть, только я пока не пойму, зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 01:50 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
Вроде проверил, вроде работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 01:51 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
Если в таблице projects_persons_link какая-то персона фигурирует несколько раз с разными проектами, то запрос так и выдаст ее несколько раз. Я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 01:55 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
авторЯ ошибаюсь?[ Нет, ошибся я ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 01:59 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
Почти вариант Geo (только он там, мне кажется, чуток напутал) SELECT persons.name, DCount("*","[projects_persons_link]","person_id=" & [id] & " And [project_id]=" & [forms]![formname]![cboProject])>0 AS [Участие] FROM persons; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 02:22 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
У меня похожая проблема. Сейчас сделал примерно тоже, так где совпадения нет, там 0. А где есть совпадение - #Error. Как с этим можно побороться? SELECT Таблица1.id, IIF(Таблица2.id > 0,-1,0) as checkfound FROM Таблица1 LEFT JOIN tempPG ON Таблица1.id = tempPG.id WHERE Таблица1.buv_id = '4900087586' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 12:38 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
Вот необновляемый, но красивый, по моему мнению, вариант: SELECT persons.*, Exists (SELECT * FROM projects_persons_link WHERE person_id=id and project_id=[m_project_id]) AS Galochka FROM persons; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 13:50 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
Мне нужно сделать так, чтобы можно было проставить галочки, а потом пройтись по этому Recordset'у чтобы сделать необходимые INSERT'ы или DELET'ы в projects_persons_link как это возможно сделать ? может создавать временную таблицу, а потом проходиться по ней ? (вроде довольно кривой вариант) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 14:20 |
|
||
|
Ленточные формы
|
|||
|---|---|---|---|
|
#18+
1.Добавь в таблицу persons (и в форму) поле типа "флажек"(для отметки выбора). 2.После ввода пользователем нового m_project_id, обновляй флажки исползуя клон рекордсета формы или запрос на обновление. 3.На событие после обновления для формы (persons ) повесь код удаляющий или добавляющий записи в projects_persons_link (можно сделать и отдельной кнопкой для всех записей persons). п.с. Подумай о списках с "несвязанным выделением", или об очень удобном методе выбора путем перекидывания из одного списка в другой,реализованный во многих мастерах Access. Вместо отдельной таблицы, и доп поля можно использовать связку массив ID + функция в запросе от ID возвращающая истину или ложь, в зависимости от наличия аргумента в массиве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 15:35 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32478366&tid=1675360]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
1172ms |
get topic data: |
16ms |
get forum data: |
4ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 1509ms |

| 0 / 0 |
