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

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

Проход по BookmarkList [D4, IB6.x]


Жук ©   (2004-01-20 14:39:00) 

Нужно сделать мультиселективную выборку из НД посредством DBGrid, но у меня при прохождении по гриду :
for i:=0 to DBGrid1.SelectedRows.Count-1 do
FIBDataSet1.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));

все букмраки ссылаются на последнюю запись НД.
Что неправильно ?


Жук   (2004-01-22 08:42:00) [1]


> Johnmen © (21.01.04 23:13) [14]

Спасибо ! Заработала !!!


Johnmen   (2004-01-21 23:13:00) [2]

>Жук ©

Приведенный TohaNik © (21.01.04 10:26) приём, описанный, кстати в хелпе, железно работает для FIBPlus >= v4.7.7 !!!

Если тебе очень надо, но всё-таки не получается (???), то просто:

mark:=GetBookmark;
DisableControls;
First;
while not EOF do begin;
if DBGrid1.SelectedRows.CurrentRowSelected then
<делаем своё дело>
Next;
end;
try GotoBookmark(mark); finally FreeBookmark(mark); end;
EnableControls;


Жук   (2004-01-21 16:17:00) [3]


> Desdechado © (21.01.04 15:49) [12]
> BookmarkValid проверяй

Все марки не соответствуют требованиям :-(
BookmarkValid=false


Desdechado   (2004-01-21 15:49:00) [4]

BookmarkValid проверяй


Жук   (2004-01-21 15:28:00) [5]

В Д6 и с нормальным ИБХ всё работает. Значит фибсы глючат. Придётся извращенческим путём идти :-(


stud   (2004-01-21 14:29:00) [6]

а так ?
DBGrid1.DataSourse.DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));


Жук   (2004-01-21 13:58:00) [7]


> stud © (21.01.04 12:02) [8]
> проще самому проверить трассируеш программу и смотриш на
> значение DBGrid1.SelectedRows.Count

А что даст этот параметр ? Проблема-то в том, что сколько выдено записей, столько раз всё и выполняется, что нужно, но только при GotoBookMark(очередная букмрака), курсор уходит на последнюю запись.
Это нормальное поведение курсора, если записи с указанной букмракой нет в НД ?


stud   (2004-01-21 12:02:00) [8]

проще самому проверить трассируеш программу и смотриш на значение DBGrid1.SelectedRows.Count


Desdechado   (2004-01-21 11:57:00) [9]

проверьте события BeforeScroll и AfterScroll у датасета


Жук   (2004-01-21 11:48:00) [10]


> TohaNik © (21.01.04 10:26) [4]
> При правильных настройках работает 100%

Я подозреваю, что тут какой-то глюк с фибсами, но пока не нашёл. Может, кто сталкивался ?


> stud © (21.01.04 10:40) [5]

Может подробности припомните ?


stud   (2004-01-21 10:40:00) [11]

все правильно, но помнится у меня тоже была проблема, что только одна строка из грида обрабатывалась. оказалось была какая-то строка кода, в результате выполнения которой все выделение после обработки первой же выделенной строки сбрасывалось. нужно трассировать и смотреть что происходит.


TohaNik   (2004-01-21 10:26:00) [12]

for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin
DBGrid1.DataSource.DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));
---------
end;

При правильных настройках работает 100%


Жук   (2004-01-21 08:15:00) [13]


> TohaNik © (20.01.04 19:45) [2]
> А так

Так, конечно не пойдёт. Если вы имеете в виду :
DBGrid1.DataSourse. DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i])),
то та же фигня :-(


TohaNik   (2004-01-20 19:45:00) [14]

А так

DBGrid1.DataSourse.FIBDataSet1.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));


}|{yk   (2004-01-20 17:52:00) [15]

Я юзаю QuantumGrid (рекомендую) там это решается легко
Например так
while ((i < dxDBGridExport.SelectedCount) and (contin = true)) do
begin
InsertRecordIntoExportFile(dxDBGridExport.SelectedNodes[i]);
i:=i+1;
end;


Наверх

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