
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.09.2004, 03:15:36
|
|||
|---|---|---|---|
Счетчик + поле со списком = фигня |
|||
|
#18+
Уважаемые Господа!!! Подскажите как побороть такую пакостную заковыку: Упрощенно: есть две таблицы ТОВАР и ПРОИЗВОДИТЕЛЬ в производителе ключевое поле - счетчик [производитель_id]. Создал форму для просмотра/ввода данных о товаре. В числе этих данных и производитель с его названием, телефоном и т.д. Для упрощения ввода данных помимо полей в которых размещены данные о производителе вставил в форму поле со списком в котором отображаются все производители. Что бы пользователь ПРИ ВВОДЕ нового товара мог выбрать производителя из числа уже введенных. Это -то и не работает: для УЖЕ ВВЕДЕННОГО товара все ок - меняешь производителя в поле со списком (в нем присоединенный столбец [ПРОИЗВОДИТЕЛЬ].[производитель_id] он привязан к [ТОВАР].[производитель_id]) - меняется значение в [ТОВАР].[производитель_id] и все отлично! НО! Когда вводится новая запись, счетчку автоматом присваивается новое значение, оно же автоматом появляется в поле [ТОВАР].[производитель_id] а при попытке выбрать введенного ранее производителя возникает ругательство: "Текущее поле должно совпадать с ключем связи [ПРОИЗВОДИТЕЛЬ].[производитель_id] в таблице со стороны 'один' отношения 'один-ко-многим'. Введите на стороне 'один' запись с требуемым значением ключа связи, а затем создайте запись с тем же значением ключа в таблице на стороне 'только многие'" 1. Можно ли побороть эту бяку не меняя (интер)фейса формы. 2. Что вообще происходит? Заранее благодарен за ответ / С уважением, Андрей! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2004, 10:35:16
|
|||
|---|---|---|---|
Счетчик + поле со списком = фигня |
|||
|
#18+
- Структура таблиц где? Или мы угадать должны, чего вы там нахимичили? - Добавление новой записи в какую таблицу? - На основе какого запроса(таблицы) построена форма для ввода? (текст запроса, плиз) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2004, 13:08:48
|
|||
|---|---|---|---|
Счетчик + поле со списком = фигня |
|||
|
#18+
Ok! В самом деле речь идет о базе сертификатов на товары. В сертификации участвуют 3 организации: орган по сертификации(агентство), производитель товара и владелец сертификата. Соответственно, имеются 4 таблицы CERTIF_TBL, AGENCY_TBL, OWNER_TBL, CERTIF_TBL. Структуру базы данных я приложил ниже. Новая запись добавляется не в таблицу, а в запрос основанный на всех 4 таблицах, т.е. предполагается ввод информации о сертификате и об организациях его выдавших на одной форме. Уникальных производителей(а равно агентств и владельцев) гораздо меньше чем сертификатов на их товары. Поэтому хочется что бы при вводе сертификата на товар N, если его производитель был уже введен в базу при вводе другого сертификата производителя не пришлось бы забивать пальца'ми еще раз. А можно было выбрать из списка прежде введенных. Вот, так же, запрос на основе которого построена форма: Код: plaintext 1. 2. 3. 4. 5. Надеюсь теперь все ясно. :-) С уважением, Андрей! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2004, 13:12:49
|
|||
|---|---|---|---|
Счетчик + поле со списком = фигня |
|||
|
#18+
Тьфу, блин, все пепепутал таблицы CERTIF_TBL - данные о сертификате AGENCY_TBL - об агентстве MANUFACT_TBL - о производителе OWNER_TBL - о владельце впрочем, это ясно из рисунка и запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2004, 13:25:26
|
|||
|---|---|---|---|
Счетчик + поле со списком = фигня |
|||
|
#18+
Уж больно у тебя наворечено :( Может сделать форму на основе только таблицы CERTIF_TBL На форме окромя ее полей еще будет 3 комбика Возможно, также поля (свободные - точнее привязанные к комбику; типа =ComboAgency.Column(2), =ComboAgency.Column(3), ...) для просмотра информации по организации И рядом 3 кнопки - "добавить новую организацию", которые открывают 3 разных формы на добавление записей в соответсвующие таблички Т.к. организаций меньше, чем товаров, то и эти функции будут использоваться не очень часто (в сравнении с операцией добавления/изменения товара) Нажал кнопку --> добавил организацию --> Закрыл форму --> обновил комбик (ComboAgency.ReQuery) --> можешь выбирать добавленную организацию Это как предложение А то у тебя 4 таблички в одном запросе и как себя должен вести запрос при попытке добавления в него записи не совсем понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2004, 13:41:45
|
|||
|---|---|---|---|
Счетчик + поле со списком = фигня |
|||
|
#18+
Блин, как неохота все переделывать ;-) но это я подумаю еще... Но, главное! Все-таки не понятно что происходит! Просматриваю и редактирую запись - выбрал в комбобоксе другое агентство (т.е. выбрал другое значение [AGENCY_TBL].[AGENCY_ID]) - при этом, грубо говоря, в таблице [CERTIF_TBL] в соответствующей строке поменялся [CERTIF_TBL].[AGENCY_ID] и соответственно все данные об агентстве. А при создании новой записи в полях [AGENCY_TBL].[AGENCY_ID] и [CERTIF_TBL].[AGENCY_ID] возникает новое значение счетчика и ХРЕН ИХ ПОМЕНЯЕШЬ комбобоксом в ручную!!! Что за ботва?! (Для полной ясности аттачу форму) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2004, 14:38:11
|
|||
|---|---|---|---|
Счетчик + поле со списком = фигня |
|||
|
#18+
А ты свой запрос в виде таблицы открой! У тебя в конце будет запись со звездочкой - типа сюда вставляется новая запись и у четырех полей будет написано "(счетчик)" - как ты думаешь что там повится при попытке добавления записи в такой запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2004, 22:50:23
|
|||
|---|---|---|---|
Счетчик + поле со списком = фигня |
|||
|
#18+
Происходит совсем другая ошибка! "В таблице ... ядром бд MS Jet не найдены записи с совпадающим ключевым полем ..." Т.к. счетчики и соответствующие им внешние ключи остаются пустыми при вводе в режиме таблицы! ПРИ ВВОДЕ В РЕЖИМЕ ФОРМЫ ПОЛЯ СЧЕТЧИКА ЗАПОЛНЯЮТСЯ АВТОМАТОМ, НА ЗНАЧЕНИЕ СЛЕДУЮЩЕЕ ЗА УЖЕ ВВЕДЕННЫМ. Все как положено! При вводе новой записи если не прибегать к комбо-боксу все работает отлично! Поэтому, уважаемый paparome , Вашего замечания я не понял! А при использовании комбо бокса не работает! Этого я тоже не понял! Мож кто знает а!? Совсем замучался я... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2004, 23:00:14
|
|||
|---|---|---|---|
|
|||
Счетчик + поле со списком = фигня |
|||
|
#18+
andrey137НО! Когда вводится новая запись, счетчку автоматом присваивается новое значение, оно же автоматом появляется в поле [ТОВАР].[производитель_id] О каких двух полях речь? Где они на схеме? Если речь о счетчике таблицы CERTIF_TBL, то он не должен больше нигде "появляться автоматом". А если о счетчике одной из малых таблиц, то там вообще не должна появляться новая запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2004, 03:10:21
|
|||
|---|---|---|---|
Счетчик + поле со списком = фигня |
|||
|
#18+
УРА, ТОВАРИЩИ!!! Ниже вы можете лицезреть ответ который я долго вымучивал, будучи в отчаянии от всеобщего непонимания! Настолько мучительно, что для очистки совести решил создать описанную ниже базу данных... и... О, боже!... Убедился что глюка-то описанного мною и нет!!! Усложнил ситуацию, добавил еще пару таблиц аналогичных таблице ПРОИЗВОДИТЕЛЬ. Все-равно работает! Короче выяснилось - глюк в том, что у меня в полях ПРОИЗВОДИТЕЛЬ_НАЗВАНИЕ и налогичных ему стояло по умолчанию "значение будет введено позднее"! Если ничего не вводить по умолчанию и не редактировать поля ПРОИЗВОДИТЕЛЬ.ПРОИЗВОДИТЕЛЬ_НАЗВАНИЕ, ПРОИЗВОДИТЕЛЬ.ПРОИЗВОДИТЕЛЬ_АДРЕС И Т.Д. и воспользоваться комбо-боксом, то все работает! Но вот если эти поля поредактировать, а потом использовать комбо-бокс, то хана. ВОЗНИКАЕТ ОПИСАННАЯ НИЖЕ ОШИБКА!!! Почему, правда, по-прежнему непонятно!? ================================================= ВС! paparome! Все я окончательно всех запутал! Сколько раз замечал чем больше пишешь тем непонятнее становится! Еще раз. Упрощенная модельная ситуация. Две таблицы ТОВАР, ПРОИЗВОДИТЕЛЬ Связаны INNER JOIN по полю ПРОИЗВОДИТЕЛЬ_ID. Поле ПРОИЗВОДИТЕЛЬ_ID в таблице ПРОИЗВОДИТЕЛЬ ключевое, счетчик. Это все, относительно схемы БД. Есть форма. Форма для ввода/просмотра/редактирования данных от товаре и его производителе "в одном окошке"! Основана она на запросе: Код: plaintext 1. В форму вставлено поле со списком. Основанно оно на запросе: Код: plaintext 1. В свойстве "данные" этого поля со списком стоит: ТОВАР.ПРОИЗВОДИТЕЛЬ_ID Присоединенный столбец 1, т.е. ПРОИЗВОДИТЕЛЬ.ПРОИЗВОДИТЕЛЬ_ID. ИТАК: Когда в форму я ввожу новый товар и заполняю поля касающиеся как товара так и производителя (а именно: поля ПРОИЗВОДИТЕЛЬ.ПРОИЗВОДИТЕЛЬ_НАЗВАНИЕ, ПРОИЗВОДИТЕЛЬ.ПРОИЗВОДИТЕЛЬ_АДРЕС И Т.Д.) все работает великолепно! СРАЗУ СОЗДАЮТСЯ ДВЕ ЗАПИСИ ОДНА В ТАБЛИЦЕ ТОВАР, ДРУГАЯ В ТАБЛИЦЕ ПРОИЗВОДИТЕЛЬ, СВЯЗАННЫЕ ПО НОВОМУ АВТОМАТОМ СФОРМИРОВАННОМУ ЗНАЧЕНИЮ СЧЕТЧИКА ПРОИЗВОДИТЕЛЬ_ID. А КОГДА Я ПЫТАЮСЬ ПРИ ВВОДЕ НОВОЙ ЗАПИСИ ВЫБРАТЬ ПРОИЗВОДИТЕЛЯ В ПОЛЕ СО СПИСКОМ ИЗ ЧИСЛА ПРЕЖДЕ ВВЕДЕННЫХ - ВОЗНИКАЕТ ОШИБКА!!!!! ОШИБКА: "Текущее поле должно совпадать с ключем связи [ПРОИЗВОДИТЕЛЬ].[производитель_id] в таблице со стороны 'один' отношения 'один-ко-многим'. Введите на стороне 'один' запись с требуемым значением ключа связи, а затем создайте запись с тем же значением ключа в таблице на стороне 'только многие'" 1. что происходит? 2. что делать? В любом случае! Уважаемые ВС, paparome и все остальные, Большое спасибо что отвечаете! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&mobile=1&tid=1671807]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 322ms |

| 0 / 0 |
