Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

Номер записи   Найти похожие ветки 

 
Sergei!   (2004-02-01 14:18) [40]

Я кажется понял. Можно ввести поле вычисляемое. При фильтрации данному полю задавать номер по порядку. Т.е.

var
GlobalCounter:longint;

...

procedure TTable1.OnFilterRecord...
begin
if <условие фильтра> then
begin
 GlobalCounter+=1;
 TTable1MyCalcNumField.Value:=GlobalCounter;
end
else ...
end;


вроде, то что нужно.


 
13-ый   (2004-02-01 14:33) [41]

Да да да да и ещё раз да!!!! Но GlobolCounter Как-то  нужно обнавлять? как?


 
Sergei!   (2004-02-01 14:46) [42]

Так он и обнавляется

GlobalCounter+=1

тоже самое что и

GlobalCounter:=GlobalCounter+1;


Но вот сейчас только пришла в голову мысль. Каждый раз как менятеются условия фильтра и еще что-то необходимо счетчик т.е. GlobalCounter приравнивать 0.

А можно вообще без него обойтись, т.е. напрямую TTable1MyCalcNumField.Value:=TTable1MyCalcNumField.Value+1


 
13-ый   (2004-02-01 14:51) [43]

Последнее не пройдёт оно при каждом обновлении будет у каждой записи значение прибавлять на 1.
я имею в виду как збрасывать GlobalCounter? при всех изменениях?


 
Anatoly Podgoretsky ©   (2004-02-01 15:01) [44]

Sergei!   (01.02.04 14:18) [40]
И ты конечно попробовал, потестировал?


 
Sergei!   (2004-02-01 15:09) [45]

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


 
13-ый   (2004-02-01 15:19) [46]

Sergei!
 как збрасывать GlobalCounter? при всех изменениях?


 
Sergei!   (2004-02-03 05:12) [47]

Я имею ввиду, что как только изменились условия фильтра его необходимо сбросить. Иначе у тебя все номера будут идти по возрастающей. Например, установил ты фильтр на первую букву фамилий "С". То делаешь примерно так:


...
TTable.Filtered:=False;
GlobalCounter:=0;
TTable.Filtered:=True;
...


 
Deniz ©   (2004-02-03 09:20) [48]

Можно и мне пару слов вставить :)
> Некто   (28.01.04 13:07) [23]
>Это рассудит рынок. Плохую программу никто не купит. :)

Согласен, если только есть выбор, а программа не директива сверху :) Видели ли Вы персонифицированный учет во время его начала? (2000 г. если память не изменяет). Это ...

Но я все же думаю, что в нумерации строк таблицы нет ничего крамольного. Ведь пользователи не жалуются на нумерацию строк и столбцов в том же Excel"е. Ведь удобно сказать, сидя с собеседником перед монитором: "обратите внимание на строку 238". А большего, поди, от такой нумерации и не требуется.
Так вроде в Excel"е при автофильтре строки не перенумируются, а вопрос автора именно про это(перенумирование).
Для автора можно предложить сл-щее:
1. Использовать не DBGrid а StringGrid, ListView и т.д. и самому выводить информацию!
2. Написать своего наследника от DBGrid с необходимыми св-вами.
3. Написать письмо разработчикам (EhLib, Quantum и т.д.) с предложением внести дополнительную функцианальность.


 
Anatoly Podgoretsky ©   (2004-02-03 09:46) [49]

Именно это не база, а разграфленный лист бумаги, от того, что несколько строк заклены нумерация не измения и нумерация нужна для работы формул, такая уж там технология.
Ссылка на строку 238 возможно только при налиции инентичных наборов и фильтрации, больше пользы от ключа, там возникает одназначность. А при искуственном создании номеров часто возникают сильные проблемы, это известно тому, кто работает с клиентом удалено. Отчеты, типа накладные совсем другое дело, во первых там это поддержано самим принципом и отпечатаный отчет не изменится, но и там номер нужен не для идентификации, а просто так, для счета позиций.
Все это было бы возможно и для баз, если бы речь шла о таблицах полностью закаченых в память, но о какой закачке может идти речь например для нескольких десятках миллионах записей. Но если такое нужно, то есть TClientDataset, но результаты будут отличаться в разных сеансах работы.


 
13-ый   (2004-02-08 19:04) [50]

Deniz
ты правильно понял,но варианты выхода мне не подходят.
Я сделал калк фиелд в котором идёт начисление глобальной переменной.
Мне нужен список событий после которых идёт просчёт полей.


 
ЮЮ ©   (2004-02-09 06:36) [51]

>13-ый   (08.02.04 19:04) [50]
Достаточно 1 раз, после изменения фильтра, пробежав от начала(First) до конца (EOF) Таблицы, т.к. при этом будем попадать только в записи, удовлетворяющие фильтру


 
13-ый   (2004-02-22 15:25) [52]

Блин вы поймите,что нужно делать записи в калк фиелд.
Я ето делаю так:

procedure TForm1.T1CalcFields(DataSet: TDataSet);
begin
if yu=false then
 begin
  if DbGridEh1.VisibleRowCount<=No then no:=0;
  inc(no);
  T1Nom.Value:=no;
 end;
end;

где No- глобальная переменная
Так вот её нужно обнавлять при всех изменениях .
Вроде обнавляю.
Но при фильтрации и при пересортировке номера путаются.


 
Sergey13 ©   (2004-02-22 15:46) [53]

Боже мой. Ты целый месяц думаешь над проблемой, которую сам придумал.
>Но при фильтрации и при пересортировке номера путаются.
Ну и кому нужны такие номера. Если они даже не будут путаться. То Иванов был 12, то после фильтрации стал 3. И что? Кому это надо?


 
13-ый   (2004-02-22 16:00) [54]

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


 
Наталия ©   (2004-02-23 07:36) [55]

А если это нужно для печати - причём здесь Grid? Используй отчёты - или тебе религия не позволяет?


 
13-ый   (2004-02-28 22:14) [56]

Какие отчёты млин....
Не только для печати ,но и чтоб красиво на экране было


 
Petr V. Abramov ©   (2004-02-29 01:41) [57]

Наталия ©   (23.02.04 07:36) [55] дело говорит. На экране, как правило, места мало - во-первых, колонка "№ п/п" - в 90% случаев - информация лишняя, это - во-вторых. А в отчете ей (такой колонке) - самое место, бумажке умного вида прибавляет. Если действительно надо или ну очень хочется - я б использовал поле формы (не глобальную переменную!) + OnCalcFields
MyCounter := 0
Filtered := true;

В OnCalcFields:
 inc(MyCounter);
 FiledByName("Nomer_PP").Value := MyCounter


 
Petr V. Abramov ©   (2004-02-29 01:43) [58]

Ну и про BeforeOpen не забыть



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

Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.03 c
1-1078395795
zac
2004-03-04 13:23
2004.03.28
Подскажите, как выгрузить изображение из image...


1-1078490679
Julliete
2004-03-05 15:44
2004.03.28
Как использовать Enter вместо Tab при переходе


3-1077137878
ser_ega
2004-02-18 23:57
2004.03.28
BDE


1-1078647906
GrayFace
2004-03-07 11:25
2004.03.28
Объект (и компонент) в компоненте не редактирует Object Inspector


6-1074174956
Method
2004-01-15 16:55
2004.03.28
Chat





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский