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

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

Уважаемые! IBDataSet - как он работает?


soni ©   (2002-10-09 15:27:00) 

Уважаемые Мастера, не сочтите за нелепость, но сложно разобраться с работой IBDataSet:
Есть
DeleteSQR: delete from MEASURE
where DATEMSR = :OLD_DATEMSR and
UIDEV = :OLD_UIDEV

SelectSQL: select * from MEASURE

InsertSQL: insert into MEASURE
(UIDEV, DATEMSR, VALUEMSR, RES, REGIM, TIMEMES)
values
(:UIDEV, :DATEMSR, :VALUEMSR, :RES, :REGIM, :TIMEMES)

ModifySQL: update MEASURE
set
VALUEMSR = :VALUEMSR,
RES = :RES,
REGIM = :REGIM,
TIMEMES = :TIMEMES
where
DATEMSR = :OLD_DATEMSR and
UIDEV = :OLD_UIDEV

И вот пытаюсь я изменить в цикле определенные записи и делаю по циклу IBDataSet.locate("DATEMSR;UIDEV",.....)
затем IBDataSet.Edit
и "в лоб" присваиваю новые значения (IBDataSetRES.value:=....)

Тогда зачем нужны все эти ModifySQL, DeleteSQL ?


soni   (2002-10-09 16:44:00) [1]

> Johnmen Большое спасибо за разъяснения!!!
> Max Zyuzin - Большое спасибо за совет, само в голову не пришло - спасибо есть знающие!


Max Zyuzin   (2002-10-09 16:15:00) [2]

>soni (09.10.02 15:27)
Дело в том, что когды вы делаете Edit, Insert на самом деле используюятся именно те SQL запросы что вы написали.

порядка 300000 записей и при попытке сделать Locate к IBDataSet
А зачем так жестоко? Вам нужно просматирвать все записи сразу (все 300000)
Можно например Select выбирать нужную вам запись... это будет быстрее


soni   (2002-10-09 16:07:00) [3]

>>User0
По-началу так и было, но есть большое желание сделать прогу сетевой - это первый опыт, и потому решила перейти на запросы, но и здесь есть проблема - в этой самой табличке ( MEASURE ) порядка 300000 записей и при попытке сделать Locate к IBDataSet все "виснет" чуть-ли не через раз. Со связкой IBQuery+IBUpdateSQL ругалась на нередактируемость.


Johnmen   (2002-10-09 16:03:00) [4]

ModifySQL выполняется после того, как были сделаны изменения в текущей записи НД и вызван (явно или нет) метод Post.
При этом параметрам ModifySQL присваиваются значения соответствующих полей из НД.
Как будет выглядеть ModifySQL - дело разработчика...


User0   (2002-10-09 15:59:00) [5]

Для этого достато4но IBTable...


soni   (2002-10-09 15:52:00) [6]

Извините, но не совсем понятно, т.е. я не могу используя эти самые ModifySQL исправлять данные например за определенную дату (по маске), а применимы они только если я, например, в DBGride "стою" на необходимой записи и пытаюсь ее редактировать?


Johnmen   (2002-10-09 15:42:00) [7]

Чтобы вносить изменения в реальную таблицу.

>и "в лоб" присваиваю новые значения (IBDataSetRES.value:=....)

значения полей набора данных, а не реальной табл.



Наверх

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