|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.07.2008, 18:57 | #1 |
Пользователь
Регистрация: 22.08.2007
Сообщений: 59
|
Множественное перемещение в двух таблицах
Помогите пожалуйста разобраться вот с какой проблемой: Имеется две таблицы, связанные по ID. В первой таблице есть список футбольных команд и их номера, по которым связываются футболисты из другой таблицы. Соответственно футболисты могу перемещаться из одной команды в другую. Подскажите как сделать одновременное перемещение сразу нескольких футболистов из одной команды в другую, у меня не получается что-то. Использую ADOQuery и DBGrid.
Заранее спасибо |
15.07.2008, 22:11 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
пусть в таблице Football_men есть поле FootBall_command_Id - ссылка на команду, в которую футболист входит и, например, возраст футболиста в MEN_AGE, тогда перенести всех футболистов моложе 25 лет из всех команд в новую команду (у которой ID = NewCommand_ID ):
Код:
|
16.07.2008, 00:08 | #3 |
Пользователь
Регистрация: 22.08.2007
Сообщений: 59
|
спасибо, но это не совсем то о чем я спрашивал. Как сделать если у меня в одной команде много футболистов, у них общий FootBall_command_Id, но у всех разные имена и нет больше никаких общих признаков, типа возраста? Да и как организовать множественную выборку в DBGrid тоже не очень понятно
|
16.07.2008, 10:16 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
смотрите. в таблице футболисты у Вас есть записи. Пусть в команде 1 (id = 1) у Вас 35 человек. Все с разными именами. Так? Вопрос - кого (сколько человек) нужно перенести в команду 2 ??? Вот если бы Вам сказали переведи несколько человек из команды 1 в команду 2 - Вы бы спросили - сколько человек надо перевезти, по какому признаку их отобрать (по алфавиту, например, или просто хаотично - случайным образом...) и ещё. предвидя следущий Ваш вопрос - сразу укажите какую СУБД (включая версию) Вы используете - потому что начнуться нюансы - в каждой СУБД есть свои тонкости в SQL/DML диалектах... |
|
16.07.2008, 10:17 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Кстати, если всех из команды 1 надо перебросить в команду 2 то это проще паренной репы:
Код:
|
16.07.2008, 12:09 | #6 |
Пользователь
Регистрация: 09.07.2008
Сообщений: 66
|
Помоему вот то, что вам нужно -
http://www.delphisources.ru/pages/so...cy-dbgrid.html Полюбому вам нужно както указывать имена тех, кого нужно переместить, иначе никак. А уже выделеннных перемещать куда укажите. Тоесть одновременно открыть две таблицы или более название таблиц соответствует названию команд, а в полях таблицы списки игроков с чекбоксами против каждого. Еще можно поставить радиокнопку против названия команды с возможностью одиночного выбора а внизу кнопку переместить. Расставляем галочки против имен игроков, указываем команду, куда переместить, давим кнопку - переместить, кто может быстро написать обработчики, пожалуйста, мне самому интересно. Или если это все отображать в одной таблице, то в первой строке указывать название команды, а в остальных имена игроков, первой строке установить запреты на перемещение и на редактирование и в ней же чекбокс выбора команды, разумеется с одиночным выбором среди всех команд(столбцов таблицы). Кстати при такой организации игроков можно чекбоксить в разных столбцах(с разных команд) и перенаправлять в одну из выбранных. И еще потребуется кнопка многоуровневой отмены с привязкой по дате перемещения, заодно будете знать, когда кто и куда перемещался, ведь если что-то быстро и легко делается, возрастает вероятность ошибки пользователя. Последний раз редактировалось ЛомиК; 16.07.2008 в 12:30. Причина: Добавление |
16.07.2008, 12:58 | #7 |
Пользователь
Регистрация: 09.07.2008
Сообщений: 66
|
Интересен был бы еще один вариант, только как такое реализовать я вообще незнаю.
Назначить клавишу, при удержании которой онеклик мыши будет выделять нужные ячейки и перемещать их содержимое в промежуточную таблицу, а после процедуры такого выделения нажав другую гарячую кнопку, указать мышой на нужный столбец, куда переписать содержимое этой промежуточной таблицы или нечто в этом роде с использованием буфера обмена, помоему это был-бы самый быстрый вариант таких операций. |
16.07.2008, 16:59 | #8 |
Пользователь
Регистрация: 22.08.2007
Сообщений: 59
|
ЛомиК, спасибо за советы и за ссылку, очень интересный там компонент, обязательно им как-нибудь воспользуюсь.
Serge_Bliznykov, вы правы, я не совсем понимал как сделать то, что задумал отсюда и некорректно сформулированный вопрос. В общем сделал так: У DBGridа поставил dgMultiSelect = true, что позволило выделять несколько записей для перемещения. Проблема была как раз в том, чтобы получить список значений всех выбранных записей. Код: for i:=0 to Men_Table.SelectedRows.Count-1 do begin Men_Table.DataSourse.DataSet.GoToBo okmark(pointer(Men_Table.SelectedRo ws[i])); str := 'Update Men_Table SET Command_ID = newCommandID WHERE Men_ID = '''+Men_Table.Columns.Items[2].Field.AsString+''''; ADOConnection1.Execute(str); end; Еще раз всем спасибо за помощь |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Цветовая гамма в таблицах | ГЫнок | Помощь студентам | 6 | 28.10.2008 10:55 |
Поиск изменений в Таблицах | Pabelu | Microsoft Office Excel | 3 | 26.04.2008 17:57 |
Регистр в таблицах БД | Alexij | БД в Delphi | 3 | 17.04.2008 13:38 |
Удаление в связаных таблицах ADO | Alexsandr | БД в Delphi | 7 | 18.02.2008 23:15 |