![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проход по 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;