|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.05.2012, 18:08 | #1 |
Регистрация: 22.05.2012
Сообщений: 6
|
Поиск совпадающих значений полей в 2-х таблицах
Всем привет.
Есть три таблицы (БД Access): 1. TZakazJ (key(счетчик), ZakazN, Client) 2. TTovarJ (key(счетчик), Naimen, Art, Razmer, Kolvo, Price) 3. TTovarList (key(числовой, неиндексируемое), Id(числовой), Naimen, Art, Razmer, Kolvo, Price) Цель, сделать чтобы при клике по строке в таблице TTovarJ выводилась форма с запросом сколько товара перенести и эта строка из TTovarJ добавлялась в TTovarList с введеным кол-вом товара, это я сделал. Мне нужно, чтобы, после клика по строке в TTovarJ делался запрос на поиск УЖЕ существующего товара в TTovarList, если такой товар уже есть в TTovarList, то изменить содержимое столбца Kolvo на введенное в форме. Прошу подсказать код как проверить таблицы на совпадающие записи и сделать то-то. Можно сделать проверку по столбам 'key' (TTovarJ) и 'Id' (TTovarList) ну или как лучше... я не знаю, опыта в прогр БД мало. - использую ADOTable. - key(TZakazJ) связан с key(TTocarList) чтобы при перемещении по заказам, менялся товар в заказе. |
23.05.2012, 07:05 | #2 |
Регистрация: 23.05.2012
Сообщений: 5
|
Я так понял, что ты с SQL не знаком?
Банальный SELECT Kolvo from TTovarList where Id_Товара = <ID_товара из текущей строки> AND ID_Заказа = <ID_заказа из текущей строки>. При необходимости изменить кол-во: UPDATE TTovarList SET Kolvo = <Нужное_кол-во> where Id_Товара = <ID_товара из текущей строки> AND ID_Заказа = <ID_заказа из текущей строки>. |
23.05.2012, 08:01 | #3 | |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Цитата:
Не проще ли добавить запись с этим же товаром и нужным новым количеством. Так поступают все нормальные разработчики БД. Если, конечно, это не учебное задание, в котором безнаказанно можно творить различные безобразия |
|
23.05.2012, 08:12 | #4 | |
Регистрация: 23.05.2012
Сообщений: 5
|
Цитата:
Ибо нормальная форма таблицы TTovarList в данном случае будет: (Id_Заказа, ID_Товара)-ключ, и кол-во. |
|
23.05.2012, 08:26 | #5 | |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Странное, однако, утверждение.
Уникальный идентификатор записи (строки) в таблице не может относится к какому-то объекту БД. Он обязан быть абстрактным значением. Не надо забывать, что заказ может формироваться во времени не сразу и в таблице обязательно должно быть поле фиксирующее дату или, хотя бы, время его оформления. И тогда все становиться на свои места: - сделали заказ товара 1 с количеством 2 в 08:00 - добавили в заказ товар 1 с количеством 1 в 08:15 Эти операции в хронологии и должна фиксировать ваша таблица. P.S. Цитата:
Попробуйте ваш вопрос разместить на формуме SQL.ru. Скорее всего, прочтете много чего нелицеприятного. Последний раз редактировалось Прик; 23.05.2012 в 08:41. |
|
23.05.2012, 09:04 | #6 | |
Форумчанин
Регистрация: 26.03.2012
Сообщений: 665
|
Цитата:
|
|
23.05.2012, 09:22 | #7 | |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
У автора:
Цитата:
"Абстрактным", это значит не связанным ни с какими другими строками ни каких других таблиц БД. |
|
23.05.2012, 10:41 | #8 |
Форумчанин
Регистрация: 26.03.2012
Сообщений: 665
|
Вот связь мэни-ту-мэни, тут как правило ид1 + ид2 = ПК, связаны не с одной а сразу с 2мя, а бывает и больше, и нет никакой "абстракции".
Ну а ключ (Id_Заказа, ID_Товара) действительно неправильный, тут еще надо добавить размер. Да и вообще переделать структуру. |
23.05.2012, 11:14 | #9 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Оффтоп пошел.
Да вы ломитесь в открытые двери: я ж не буду спорить что ид1+ид2 - это не "абстракция". Разумеется. Но речь то идет об идентификаторах строк каждой таблицы. Они должны быть уникальными (в чем, я уверен, вы не сомневаетесь) и, к тому же, не привязанными ни к чему либо в БД. Именно это люди (не я) и называют "абстракцией". |
23.05.2012, 11:21 | #10 |
Форумчанин
Регистрация: 26.03.2012
Сообщений: 665
|
А я вам пример про что привел?
Именно про идентификаторы строк. Надор 2 и более полей уникально идентифицируют запись, а также это и связь с другими сущностями. И чего? и ничего. нет никакой "абстракции" |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дублирование полей в нескольких таблицах и их заполнение | MIKE11IPME | БД в Delphi | 7 | 24.04.2012 20:26 |
Поиск совпадающих ЦИФР в Memo! (не путать с поиском строк!) | NiKiToZZ- | Помощь студентам | 14 | 31.01.2011 03:52 |
Поиск совпадающих или похожих значений | jekich | Microsoft Office Excel | 4 | 14.08.2010 20:55 |
Сравнение и замена значений в двух таблицах Excel | shalinoleg | Microsoft Office Excel | 2 | 10.06.2010 09:53 |
Поиск и удаление совпадающих строк в разных листах | hybrid84 | Microsoft Office Excel | 11 | 24.07.2009 05:13 |