![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программирование TDBGrid [D5, IB6.x, MSSQL, dBase, FoxPro]
Kraw © (2004-05-27 11:33:00)Уважаемые господа, как по кнопке Навигатора "Вставить" добиться, того чтобы в TDBGrid запись добавлялась в конец TBGrid'а (как по
кнопке Down на последней записи). Спасибо.
Sergey13 (2004-05-28 17:53:00) [1]2Kraw (28.05.04 17:31) [21]
>ты сам то пробовал обработчики нафигатора или это просто выпендреж ?
А как же. И работает как не удивительно. Что я виноват что ли, если работат у меня. 8-(
Kraw (2004-05-28 17:51:00) [2]Спасибо. Все нормально. Вот теперь я тебе верю.
Kraw (2004-05-28 17:51:00) [3]Спасибо. Все нормально. Вот теперь я тебе верю.
Vlad (2004-05-28 17:38:00) [4]Забыл добавить проверку:
if Button=nbInsert then
Vlad (2004-05-28 17:37:00) [5]
> Kraw (28.05.04 17:31) [21]
Да ? Странно, а у меня прходит, хотя этот код и некорректный.
Попробуй вот что:
Событие DBNavigator.BeforeAction:
TDBNavigator(Sender).DataSource.DataSet.Append;
Abort;
Это должно сработать.
А чтобы в будущем не возникало таких вопросов, берешь открываешь VCL код DBNavigator и смотришь как он работает.
Kraw (2004-05-28 17:31:00) [6]Sergey13, ты сам то пробовал обработчики нафигатора или это просто выпендреж ? Такой код не проходит:
procedure TFPrih.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
if Button=nbInsert then
DBGrid1.DataSource.DataSet.Append
end;
Sergey13 (2004-05-28 17:21:00) [7]2Kraw (28.05.04 17:14) [19]
А у нафигатора обработчиков нет что ли? Или кнопку нельзя определить?
Вообще - какая разница в начало или в конец? Тем паче в списке баз то указал IB, MSSQL. Нет там ни начал ни концов.
Kraw (2004-05-28 17:14:00) [8]По кнопке понятно, а по Навигатору(+) вставляются сразу две записи 1-я перед курсором, 2-я в конец. Как отработать с Навигатором ?
Vlad (2004-05-28 16:54:00) [9]
> Kraw (28.05.04 16:47) [16]
Тебе сказали Append вместо Insert делай.
И забудь ты про DBGrid, он тут НЕ ПРИЧЕМ!
Записи хранятся не в нем, а в DataSet
Попробуй сделать следующее:
На туже форму, где твой DBGrid помещаем кнопку. На событие OnClick этой кнопки пишем след. строчку:
DBGrid1.DataSource.DataSet.Append;
Соловьев (2004-05-28 16:52:00) [10]
> [16] Kraw (28.05.04 16:47)
Грид не надо трогать.
тогда действительно Append, а при выборке сортировать все равно по полю где храниться время ввода.
Kraw (2004-05-28 16:47:00) [11]По сортировке не проходит (и не будет проходить), т.к. введенной записи физически еще нет в наборе данных, а появиться она только
после ApplyUpdates и CommitUpdates. Но из-за одной записи переоткрывать запрос ненадобно. В этом случае я думаю нужно программировать сам DBGrid. Но как ?
Соловьев (2004-05-28 12:37:00) [12]
> Сортировка же в запросе есть
надо еще одну сортировку. см. [1]
Kraw (2004-05-28 12:35:00) [13]Ребята вы меня немного не поняли, речь идет чисто о визуальном просмотре добавляемой записи в DBGrid, без индексов DataSet. Сортировка же в запросе есть, но идет она по полю, в которое пользователь еще не ввел информацию. Клавиша же Down - это стрелка вниз. С уважением Kraw.
Vlad (2004-05-27 12:34:00) [14]
> TATIANA (27.05.04 12:20) [12]
> то запись должна добавляться физически в конец
Это заблуждение. Во всяком случае, относительно клиент-серверных СУБД.
TATIANA (2004-05-27 12:20:00) [15]Если есть метод Append в наборе данных (DataSet), то запись должна добавляться физически в конец , тогда открывать набор данных надо без индексирования , а Grid визуально отображает набор данных .
Соловьев (2004-05-27 12:14:00) [16]
> зависит от индекса или сортировки в SQL предложении. Разве
> это трудно сделать ?
нет конечно. на это и наталкиваю автора поста.
Vlad (2004-05-27 12:10:00) [17]
> Соловьев © (27.05.04 11:57) [9]
зависит от индекса или сортировки в SQL предложении. Разве это трудно сделать ?
Но вопрос-то был не об этом, если ты внимательно почитаешь. Человек хочет чтобы при нажатии кнопки "Добавить", пустая запись добавлялась в конец набора данных.
Соловьев (2004-05-27 11:57:00) [18]
> При Append запись добавляется именно в конец DataSet
Ну я сно что телепатии не надо. Допустим он прогу закрыл - где будет добавленая запись при повторном запуске?
Vlad (2004-05-27 11:51:00) [19]
> Соловьев © (27.05.04 11:49) [7]
А так что люди поголовно путают DBGrid с DataSet. По-моему тут и телепатии не надо, итак ясно.
При Append запись добавляется именно в конец DataSet
Соловьев (2004-05-27 11:49:00) [20]2 Vlad
> запись добавлялась в конец TBGrid'а
Как по твоему это понимать?