Текущий архив: 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.46 MB
Время: 0.067 c