Главная страница
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.032 c
2-1184443004
opoloXAI
2007-07-14 23:56
2007.08.12
Рабочая папка приложения.


15-1184219458
Бакук
2007-07-12 09:50
2007.08.12
Эволюция программиста


15-1182677885
tesseract
2007-06-24 13:38
2007.08.12
ММП - пора наконец!


15-1184503367
Kerl
2007-07-15 16:42
2007.08.12
Книги D7


2-1184832133
Combo
2007-07-19 12:02
2007.08.12
Как изменить пароль на Access?