|
|
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
Нужна помощь К примеру: есть две таблицы: Категории (id int auto_increment primary key, name char (50)) Товары (id int auto_increment primary key, name char (50), category_id int) С Access'ом только начал работать. Таблицы создавать не проблема, формы - для несвязаных таблиц - тоже :) Но вот со связанными таблицами - проблема. Хочу сделать форму - в которой можно добавлять запись для таблицы "Товары", а в ней поле со списком - "Категория", и можно или выбрать категорию из существующих, или добавить новую. Проблема в том, что я не хочу использовать другую форму для добавления категории, а сделать так, чтобы если юзер написал несуществующую категорию в поле со списком - она автоматически добавилась в таблицу "Категории". Как это можно сделать в Access, что для этого нужно использовать (Мастер связи таблиц или VBA) ? С уважением, Каримбаев Тимур ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2003, 20:56 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
А вот как раз очень похожий вопрос:\r \r /topic/44314 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2003, 21:12 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
Спасибо, вопрос похож, но мне надо немного другое, а я в Access - чайник, поэтому не могу связать эти две темы. Вот мой вопрос: Есть две таблицы (описаны выше) Есть форма, в которой есть поле со списком - это поле связано с таблицей Категории (причем видимый столбец таблицы в списке - "название", а присоединенный "id"). Я хочу сделать так, чтобы в поле со списком можно было выбрать существующий (проблем нет), а можно и вписать новый - при этом мне выдается сообщение, о том что такого значения в списке нет. Можно при NotInList добавлять значение в таблицу Категории - тогда все нормально, но я хочу чтобы новое значение просто осталось в списке (не добавляясь в таблицу), а добавлялось только потом (например при нажатии на кнопку). Если сформулировать вопрос короче: поле со списком связано с таблицей, причем установлено свойство "Ограничить списком" (снять его нельзя), надо: если вбито значение которого нет в списке - просто погасить ошибку, не добавляя значение в таблицу. С уважением Каримбаев Тимур ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2003, 22:25 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
Да, задача действительно другая. Мне кажется, что это невозможно. Если список сидит на таблице, то он не может показывать еще и те значения, которых в таблице нет. Если я ошибаюсь, пусть старшие товарищи меня поправят... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 00:08 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
Тогда вопрос другой: (Я ведь почти не работал с Access и VBA) Можно ли содержание списка заполнять самому ? Как это делать ? Т.е. я смогу сделать запрос к таблице, выбрать оттуда все, что мне надо, а вот вставить это в список на форме не смогу (у меня почему-то нет хелпа по VBA, а желательно сделать сегодня-завтра). Как заполнить список, который будет показывать одно поле (название), а в качестве значения - другое (id) ? Как я понимаю: если получится это сделать при Form Load, можно будет выполнить все остальное P.S.:Спасибо за участие :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 00:39 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
Ну, допустим, так: RowSourceType = ValueList ColumnCount = 2 (все вышеперечисленное задается в режиме конструктора) RowSource = "1,One,2,Two,3,Three" (т.е. строка примерно такого типа, и это можно делать как раз на Load или Open) (хотя в качестве разделителя может понадобиться не запятая, а точка с запятой, в зависимости от настроек Windows) P.S. Не за что. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 00:45 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
И вот как эту строку можно соорудить: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 00:55 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
Спасибо огромное, все вроде получается !!! Правда формировать строку этим кодом не удается, он почему-то выдает на эту строку Код: plaintext 1. Invalid Argument, но это не главное, в крайнем случае сделаю через ADODB, у меня это как-то получалось Главное было - избавиться от ошибки списка. Кстати по ходу дела я полностью сформировал вопрос :) Если пользователь ввел строку, которой нет в списке - она должна была добавиться в этот список, но если он её исправил - она должна была исправиться. Я делаю так, если я неправ - поправьте меня pls: Ввожу глобальную переменную bool new_category = false если она true - значит новая строка добавлена в список, потом, если строка меняется, я её заменяю на помененную (удаляю старую, добавляю новую) - позиция определяется одназначно, т.к. я добавляю на место index=0 :) если пользователь добавил строку которой нет в списке вызывается NotInList, в нем я пишу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 01:36 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
Invalid Argument - это из-за отсутствия ссылки на DAO, я написал тебе об этом в hiprog.com. Долго соображал насчет RemoveItem , потом только вспомнил, что он появился в Access 2002. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 06:56 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
2 Тимур Каримбаев: У этого алгоритма есть один серьезный недочет. Что будет, если юзер сначала добавит две строчки в список, а только потом нажмет на кнопку добавить их в таблицу? Под какими кодами они будут сидеть в списке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 10:54 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч: Мне по задаче требуется: при нажатии на кнопку - "Добавить" значение "category_id" или должно существовать в исходном списке (при этом оно не добавляется в таблицу) или же юзер может ввести только одно новое значение категории. Если юзер сначала напишет одну строчку, а потом попробует написать другую - первая должна исчезнуть. Для этого я использую RemoveItem() Т.е. если юзер будет добавлять продукт и напишет в поле_со_списком категории сначала одно несуществующее в списке значение, а потом (не нажимая кнопку добавить) - другое, то в таблицу добавится только одно из них (последнее) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. У этого алгоритма оказался другой существенный недостаток :) Если юзер вбивает значение, несуществующее в списке, а потом выбирает существующее - VB решает, что долже добавить это значение еще раз :) Это я исправил Спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 12:06 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что этот топик (и его автора) можно взять как образец для подражания для всех "начинающих". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 12:49 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
"Если сформулировать вопрос короче: поле со списком связано с таблицей, причем установлено свойство "Ограничить списком" (снять его нельзя), надо: если вбито значение которого нет в списке - просто погасить ошибку, не добавляя значение в таблицу." Можно так: Если вбито значение, которого нет в списке, то запоминаем его, гасим ошибку, скрываем поле со списком, делаем видимым другое (служебное) поле, в которое и вносим вбитое значение. Далее, если нужно вернуться к полю со списком, то напр. по ESC возвращаем все на место. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 13:03 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо, 2 Владимир Саныч - особенно Базу дописал (маленькая база, думал сделать за день, но почти не работал с Access и VBA, да и хелп по VBA не установлен поэтому столкнулся с маленькими, но вредными проблемами и затянулось на 2 ночи). Пойду показывать :) Спасибо форуму и участникам! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 13:31 |
|
||
|
Добавление из поля со списком
|
|||
|---|---|---|---|
|
#18+
Скорость, с которой он въехал, меня поражает, хоть у него есть опыт с SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2003, 13:44 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32238399&tid=1679881]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 349ms |

| 0 / 0 |
