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

Вниз

КАК УЗНАТЬ, КАКАЯ ИЗ ЗАПИСЕЙ РЕДАКТИРУЕТСЯ В DBGrid?   Найти похожие ветки 

 
-=DeMoH=- ©   (2003-05-04 12:41) [0]

Проблема состоит в следующем: мне нужно узнавать номер записи, которую в данный момент редактирует пользователь в DBGrid"е, чтобы корректно вызывать метод ADOTable1AfterPost (он выполняет определенные действия после изменения какого-либо поля в БД).


 
MsGuns ©   (2003-05-04 12:45) [1]

В DBGrid`е всегда редактируется текущая запись КУРСОРА НД, номер которой относительно КУРСОРА можно узнать в RecNo (правда, не уверен, есть ли такое Property у компонент ADO).


 
-=DeMoH=- ©   (2003-05-04 12:52) [2]

А где это? (Нужно просто каким-либо способом занести в каку-нибудь переменную номер записи)


 
jack128 ©   (2003-05-04 12:57) [3]

нет такого понятия, как номер записи. По крайней мере в реляционных БД. Можешь записывать primary key, если он есть конечно


 
MsGuns ©   (2003-05-04 13:02) [4]

interfase
...

var
Fio: String;
BhDay: TDate;
rcn: integer;

implementation
...

procedure Form1.Button1Click(Sender: TObject);
// Забрать в переменные значения ТЕКУЩЕЙ записи НД (грида)
begin
with ADOTable1 do
begin
Fio := FileByName("FIO").AsString;
BhDay := FileByName("BIRTHDAY").AsDateTime;
rcn := RecNo;
end;
end;


 
-=DeMoH=- ©   (2003-05-04 13:03) [5]

У компонента DataSource есть такие понятия как DataSource1.DataSet.MoveBy(...);
DataSource1.DataSet.First;
DataSource1.DataSet.Next;
DataSource1.DataSet...
и так далее.
Сначала я думал, что после изменения поля в DBGrid изменяется и значение DataSet, но как показала практика, при вызове следующего кода

DataSource1.DataSet.Edit;
...
DataSource1.DataSet.Post;

постоянно редактируется ПЕРВАЯ запись, а мне нужно редактировать именно ту запись, изменения в которой сделал пользователь с помощью DBGrid !!!


 
JibSkeart ©   (2003-05-04 13:15) [6]

MsGuns © (04.05.03 12:45)
Есть


 
MsGuns ©   (2003-05-04 13:20) [7]

>=DeMoH=- © (04.05.03 13:03)
>У компонента DataSource есть такие понятия как DataSource1.DataSet.MoveBy
Методы MoveBy и прочие перечисленные есть не у DataSource, а у "папы" многих датасетов (в т.ч. и TADOTable) - TDataSet

Если узер редактирует запись в гриде, не надо давать никаких Edit,- Grid+DataSource сами переводят НД в режим редактирования.
Точно также измененная запись и постируется автоматически, стоит узеру перейти с измененной записи в другую. Методы Edit/Insert/Append/Post/Cancel используются для программных модификаций датасетов (например, если узер вводит данные не в грид, а в контролы типа TEdit, а потом нажимает кнопку, по которой прога заносит изменения в НД, но не в грид). Некоторые из них могут использоваться также в обработчиках событий НД (After/BeforeXXXX)



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
14-70439
xman
2003-05-02 12:59
2003.05.22
Кто знает?


1-70364
Денчез
2003-05-09 20:42
2003.05.22
Как сделать так чтобы окошко появлялось плавно(прелоадер в 3DMark


3-70160
Toshanius
2003-05-02 10:39
2003.05.22
Index is out of date!


14-70448
Den
2003-05-03 00:06
2003.05.22
Скучно :*(((((((


1-70296
qwerty2
2003-05-13 00:07
2003.05.22
Как узнать на каком столбце DBGrid находится указатель мыши