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

Вниз

ADO, Ehlib. Коллеги, подскажите, пожалуйста!   Найти похожие ветки 

 
azamatufa ©   (2007-07-03 13:52) [0]

Уважаемые коллеги!

Имею DBEhlibGrid с мультиселектом.
Выделяю неск. записей и собираю их ID"ы (чтоб потом скопом удалить)


 s := "";
 for i:=0 to MainGrid.SelectedRows.Count-1 do begin
   MainQuery.Bookmark := MainGrid.SelectedRows[i];
   if i>0 then s := s + ",";
   s := s + MainQuery.FieldByName("ID").AsString;
 end;


в результате имеем s = "2,3,4,5,7,8,9"   типа того (набор ID"ов)
а далее
DELETE FROM Table1 WHERE ID IN (s);

Вопрос:
иногда после удаления, жму на грид и выскакиваеи ошибка - типа неверная закладка! Отловить не могу!

Как после вышеуказанного цикла очистить букмарк???
MainQuery.Bookmark := "";         //    так можно?

Спасибо!


 
Johnmen ©   (2007-07-03 14:23) [1]

MainGrid.SelectedRows.Clear


 
azamatufa ©   (2007-07-03 14:26) [2]


> Johnmen ©   (03.07.07 14:23) [1]
> MainGrid.SelectedRows.Clear


вот спасибо!


 
azamatufa ©   (2007-07-12 08:51) [3]


> Johnmen


че-то не пропал этот глючок ((
появляется в EhLibVcl с надписью "Недопустимая закладка" (когда я делаю выделение и удаление выделенных записей свой процедуркой см. выше)..
ну никак не могу отловить.. ((


 
Johnmen ©   (2007-07-12 09:42) [4]

1. собираем ID
2. чистим список закладок
3. делаем что угодно, и DELETE и прочее...


 
MsGuns ©   (2007-07-12 10:06) [5]

Закладки перестают быть актуальными после любой перечитки датасета, в т.ч. из локального буфера


 
azamatufa ©   (2007-07-12 10:40) [6]

Да, у меня после удаления записей идет перечитка датасета..
а как быть? ((

---
в этой функции глючит: (ehlibvcl)


function DataSetCompareBookmarks(DataSet: TDataSet; Bookmark1, Bookmark2: TBookmarkStr): Integer;
begin
 Result := DataSet.CompareBookmarks(TBookmark(Bookmark1), TBookmark(Bookmark2));
end;


 
MsGuns ©   (2007-07-12 12:39) [7]

Вместо букмарок для сохранения и локализации использовать UID записей


 
azamatufa ©   (2007-07-12 13:28) [8]


> Вместо букмарок для сохранения и локализации использовать
> UID записей


ну хорошо, а как тогда мне в MainGrid"e узнать какие выбраны записи?

подскажите альтернативу нижеследующему:

s := "";
for i:=0 to MainGrid.SelectedRows.Count-1 do begin
  MainQuery.Bookmark := MainGrid.SelectedRows[i];
  if i>0 then s := s + ",";
  s := s + MainQuery.FieldByName("ID").AsString;
end;


видно, что в этом фрагменте используется букмарк..

(а вообще для сохранения указателя я делаю как вы говорите:
if not DataSet.IsEmpty then
 ID := DataSet.FieldByName("ID").AsInteger
else
 ID := 0;

...
после чего:
 DataSet.Locate("ID",ID,[]);


 
azamatufa ©   (2007-07-12 14:03) [9]

т.е. как после того как я говорил

MainQuery.Bookmark := MainGrid.SelectedRows[i];


сказать Датасету и Гриду, что нет никаких букмарков!!! ((  нет букмарков - нет "недопустимых закладок"  ((


 
azamatufa ©   (2007-07-12 15:22) [10]

ну вот опять: в IDE дельфей ошибка есть, запускаю вне - ошибки нет (



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

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

Наверх




Память: 0.49 MB
Время: 0.024 c
15-1184583715
StriderMan
2007-07-16 15:01
2007.08.12
Commit


9-1157377908
Артём
2006-09-04 17:51
2007.08.12
OpenGL & 3DMax


2-1184611472
bagos
2007-07-16 22:44
2007.08.12
chart


15-1184678519
Nous Mellon_
2007-07-17 17:21
2007.08.12
Как настроить .htaccess?


3-1177658448
DelphiLexx
2007-04-27 11:20
2007.08.12
FireBird 2.0 многопользовательская работа