Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > замена строки строкой из другой таблицы


Автор: LankaLight 24.7.2007, 14:43
Привет всем!
Подскажите, пожалуйста, как правильно сделать! Есть таблица Справочник с полями Материалы, Наименование, ГОСТ, Количество... "800 записей. Нужно как-то пользователю максимально облегчить поиск конкретного товара в справочнике и внести некоторые изменения. Например, в поле Количество. Делаю так: создаю запрос с условием на создание таблицы. В новую таблицу помещаются товары со всеми полями, наименование которых содержит ключевое слово для поиска. Их можно просмотреть в форме и выбрать необходимое. Теперь! Если я внесу изменения, то они останутся в этой таблице. А как сделать так, чтобы изменения осуществлять в главной таблице Справочник? Или я как-то неправильно делаю поиск и можно сделать проще, не создавая промежуточную таблицу, а работая напрямую с таблицей Справочник? Подскажите, пожалуйста!  smile 

Автор: kapbepucm 24.7.2007, 14:48
Не понимаю, зачем вообще создавать промежуточную таблицу. Делай запрос и работай с ним, как с таблицой. Записи запроса ведь тоже
Цитата(LankaLight @  24.7.2007,  14:43 Найти цитируемый пост)
можно просмотреть в форме и выбрать необходимое
Если, конечно, я правильно понял постановку задания.

Автор: LankaLight 24.7.2007, 15:39
Наверное, я не совсем четко сформулировала задание. Мне нужно в справочнике найти какую-то определенную запись. Я ввожу ключевое слово и делаю запрос с условием. Запрос, соответственно, выдает мне з0аписи, в которых такое слово встречается. Чтобы как-то цивильно для пользователя это выглядело, он эти записи просматривает в форме. НО! Ему нужно найти только одну запись из всех выбранных и в ней произвести изменения.  В форме-то он это сделает. Но необходимо же, чтобы эти изменения сохранились и в самом справочнике, откуда изначально выборка производилась! Если делат форму на основе запроса, то в форме, если не ошибаюсь, можно только просматривать записи, без возможности их изменения. Вот и делается запрос на создание таблицы. А как теперь сделать так, чтобы изменить и в самом Справочнике запись, которую меняли в этой промежуточной таблице? Возможно ли вообщ езаменить одну строку из таблицы другой строкой из другой таблицы? Или как тут вообще правильно делать нужно??? smile 

Автор: kapbepucm 24.7.2007, 16:13
Цитата(LankaLight @  24.7.2007,  15:39 Найти цитируемый пост)
Если делат форму на основе запроса, то в форме, если не ошибаюсь, можно только просматривать записи, без возможности их изменения
Ну, это смотря какой запрос и какие установлены свойства полей исходной таблицы. У тебя вроде же простая выборка (через Select), по идее должно работать. Всё же попробуй
Цитата(LankaLight @  24.7.2007,  15:39 Найти цитируемый пост)
делат форму на основе запроса

Не, ну конечно, можно и как ты предлагаешь: стирать строки в исходной таблице и добавлять новые, например, средствами SQL. Но проще первое.

Автор: LankaLight 24.7.2007, 16:44
А можно поподробнее? О каких свойствах поля идет речь? Я не спец, но у меня не получается редактировать записи, выбранные запросом. Да, запрос через select.

Автор: kapbepucm 24.7.2007, 18:07
Кинь для начала SQL текст, посмотреть. На свойства, наверное забей, походу проблема в другом (я думал может противоречия какие). Если открыть запрос "на прямую" (не в форме) , тоже нельзя редактировать?

Автор: Akina 24.7.2007, 23:55
LankaLight, я что-то не понимаю, зачем столько наворочано... зачем запрос, когда у формы есть свойство ФИЛЬТР? его можно менять совершенно произвольно, и оно влияет только на то, какие записи ОТОБРАЖАЮТСЯ формой. В то время как источником данных остается таблица, и изменения в форме попадают прямиком в поля таблицы.

Автор: Dimbuch 25.7.2007, 12:02
Зачем вобще что-то переносить из одной таблицы в другую?
Надо просто создать форму на основе запроса. Там уже можно править данные и они будут сами сохраняться там где нужно.

Автор: Akina 25.7.2007, 18:21
Цитата(Dimbuch @  25.7.2007,  13:02 Найти цитируемый пост)
Надо просто создать форму на основе запроса. Там уже можно править данные и они будут сами сохраняться там где нужно

Это почти то же самое. Но имхо менять фильтр правильнее - не нужен Requery.

Автор: LankaLight 26.7.2007, 11:40
Спасибо всем огромное! Когда только начинаешь что-то делать, очень трудно сориентироваться, а вы помогаете понять, в каком направлении копать, даже если конкретного ответа на вопрос не получаешь. smile   Вооще, форум - просто находка для новичка!!! smile 

Автор: Dimbuch 26.7.2007, 15:33
Цитата(Akina @ 25.7.2007,  18:21)
Цитата(Dimbuch @  25.7.2007,  13:02 Найти цитируемый пост)
Надо просто создать форму на основе запроса. Там уже можно править данные и они будут сами сохраняться там где нужно

Это почти то же самое. Но имхо менять фильтр правильнее - не нужен Requery.

Requery совсе даже не мешает.
Если не применять фильтр - внизу формы не будет никакой лишней информации. Только кол-во записей и все.

Автор: Akina 26.7.2007, 21:15
Цитата(Dimbuch @  26.7.2007,  16:33 Найти цитируемый пост)
Requery совсе даже не мешает.

Если у тебя 2 млн. записей, и отфильтровывается 50 - еще как мешает!  smile 

Автор: bopoha 27.7.2007, 20:51
Еще у формы есть два специальных свойства:
Filter - условие отбора,
FilterOn - true/false, т.е. включить или выключить фильтр.

Эти свойства использовать гораздо проще - нет необходимости думать об источнике данных на форме. Шаг в сторону своей библиотеке ;-).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)