Форум: "Базы";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
ВнизDBGrid Найти похожие ветки
← →
Zacho (2003-11-20 11:44) [40]
> Svin (20.11.03 11:38) [39]
Значит критерии для выбора все-таки есть ! Вот и делайте фильтр по ним. Например, по конкретной улице, и/или по организациям, название которых начинается с такого-то слога и т.д.
← →
Кулюкин Олег (2003-11-20 11:45) [41]
> а адреса, организации кому он принадлежит тут отсутствуют?
Оператор будет их видеть, но как он определит, что такой адрус уже есть?
Он их помнит?
← →
Danilka (2003-11-20 11:46) [42]хе-хе, вот и подошли, таки к критериям :))
← →
Danilka (2003-11-20 11:47) [43][41] Кулюкин Олег © (20.11.03 11:45)
самое страшное не это, а то, что ему придется просматривать 600"000 адресов, чтобы найти из них пару.
← →
_sulent (2003-11-20 11:48) [44]Да не нужно париться, просто воспользоваться TbookMark, он все отметит записи, и связать его с таблицей. И никаких проблем не будет. Очень даже удобная штукенция
← →
Кулюкин Олег (2003-11-20 11:52) [45]
> Danilka © (20.11.03 11:47) [43]
> самое страшное не это, а то, что ему придется просматривать
> 600"000 адресов, чтобы найти из них пару.
Да, тяжно ему. :(
← →
Zacho (2003-11-20 11:54) [46]
> _sulent © (20.11.03 11:48) [44]
И как же это сделать ? :-)
← →
_sulent (2003-11-20 14:58) [47]хм... это просто делается, дай бог памяти, у меня сейчас нету делфи на компе, но попробую воспроизвести все это безобразие :)))
... Хотя можно попробовать вот так, ставишь в DBGRid"е флажок Muliselect и можно работать с выбором данных, т.е. зажимаешь Ctrl и тыкаешь по записям, он их выбирает. Если нужно выбрать все записи, то тогда нажимаешь Ctrl+A. Выбирает все записи в сетке. Или можно воспользоваться TTable(Sender).SelectAll - тоже вариант, а потом обращаться к выбранным записям при помощи TBookMark, как это сделать, если нужно, я могу сказать завтра, потому как уже не помню как делал
← →
_sulent (2003-11-20 15:00) [48]тьфу, перепутал TDBGrid(Sender).SelectAll;
← →
Anatoly Podgoretsky (2003-11-20 15:38) [49]Ты когда ни будь пробовал просто прокрутить в гриде 600000 записей, допустим колесиком, у вас что мышки лишнии есть?
← →
Anatoly Podgoretsky (2003-11-20 15:39) [50]Хотя если хочешь, то select phone from table
← →
Danilka (2003-11-20 15:41) [51][50] Anatoly Podgoretsky © (20.11.03 15:39)
ему этого мало. ему надо еще адреса и названия фирм - т.к. по ним оператор должен найти 2 из 600"000 вручную! :))
← →
Zacho (2003-11-20 15:43) [52]
> _sulent © (20.11.03 15:00) [48]
Нету такого. И не было никогда. Так что или вручную тыкаться по всем записям, или проходить по всему датасету в цикле. Использрвать что-нибудь типа TDBGridEh.
А "просто воспользоваться TbookMark, он все отметит записи" - не получиться. Все равно цикл по набору данных, иначе - никак.
Тем более, что TBookmark: string;
← →
_sulent (2003-11-21 08:10) [53]Ну как нету, я делал, и у меня все работает! А зачем прокручивать, если просто выделить такое количество записей, то зачем мучиться, и глаза портить. Поставить Table.DisableControls, а по завершении включить, и все будет чпок!
← →
Zacho (2003-11-21 09:23) [54]
> _sulent © (21.11.03 08:10) [53]
Чего делал ? TDBGrid(Sender).SelectAll; ?
Да нету, нету у TDBGrid метода SelectAll !
← →
Юрий (2003-11-21 11:54) [55]Svin, по моему решение должно быть таким (я и сам его использую.
правда на множестве 10-20 тысяч записей)
В Gride выводишь весь необходимый список, а под гредом делаешь строку
для задания условия поиска (только не нужно вызывать ее по комбинации
клавишь типф Ctrl-F, это поле должно быть постоянно доступным)
Далее если это Тел база, то однозначно нао искать по номеру,
вот в это поле номер и забиваешь, и вызываешь Locate (или что-то еще)
В Gride, если эта запись будет найдена, курсор сразу установится
на нее, дальше уже можешь делать с ней что угодно -:
сразу редактировать, запомнить ее номер или что-то еще
Так же ишется вторая, третья ... n-я необходимая запись,
В конце у тебя будет множество с требуемыми записями,
Я правильно понял задачу или нет?
← →
Sandman25 (2003-11-21 12:30) [56]Хочу посоветовать отображать 2 грида. В одном гриде (нижнем, например) отображаются все выбранные в текущий момент строки. Верхний грид используется для фильтра и переноса строки в нижний грид. Операции можно производить как со строками нижнего грида, так и верхнего.
То есть работа выглядит примерно так:
для верхнего грида указываем в Edit (с Label организация) что-то типа "юнеско" и нажимаем кнопку. По нажатию этой кнопки происходит создание запроса типа "select * from table where organ_name like :organ_nameэ; ParamByName("organ_name").AsString := trim(Edit.Text) + "%";Open; В верхнем гриде отображаются найденные записи. Пользователь находит нужную запись и либо производит с ней нужную операцию, либо отмечает ее, помещая тем самым в нижний грид (AppendRecord).
Нижний грид связан с ClientDataSet, для которого настроены поля и вызван CreateEmptyDataSet.
Для того, чтобы снять выделение, не надо искать запись повторно, а нужно всего лишь удалить текущую строку из нижнего грида.
← →
Sandman25 (2003-11-21 12:36) [57]Да, еще. Если нужно выделить строки, с которыми не нужно производить операции, то нужно их отправить в нижний грид, а затем перед выполнением операции пробежаться по этому гриду и занести их все во временную таблицу и при выполнении операции проверять and not exists (select * from temp_table where temp_table.id = ...)
И еще - перед выполнением операции можно задать условие фильтра по таблице, причем чтобы это делал пользователь.
insert into table2 select * from table1 where (условие фильтра) and not exists (select * from temp_table where temp_table.id = ...)
В таком случае никогда не понадобится отображать 600.000 записей. Разве что в случае, если нужно добавить 300.000 записей и не добавлять другие 300.00 записей и нет никаких различий между ними, кроме решения человека. Но я такоге не встречал и этому человеку не завидую :)
← →
_sulent (2003-11-21 15:16) [58]Ну я завтра вывешу свой код, покажу как я делал, может я не то говорюю что нужно, и меня понять поэтому никто не может, но факт тот, что я действительно делал!
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.008 c