Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.036 c
3-1081658237
jkl
2004-04-11 08:37
2004.05.09
Объединение запросов


1-1082613777
Demi
2004-04-22 10:02
2004.05.09
Почему неработает функция прерывания int в программе на Delphi


3-1081943258
xloki
2004-04-14 15:47
2004.05.09
APACHE VS DELPHI!!


1-1082430074
-Maximus-
2004-04-20 07:01
2004.05.09
PopupMenu


14-1081925766
lehich
2004-04-14 10:56
2004.05.09
книга по WinAPI





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский