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

Вниз

Программирование TDBGrid   Найти похожие ветки 

 
Kraw   (2004-05-27 11:33) [0]

Уважаемые господа, как по кнопке Навигатора "Вставить" добиться, того чтобы в TDBGrid запись добавлялась в конец TBGrid"а (как по
кнопке Down на последней записи). Спасибо.


 
Соловьев ©   (2004-05-27 11:35) [1]


> (как по
> кнопке Down на последней записи).

Такой кнопки нет :)

Создать поле где писать время добавления записи и сортировать по нем


 
Соловьев ©   (2004-05-27 11:35) [2]


> (как по
> кнопке Down на последней записи).

Такой кнопки нет :)

Создать поле где писать время добавления записи и сортировать по нем


 
Vlad ©   (2004-05-27 11:36) [3]


> Kraw   (27.05.04 11:33)  

У навигатора есть событие OnClick.
A у DataSet есть метод Append


 
Соловьев ©   (2004-05-27 11:38) [4]


> A у DataSet есть метод Append

запись не будет добавлена в конец физически, а визуально. В конце концов при долгой эксплуатации(вставка+удаление) записи перемешаются и визуально.


 
Vlad ©   (2004-05-27 11:43) [5]


> Соловьев ©   (27.05.04 11:38) [4]

а где сказано что нужно добавить ФИЗИЧЕСКИ в конец ?
И где он, этот физический конец таблицы?
Товарищ не об этом спрашивал по-моему.


 
Sergey13 ©   (2004-05-27 11:46) [6]

2Kraw   (27.05.04 11:33)
Самое смешное, что в грид добавлять записи нельзя. Ни в "начало" ни тем более в конец. Там и конца то нет. 8-)


 
Соловьев ©   (2004-05-27 11:49) [7]

2 Vlad

> запись добавлялась в конец TBGrid"а

Как по твоему это понимать?


 
Vlad ©   (2004-05-27 11:51) [8]


> Соловьев ©   (27.05.04 11:49) [7]

А так что люди поголовно путают DBGrid с DataSet. По-моему тут и телепатии не надо, итак ясно.
При Append запись добавляется именно в конец DataSet


 
Соловьев ©   (2004-05-27 11:57) [9]


> При Append запись добавляется именно в конец DataSet

Ну я сно что телепатии не надо. Допустим он прогу закрыл - где будет добавленая запись при повторном запуске?


 
Vlad ©   (2004-05-27 12:10) [10]


> Соловьев ©   (27.05.04 11:57) [9]

зависит от индекса или сортировки в SQL предложении. Разве это трудно сделать ?
Но вопрос-то был не об этом, если ты внимательно почитаешь. Человек хочет чтобы при нажатии кнопки "Добавить", пустая запись добавлялась в конец набора данных.


 
Соловьев ©   (2004-05-27 12:14) [11]


> зависит от индекса или сортировки в SQL предложении. Разве
> это трудно сделать ?

нет конечно. на это и наталкиваю автора поста.


 
TATIANA   (2004-05-27 12:20) [12]

Если есть метод Append в наборе данных (DataSet), то запись должна добавляться физически в конец  , тогда открывать набор данных надо без индексирования , а Grid визуально отображает набор данных .


 
Vlad ©   (2004-05-27 12:34) [13]


> TATIANA   (27.05.04 12:20) [12]


> то запись должна добавляться физически в конец  

Это заблуждение. Во всяком случае, относительно клиент-серверных СУБД.


 
Kraw   (2004-05-28 12:35) [14]

Ребята вы меня немного не поняли, речь идет чисто о визуальном просмотре добавляемой записи в DBGrid, без индексов DataSet. Сортировка же в запросе есть, но идет она по полю, в которое пользователь еще не ввел информацию. Клавиша же Down - это стрелка вниз. С уважением Kraw.


 
Соловьев ©   (2004-05-28 12:37) [15]


> Сортировка же в запросе есть

надо еще одну сортировку. см. [1]


 
Kraw   (2004-05-28 16:47) [16]

По сортировке не проходит (и не будет проходить), т.к. введенной записи физически еще нет в наборе данных, а появиться она только
после ApplyUpdates и CommitUpdates. Но из-за одной записи переоткрывать запрос ненадобно. В этом случае я думаю нужно программировать сам DBGrid. Но как ?


 
Соловьев ©   (2004-05-28 16:52) [17]


> [16] Kraw   (28.05.04 16:47)

Грид не надо трогать.

тогда действительно Append, а при выборке сортировать все равно по полю где храниться время ввода.


 
Vlad ©   (2004-05-28 16:54) [18]


> Kraw   (28.05.04 16:47) [16]

Тебе сказали Append вместо Insert делай.
И забудь ты про DBGrid, он тут НЕ ПРИЧЕМ!
Записи хранятся не в нем, а в DataSet

Попробуй сделать следующее:
На туже форму, где твой DBGrid помещаем кнопку. На событие OnClick этой кнопки пишем след. строчку:
DBGrid1.DataSource.DataSet.Append;


 
Kraw   (2004-05-28 17:14) [19]

По кнопке понятно, а по Навигатору(+) вставляются сразу две записи 1-я перед курсором, 2-я в конец. Как отработать с Навигатором ?


 
Sergey13 ©   (2004-05-28 17:21) [20]

2Kraw   (28.05.04 17:14) [19]
А у нафигатора обработчиков нет что ли? Или кнопку нельзя определить?
Вообще - какая разница в начало или в конец? Тем паче в списке баз то указал IB, MSSQL. Нет там ни начал ни концов.


 
Kraw   (2004-05-28 17:31) [21]

Sergey13, ты сам то пробовал обработчики нафигатора или это просто выпендреж ? Такой код не проходит:
procedure TFPrih.DBNavigator1Click(Sender: TObject;
 Button: TNavigateBtn);
begin
 if Button=nbInsert then
   DBGrid1.DataSource.DataSet.Append
end;


 
Vlad ©   (2004-05-28 17:37) [22]


> Kraw   (28.05.04 17:31) [21]

Да ? Странно, а у меня прходит, хотя этот код и некорректный.

Попробуй вот что:
Событие DBNavigator.BeforeAction:

TDBNavigator(Sender).DataSource.DataSet.Append;
Abort;

Это должно сработать.

А чтобы в будущем не возникало таких вопросов, берешь открываешь VCL код DBNavigator и смотришь как он работает.


 
Vlad ©   (2004-05-28 17:38) [23]

Забыл добавить проверку:
if Button=nbInsert then


 
Kraw   (2004-05-28 17:51) [24]

Спасибо. Все нормально. Вот теперь я тебе верю.


 
Kraw   (2004-05-28 17:51) [25]

Спасибо. Все нормально. Вот теперь я тебе верю.


 
Sergey13 ©   (2004-05-28 17:53) [26]

2Kraw   (28.05.04 17:31) [21]
>ты сам то пробовал обработчики нафигатора или это просто выпендреж ?
А как же. И работает как не удивительно. Что я виноват что ли, если работат у меня. 8-(



Страницы: 1 вся ветка

Текущий архив: 2004.06.20;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.023 c
1-1086340572
Uran
2004-06-04 13:16
2004.06.20
Отображение документа msword


14-1086361466
Ig
2004-06-04 19:04
2004.06.20
Работа с TStrings


1-1086689183
saNat
2004-06-08 14:06
2004.06.20
PopupMenu and TreeView


14-1086252507
Igorek
2004-06-03 12:48
2004.06.20
Физический серийный номер винта


1-1086265053
Eugene83
2004-06-03 16:17
2004.06.20
Доступ к переменным модуля Проэкта