Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизФильтрация Найти похожие ветки
← →
GetIt (2004-04-06 20:29) [0]Такой вопрос..
У стола сделали фильтрацию и из 30 записей, допустим, стало 10..
Так вот как узнать, что их стало 10, ведь DataSet.RecordCount возвращает количество
всех DataSet-овских "не фильтрованных" записей...
Я говорю конкретно про фильтрацию..
т.е. без использования Query, т.к. запрос слишком прост....
возможно ? как ?
← →
GetIt (2004-04-06 20:29) [0]Такой вопрос..
У стола сделали фильтрацию и из 30 записей, допустим, стало 10..
Так вот как узнать, что их стало 10, ведь DataSet.RecordCount возвращает количество
всех DataSet-овских "не фильтрованных" записей...
Я говорю конкретно про фильтрацию..
т.е. без использования Query, т.к. запрос слишком прост....
возможно ? как ?
← →
Vlad © (2004-04-06 20:54) [1]
> У стола сделали фильтрацию и из 30 записей, допустим, стало
> 10
А у "стола" фильтрацию как делали ? Если через событие OnFilterRecord, тогда просто можно счетчик выбранных записей поставить.
А вобще -то проще всего дать запрос с count и не мучаться.
← →
Vlad © (2004-04-06 20:54) [1]
> У стола сделали фильтрацию и из 30 записей, допустим, стало
> 10
А у "стола" фильтрацию как делали ? Если через событие OnFilterRecord, тогда просто можно счетчик выбранных записей поставить.
А вобще -то проще всего дать запрос с count и не мучаться.
← →
GetIt (2004-04-06 21:04) [2]Как? так...
Table1.Filter:="...";
Table1.Filtered:=True;
>счетчик выбранных записей поставить
поподробнее.. в событии счетчик..?
>запрос с count
запрос с count в Table1.filter? и как?
← →
GetIt (2004-04-06 21:04) [2]Как? так...
Table1.Filter:="...";
Table1.Filtered:=True;
>счетчик выбранных записей поставить
поподробнее.. в событии счетчик..?
>запрос с count
запрос с count в Table1.filter? и как?
← →
Sirus © (2004-04-07 07:40) [3]Выполни запрос с условиями фильтра для этой же таблицы...
А еще лучше, просто сделай все это на TQuery и все, тогда RecordCount будет возвращать нужное тебе количество записей.
← →
Sirus © (2004-04-07 07:40) [3]Выполни запрос с условиями фильтра для этой же таблицы...
А еще лучше, просто сделай все это на TQuery и все, тогда RecordCount будет возвращать нужное тебе количество записей.
← →
Sergey13 © (2004-04-07 08:17) [4]>возможно ? как ?
Встать на первую и добежать циклом до последней, считая по пути следования.
← →
Sergey13 © (2004-04-07 08:17) [4]>возможно ? как ?
Встать на первую и добежать циклом до последней, считая по пути следования.
← →
RDen (2004-04-07 08:36) [5]> DataSet.RecordCount возвращает количество
всех DataSet-овских "не фильтрованных" записей...
проверил, а у меня возвращает кол-во отфильтрованных записей
← →
RDen (2004-04-07 08:36) [5]> DataSet.RecordCount возвращает количество
всех DataSet-овских "не фильтрованных" записей...
проверил, а у меня возвращает кол-во отфильтрованных записей
← →
GetIt (2004-04-09 02:49) [6]>> RDen (07.04.04 08:36) [5]
>> проверил, а у меня возвращает кол-во отфильтрованных записей
Действительно, бред какой то.....
Что-то не то тогда написал...
Что самое интересное, даже и не помню, чо хотел....
Во проглючило !!!...
но щас...
Суть такая:
таблица с ключевым уникальным индексом
Допустим, после после ее первого создания & заполнения в этом "уникальном" поле
все "цифорки" идут попорядку...
потом же (после фильтрации) на первом месте может оказаться строка с любым
(в зав-ти от условий выборки) значением этого поля...
так вот, после фильтрации встав на первую строку и спросив какой у нее
номер, я получу значение "уникального" поля у этой первой строки...
(не 1, а, допустим, 8)
мне же надо знать ее порядковый номер в текущем отображении
(еси смотреть на нее визуально), т.е.
порядковый номер не вообще во всей БД, а в данной фильтрации.....
номер строчки по-порядку........
Еси на примере:
сначало:
1 a
2 b
3 с
4 d
5 i
6 f
7 g
8 k
9 l
10 m
после фильтрации (Table1.Filter:="..." ):
4 d
6 f
7 g
10 m
мне надо по ним пробежаться (кол-во знаю...)
но не циклом..
при этом следить за текущей строкой (близко ли конец выборки)
где-то там Table1.Next;
и....
if Table1.RecNo=Table1.Recordcount then .......
не пойдет... т.к. (см. пример)
10(последний recNo) не будет равно 4(всего в выборке)....
может мне, наконец, надо просто поспать?!..............
или КАК???????
← →
GetIt (2004-04-09 02:49) [6]>> RDen (07.04.04 08:36) [5]
>> проверил, а у меня возвращает кол-во отфильтрованных записей
Действительно, бред какой то.....
Что-то не то тогда написал...
Что самое интересное, даже и не помню, чо хотел....
Во проглючило !!!...
но щас...
Суть такая:
таблица с ключевым уникальным индексом
Допустим, после после ее первого создания & заполнения в этом "уникальном" поле
все "цифорки" идут попорядку...
потом же (после фильтрации) на первом месте может оказаться строка с любым
(в зав-ти от условий выборки) значением этого поля...
так вот, после фильтрации встав на первую строку и спросив какой у нее
номер, я получу значение "уникального" поля у этой первой строки...
(не 1, а, допустим, 8)
мне же надо знать ее порядковый номер в текущем отображении
(еси смотреть на нее визуально), т.е.
порядковый номер не вообще во всей БД, а в данной фильтрации.....
номер строчки по-порядку........
Еси на примере:
сначало:
1 a
2 b
3 с
4 d
5 i
6 f
7 g
8 k
9 l
10 m
после фильтрации (Table1.Filter:="..." ):
4 d
6 f
7 g
10 m
мне надо по ним пробежаться (кол-во знаю...)
но не циклом..
при этом следить за текущей строкой (близко ли конец выборки)
где-то там Table1.Next;
и....
if Table1.RecNo=Table1.Recordcount then .......
не пойдет... т.к. (см. пример)
10(последний recNo) не будет равно 4(всего в выборке)....
может мне, наконец, надо просто поспать?!..............
или КАК???????
← →
RDen (2004-04-09 07:30) [7]>if Table1.RecNo=Table1.Recordcount then .......
А это не подойдёт что-ли? if Table1.Eof Then .....
← →
RDen (2004-04-09 07:30) [7]>if Table1.RecNo=Table1.Recordcount then .......
А это не подойдёт что-ли? if Table1.Eof Then .....
← →
GetIt (2004-04-10 22:14) [8]Да, но просто, еси, например
на форму ляпнуть стол, источ.данных и кнопку
Сделать стол активным (неважно на какой таблице)
а на кнопку повесить это:
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Next;
if Table1.Eof then Form1.Caption:="Конец" else Form1.Caption:="Пока не Конец";
end;
то заголовок не станет "Конец" до тех пор, пока
стол не "упрется" в последнюю запись.......
p.s.
Это оч. хорошо видно, еси еще и сетку повесить..........
А нужно, чтоб как только запись "дошла" до последней, сразу и......
← →
GetIt (2004-04-10 22:14) [8]Да, но просто, еси, например
на форму ляпнуть стол, источ.данных и кнопку
Сделать стол активным (неважно на какой таблице)
а на кнопку повесить это:
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Next;
if Table1.Eof then Form1.Caption:="Конец" else Form1.Caption:="Пока не Конец";
end;
то заголовок не станет "Конец" до тех пор, пока
стол не "упрется" в последнюю запись.......
p.s.
Это оч. хорошо видно, еси еще и сетку повесить..........
А нужно, чтоб как только запись "дошла" до последней, сразу и......
← →
RDen (2004-04-12 08:08) [9]var i:integer;
......
i:=Table1.Recordcount //после фильтрации
......
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Next;
if i = Table1.Recordcount - 1 then Form1.Caption:="Конец" else Form1.Caption:="Пока не Конец";
end;
з.ы. тока не понятно зачем это
← →
RDen (2004-04-12 08:08) [9]var i:integer;
......
i:=Table1.Recordcount //после фильтрации
......
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Next;
if i = Table1.Recordcount - 1 then Form1.Caption:="Конец" else Form1.Caption:="Пока не Конец";
end;
з.ы. тока не понятно зачем это
← →
RDen (2004-04-12 08:10) [10]опс......
сорри, чё-то не то написал :(
← →
RDen (2004-04-12 08:10) [10]опс......
сорри, чё-то не то написал :(
← →
ЮЮ © (2004-04-12 08:31) [11]>А нужно, чтоб как только запись "дошла" до последней, сразу и......
Стол.24_бочонка_пороха,
в смысле
Table.Last
← →
ЮЮ © (2004-04-12 08:31) [11]>А нужно, чтоб как только запись "дошла" до последней, сразу и......
Стол.24_бочонка_пороха,
в смысле
Table.Last
← →
GetIt (2004-04-12 14:09) [12]>> RDen (12.04.04 08:10) [10]
>> опс......
>> сорри, чё-то не то написал :(
8-)
>> ЮЮ © (12.04.04 08:31) [11]
>> Table.Last
Ну-у и-и-и.......
Ведь цель - не на последнюю строчку встать,
а когда до нее (последней строки) "дойдет" - сразу среагировать......
p.s.
Закон:
(после активации фильтра)
+
("дойдет" <> "упрется").........
← →
GetIt (2004-04-12 14:09) [12]>> RDen (12.04.04 08:10) [10]
>> опс......
>> сорри, чё-то не то написал :(
8-)
>> ЮЮ © (12.04.04 08:31) [11]
>> Table.Last
Ну-у и-и-и.......
Ведь цель - не на последнюю строчку встать,
а когда до нее (последней строки) "дойдет" - сразу среагировать......
p.s.
Закон:
(после активации фильтра)
+
("дойдет" <> "упрется").........
← →
GetIt (2004-04-13 02:31) [13]Удалено модератором
Примечание: Создание пустых сообщений
← →
GetIt (2004-04-13 02:31) [13]Удалено модератором
Примечание: Создание пустых сообщений
← →
ЮЮ © (2004-04-13 02:53) [14]>Закон: (после активации фильтра) + ("дойдет" <> "упрется")
Этот закон действует и при отсутствии фильтра.
Ну откуда, скажи, ДатаСету знать, что эта запись последняя, удовлетворяющая условию фильтра? Только просканировав до последней записи и уткнувшись в EOF он может быть в этом уверен. Либо стоит попробовать использовать индекс по полям, входящим в условия фильтра.
← →
ЮЮ © (2004-04-13 02:53) [14]>Закон: (после активации фильтра) + ("дойдет" <> "упрется")
Этот закон действует и при отсутствии фильтра.
Ну откуда, скажи, ДатаСету знать, что эта запись последняя, удовлетворяющая условию фильтра? Только просканировав до последней записи и уткнувшись в EOF он может быть в этом уверен. Либо стоит попробовать использовать индекс по полям, входящим в условия фильтра.
← →
Anatoly Podgoretsky © (2004-04-13 09:05) [15]Голову включить, что бы прореагировать нужно знать, что эта запись последнея, а для этого снова возвращаем тебя к Table.Last и требуем включение дополнительных мощностей.
← →
Anatoly Podgoretsky © (2004-04-13 09:05) [15]Голову включить, что бы прореагировать нужно знать, что эта запись последнея, а для этого снова возвращаем тебя к Table.Last и требуем включение дополнительных мощностей.
← →
GetIt (2004-04-13 10:41) [16]>> ЮЮ © (13.04.04 02:53) [14]
>> Закон: (после активации фильтра) + ("дойдет" <> "упрется").........
Тут я имел ввиду лишь частный случай своей задачи...
Т.е. все происходит "после активации фильтра", и EOF тут дает не то, что требуется....
>> Anatoly Podgoretsky © (13.04.04 09:05) [15]
>> Голову включить....
Head On.
>> что бы прореагировать нужно знать, что эта запись последнея, а для этого
>> cнова возвращаем тебя к Table.Last и требуем включение дополнительных мощностей.
Ну поскольку....
последний RecNo (после фильтрации) не будет равен RecordCount-у, то....
Сначало (сразу после фильтрации) встаем на последнюю строчку, запоминаем ее id и
в прогоне строчек Next-ом реагируем, когда RecNo=id.......
Одно из решений получено........
А мо еще как..........
← →
GetIt (2004-04-13 10:41) [16]>> ЮЮ © (13.04.04 02:53) [14]
>> Закон: (после активации фильтра) + ("дойдет" <> "упрется").........
Тут я имел ввиду лишь частный случай своей задачи...
Т.е. все происходит "после активации фильтра", и EOF тут дает не то, что требуется....
>> Anatoly Podgoretsky © (13.04.04 09:05) [15]
>> Голову включить....
Head On.
>> что бы прореагировать нужно знать, что эта запись последнея, а для этого
>> cнова возвращаем тебя к Table.Last и требуем включение дополнительных мощностей.
Ну поскольку....
последний RecNo (после фильтрации) не будет равен RecordCount-у, то....
Сначало (сразу после фильтрации) встаем на последнюю строчку, запоминаем ее id и
в прогоне строчек Next-ом реагируем, когда RecNo=id.......
Одно из решений получено........
А мо еще как..........
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.043 c