Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DBGrid [D7, MySQL]


Страницы:   1 2 3

Svin ©   (2003-11-20 08:54:00) 

Как выбрать все записи в DBGrid
DBGrid связана с DataSource


_sulent   (2003-11-21 15:16:00) [1]

Ну я завтра вывешу свой код, покажу как я делал, может я не то говорюю что нужно, и меня понять поэтому никто не может, но факт тот, что я действительно делал!


Sandman25   (2003-11-21 12:36:00) [2]

Да, еще. Если нужно выделить строки, с которыми не нужно производить операции, то нужно их отправить в нижний грид, а затем перед выполнением операции пробежаться по этому гриду и занести их все во временную таблицу и при выполнении операции проверять 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 записей и нет никаких различий между ними, кроме решения человека. Но я такоге не встречал и этому человеку не завидую :)


Sandman25   (2003-11-21 12:30:00) [3]

Хочу посоветовать отображать 2 грида. В одном гриде (нижнем, например) отображаются все выбранные в текущий момент строки. Верхний грид используется для фильтра и переноса строки в нижний грид. Операции можно производить как со строками нижнего грида, так и верхнего.
То есть работа выглядит примерно так:
для верхнего грида указываем в Edit (с Label организация) что-то типа "юнеско" и нажимаем кнопку. По нажатию этой кнопки происходит создание запроса типа "select * from table where organ_name like :organ_nameэ; ParamByName("organ_name").AsString := trim(Edit.Text) + "%";Open; В верхнем гриде отображаются найденные записи. Пользователь находит нужную запись и либо производит с ней нужную операцию, либо отмечает ее, помещая тем самым в нижний грид (AppendRecord).
Нижний грид связан с ClientDataSet, для которого настроены поля и вызван CreateEmptyDataSet.
Для того, чтобы снять выделение, не надо искать запись повторно, а нужно всего лишь удалить текущую строку из нижнего грида.


Юрий   (2003-11-21 11:54:00) [4]

Svin, по моему решение должно быть таким (я и сам его использую.
правда на множестве 10-20 тысяч записей)
В Gride выводишь весь необходимый список, а под гредом делаешь строку
для задания условия поиска (только не нужно вызывать ее по комбинации
клавишь типф Ctrl-F, это поле должно быть постоянно доступным)
Далее если это Тел база, то однозначно нао искать по номеру,
вот в это поле номер и забиваешь, и вызываешь Locate (или что-то еще)
В Gride, если эта запись будет найдена, курсор сразу установится
на нее, дальше уже можешь делать с ней что угодно -:
сразу редактировать, запомнить ее номер или что-то еще
Так же ишется вторая, третья ... n-я необходимая запись,
В конце у тебя будет множество с требуемыми записями,

Я правильно понял задачу или нет?


Zacho   (2003-11-21 09:23:00) [5]


> _sulent © (21.11.03 08:10) [53]

Чего делал ? TDBGrid(Sender).SelectAll; ?
Да нету, нету у TDBGrid метода SelectAll !


_sulent   (2003-11-21 08:10:00) [6]

Ну как нету, я делал, и у меня все работает! А зачем прокручивать, если просто выделить такое количество записей, то зачем мучиться, и глаза портить. Поставить Table.DisableControls, а по завершении включить, и все будет чпок!


Zacho   (2003-11-20 15:43:00) [7]


> _sulent © (20.11.03 15:00) [48]

Нету такого. И не было никогда. Так что или вручную тыкаться по всем записям, или проходить по всему датасету в цикле. Использрвать что-нибудь типа TDBGridEh.
А "просто воспользоваться TbookMark, он все отметит записи" - не получиться. Все равно цикл по набору данных, иначе - никак.
Тем более, что TBookmark: string;


Danilka   (2003-11-20 15:41:00) [8]

[50] Anatoly Podgoretsky © (20.11.03 15:39)
ему этого мало. ему надо еще адреса и названия фирм - т.к. по ним оператор должен найти 2 из 600"000 вручную! :))


Anatoly Podgoretsky   (2003-11-20 15:39:00) [9]

Хотя если хочешь, то select phone from table


Anatoly Podgoretsky   (2003-11-20 15:38:00) [10]

Ты когда ни будь пробовал просто прокрутить в гриде 600000 записей, допустим колесиком, у вас что мышки лишнии есть?


_sulent   (2003-11-20 15:00:00) [11]

тьфу, перепутал TDBGrid(Sender).SelectAll;


_sulent   (2003-11-20 14:58:00) [12]

хм... это просто делается, дай бог памяти, у меня сейчас нету делфи на компе, но попробую воспроизвести все это безобразие :)))
... Хотя можно попробовать вот так, ставишь в DBGRid"е флажок Muliselect и можно работать с выбором данных, т.е. зажимаешь Ctrl и тыкаешь по записям, он их выбирает. Если нужно выбрать все записи, то тогда нажимаешь Ctrl+A. Выбирает все записи в сетке. Или можно воспользоваться TTable(Sender).SelectAll - тоже вариант, а потом обращаться к выбранным записям при помощи TBookMark, как это сделать, если нужно, я могу сказать завтра, потому как уже не помню как делал


Zacho   (2003-11-20 11:54:00) [13]


> _sulent © (20.11.03 11:48) [44]

И как же это сделать ? :-)


Кулюкин Олег   (2003-11-20 11:52:00) [14]


> Danilka © (20.11.03 11:47) [43]
> самое страшное не это, а то, что ему придется просматривать
> 600"000 адресов, чтобы найти из них пару.

Да, тяжно ему. :(


_sulent   (2003-11-20 11:48:00) [15]

Да не нужно париться, просто воспользоваться TbookMark, он все отметит записи, и связать его с таблицей. И никаких проблем не будет. Очень даже удобная штукенция


Danilka   (2003-11-20 11:47:00) [16]

[41] Кулюкин Олег © (20.11.03 11:45)
самое страшное не это, а то, что ему придется просматривать 600"000 адресов, чтобы найти из них пару.


Danilka   (2003-11-20 11:46:00) [17]

хе-хе, вот и подошли, таки к критериям :))


Кулюкин Олег   (2003-11-20 11:45:00) [18]


> а адреса, организации кому он принадлежит тут отсутствуют?

Оператор будет их видеть, но как он определит, что такой адрус уже есть?
Он их помнит?


Zacho   (2003-11-20 11:44:00) [19]


> Svin (20.11.03 11:38) [39]

Значит критерии для выбора все-таки есть ! Вот и делайте фильтр по ним. Например, по конкретной улице, и/или по организациям, название которых начинается с такого-то слога и т.д.


Svin   (2003-11-20 11:38:00) [20]

>600000 это максимум или обычное рабочее число?
максимум...

>А как тогда он глянув на номер узнает надо его обновлять или нет???
Гы.. :-) по твоему а я только с телефонами работаю, а адреса, организации кому он принадлежит тут отсутствуют?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо