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

Вниз

Проход по BookmarkList   Найти похожие ветки 

 
Жук ©   (2004-01-20 14:39) [0]

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

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


 
}|{yk ©   (2004-01-20 17:52) [1]

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


 
TohaNik ©   (2004-01-20 19:45) [2]

А так

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


 
Жук ©   (2004-01-21 08:15) [3]


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

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


 
TohaNik ©   (2004-01-21 10:26) [4]

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

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


 
stud ©   (2004-01-21 10:40) [5]

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


 
Жук ©   (2004-01-21 11:48) [6]


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

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


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

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


 
Desdechado ©   (2004-01-21 11:57) [7]

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


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

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


 
Жук ©   (2004-01-21 13:58) [9]


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

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


 
stud ©   (2004-01-21 14:29) [10]

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


 
Жук ©   (2004-01-21 15:28) [11]

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


 
Desdechado ©   (2004-01-21 15:49) [12]

BookmarkValid проверяй


 
Жук ©   (2004-01-21 16:17) [13]


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

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


 
Johnmen ©   (2004-01-21 23:13) [14]

>Жук ©

Приведенный 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-22 08:42) [15]


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

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



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

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

Наверх




Память: 0.5 MB
Время: 0.04 c
3-38686
Mouse
2004-01-22 11:00
2004.02.13
Документация по MySQL


3-38670
Rafe
2004-01-24 21:05
2004.02.13
Вылетает ошибка при выходе из программы!!! Причина - Data Module.


11-38763
BelchonokH
2003-06-01 18:48
2004.02.13
Глюк в TabControl


1-38770
_BasiL_
2004-02-03 14:24
2004.02.13
Console & ReadKey


3-38673
Vitalik
2004-01-24 16:38
2004.02.13
даты в БД