17.03.2004, 17:48 | #1 |
Участник
|
проблемы с lookup
Хочется создать простую вещь - два поля на форме, где второе поле зависит от первого.
Но я столкнулся с двумя проблемами: Есть таблица1 (поле1), таблица2 (поле2). Таблицы между собой не связаны Relation. 1. при переносе поля1 и поля2 на форму они не имеют выпадающих списков, хотя EDT у обоих это позволяет. Думаю это происходит от того что в данных таблицах эти поля должны быть уникальными. Но тогда как мне получить на форме данные поля в виде выпадающих списков? 2. для второго поля я перекрываю метод loolup() PHP код:
Подскажите, пожалуйста, что я неправильно делаю? |
|
17.03.2004, 18:09 | #2 |
Участник
|
Значение range правильно формируется? Какой тип у поле1 ?
|
|
17.03.2004, 18:21 | #3 |
Участник
|
Цитата:
Изначально опубликовано dn
Значение range правильно формируется? Какой тип у поле1 ? есля перетаскиваю поле с подобным EDT То на ворме оно представлено в виде выпадающего списка. А вот если я его тащу с основной таблице, в которой оно уникально, то выпадающего списка нет. В этом вся проблема... Как тут быть? |
|
17.03.2004, 18:26 | #4 |
Участник
|
Попробуйте выставить свойство LookupButton у Edit'ов в Always
|
|
17.03.2004, 18:40 | #5 |
Moderator
|
Re: проблемы с lookup
Цитата:
Изначально опубликовано ArturK
хотя EDT у обоих это позволяет В самой таблице у поля указан соответствующий EDT?
__________________
Андрей. |
|
17.03.2004, 18:42 | #6 |
Участник
|
Цитата:
Изначально опубликовано Джон
Попробуйте выставить свойство LookupButton у Edit'ов в Always То что доктор прописал .... |
|
17.03.2004, 18:52 | #7 |
Участник
|
но теперь когда делаю выборку записи,
а потом закрываю форму, мне вылетает ошибка "невозможно отредактировать запись в Таблице2. Запись уже существует". как от этого избавиться. повторю: 1. я перетащил из таблицы поле на форму. Это поле в таблице должно быть уникально. 2. и перекрыл данному StringEdit 3. и поставил свойство lookupButton в always что я сделал не так? |
|
17.03.2004, 19:00 | #8 |
Moderator
|
У вас что-то неправильно изначально. Если в stringedit установлены свойства Datasource и Datafield, а на соответствующем поле таблицы установлен EDT с настроенным relation, кнопка lookup`а появляется сама и не нужно ставить lookupButton в always. Это стандартный механизм работы lookup.
__________________
Андрей. |
|
17.03.2004, 19:05 | #9 |
Участник
|
да, у меня все так и есть,
и в других таблицах это поле отображается в виде выпадающего списка, в этой "родительской" таблице нет. кроме того я заметил, что во всех родительских таблицах поля, являющиеся уникальными, на формах не отображаются в виде списков. Например, если из таблицы InventTable перетащить на форму поле InventGroupId, то выпадающий список есть, а если перетащить это же поле из таблицы InventItemGroup, то оно будет без выпадающего списка. мне кажется, что при выборе из данного поля, формы патается создать новое поле с именем уже имеющимся в таблице, а так как оно уникальное, вот и выскакивает ошибка. если это так, то в как нужно делать правильно? |
|
17.03.2004, 19:24 | #10 |
Moderator
|
Никогда над этим не задумывался, но, похоже, АХАРТА не рисует кнопку для полей, relations в EDT которых ссылаются на само это поле (и не важно, уникальный там индекс или нет).
А у вас, скорее всего, происходит следующее: для того, чтобы была возможность редактирования (выпадания lookup), нужна запись в datasource. Соответственно, вызывая lookup, вы редактируете какую-то существующую запись или создаете новую. При закрытии формы происходит автоматическое сохранение измененной записи, соответственно, если выбрано уже имеющееся в таблице значение первичного ключа, вызывается сообщение об ошибке.
__________________
Андрей. |
|
17.03.2004, 19:25 | #11 |
Moderator
|
Кстати, что за странная у вас задача: редактировать уникальное поле посредством выбора значений из него?
__________________
Андрей. |
|
17.03.2004, 19:32 | #12 |
Участник
|
Цитата:
Изначально опубликовано Dron AKA andy
Кстати, что за странная у вас задача: редактировать уникальное поле посредством выбора значений из него? А потом значения передать в другую форму ... Чтобы все понять может вы объясните, как такое сделать на следующем примере. На форме два поля ItemGroupId и ItemId в Itemid должны отображаться записи, соответсвующие выбранной группе в ItemGroupId По каким таблицам строятся DS для этих полей? это аналогичная моей задача ... |
|
18.03.2004, 09:17 | #13 |
Участник
|
Постановка задачи действительно странная... Обычно имеется своя таблица в которой есть поля, допустим ItemId и ItemGroupId. После заполнения ItemGroupId требуется фильтровать по этому значению выпадающий список для ItemId. Для этого у самого контрола или у объекта поля ItemId источника данных перекрывается метод lookup, как вы писали в первом сообщении этой ветки.
Если я правильно понял то, что вы все-таки хотите, то нужно: 1.Создать временную таблицу с двумя полями ItemId и ItemGroupId. 2. Создать на форме источник данных ссылающийся на эту таблицу. 3. Создать контролы для полей этого источника данных и у одного из них перекрыть метод lookup. p.s. В качестве "Таблицы2" будет выступать InventTable, а "Таблицы1" - таблица источника данных формы. |
|
18.03.2004, 14:23 | #14 |
1C
|
Цитата:
Нет мне просто нужно сделать lookup одного поля по другому.
Тогда здесь все очень просто (даже на примере InventTable): Поле ItemGroupId имеет тип ItemGroupId. Смотрим данный тип. Он имеет relation на таблицу InventItemGroup по полю ItemGroupId. Поле ItemGroupId у таблицы InventItemGroup должно быть уникально и являться первичным ключом. Если все эти условия у вас соблюдены, то лукап сам появляется. Судя по всему у вас что то с EDT. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
gatesasbait: How to define a custom lookup form for an extended datatype | 0 | |||
Создание Lookup формы | 9 | |||
Нагло глючит lookup | 1 | |||
Проблемы с Lookup | 1 | |||
Динамические Lookup формы. | 0 |
|