Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.02 c
14-36814
ИдиотЪ
2003-11-19 13:43
2003.12.12
А кто модерирует модераторов ?


1-36687
_юзер_
2003-12-02 17:58
2003.12.12
MDI


14-36828
KDS
2003-11-19 16:58
2003.12.12
Распаковка файлов. Забыл чем.


3-36563
Dunmer1
2003-11-20 12:32
2003.12.12
Возможно ли создать базу без использования Database Desktop?


3-36546
Shirson
2003-11-19 11:14
2003.12.12
Странное поведение Query