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

Вниз

сквозная нумерация в DbGrid   Найти похожие ветки 

 
m_i_p   (2006-11-03 08:07) [0]

помогите плиз,
необходимо в DbGrid отобразить номера строк, как например это сделано в Excel


 
ЮЮ ©   (2006-11-03 08:26) [1]

В экселе в натуре 65536 строк. А в гриде не больше того, что может войти в грид.
Сделай в DataSete calculated поле, в котором присваивай DataSet.RecNo и выведи его в грид. Или отрисовывай в гриде сам DataSet.RecNo.
P.S. Только с фильтрацией, если используешь, придется расстаться
P.P.S. А оно вообще нало? Что этот номер может дать кому-то полезного?


 
Anatoly Podgoretsky ©   (2006-11-03 08:46) [2]

> ЮЮ  (03.11.2006 08:26:01)  [1]

Может, тетя Люба подерется с тетей Валей.
Например так: ты что дура в строке 6 сумма к оплате 500, сама дура там 750


 
evvcom ©   (2006-11-03 11:00) [3]

> [2] Anatoly Podgoretsky ©   (03.11.06 08:46)

А потом вместе пойдут бить морду программисту. :-)


 
Павел Калугин ©   (2006-11-03 11:06) [4]

можно пронимеровать результат выдачи например так:

select a.au_lname+" "+ a.au_fname as author,
       phone,
       (select count(*)
         from authors b
        where  b.au_lname+" "+ b.au_fname <= a.au_lname+" "+ a.au_fname
       ) As RowNumber
from authors a

order by author

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


 
Sergey13 ©   (2006-11-03 11:09) [5]

> [4] Павел Калугин ©   (03.11.06 11:06)
> в некоторых отчетах  - необходимость.
Некоторые, если не все, репортеры с успехом нумеруют сами.


 
Павел Калугин ©   (2006-11-03 11:37) [6]

> [5] Sergey13 ©   (03.11.06 11:09)

Некоторые - да.
а вот большинство  - нет.
Ибо в большинстве отчет это просто текстовый файл, в формате указанном заказчиком по каналам электронной связи передаваемый всяким контролерамю.
или rtf формат по почте электрияеской клиентам рассылаемый.
а в частности можно и в Кристале красивости рисовать.


 
Johnmen ©   (2006-11-03 11:42) [7]


> Павел Калугин ©   (03.11.06 11:37) [6]
> Некоторые - да. а вот большинство  - нет.


Я вот скажу, что все репортёры нумеруют сами. Если, конечно же, их попросить.


 
Павел Калугин ©   (2006-11-03 12:05) [8]

> [7] Johnmen ©   (03.11.06 11:42)

умеют, кто бы спорил...
но большинство отчетов которые я видел  - в TMemo собираем текст и SaveToFile его.


 
Stanislav ©   (2006-11-03 12:22) [9]

а в MSSQL 2005 есть спец. фнкция.


 
Кщд ©   (2006-11-03 12:57) [10]


> а в MSSQL 2005 есть спец. фнкция.

row_number


 
Anatoly Podgoretsky ©   (2006-11-03 13:16) [11]

> evvcom  (03.11.2006 11:00:03)  [3]

Вот это то и обидно, а ведь уверяли, что без этих номеров жить не могут.


 
Anatoly Podgoretsky ©   (2006-11-03 13:17) [12]

> Sergey13  (03.11.2006 11:09:05)  [5]

А ведь не для отчетов просят.


 
Anatoly Podgoretsky ©   (2006-11-03 13:18) [13]

> Кщд  (03.11.2006 12:57:10)  [10]

Которая полетит к черту при локальной сортировке/фильтрации


 
Кщд ©   (2006-11-03 13:19) [14]


>        (select count(*)
>          from authors b
>         where  b.au_lname+" "+ b.au_fname <= a.au_lname+"
> "+ a.au_fname
>        ) As RowNumber

это даже на индекс не встанет
если очень хочется, то лучше, имхо, так:
create table #temp (id int, name varchar(100))
select identity(int, 1, 1) as id, t.name into #temp from sometable t


 
Кщд ©   (2006-11-03 13:22) [15]


> Которая полетит к черту при локальной сортировке/фильтрации

разумеется
просто способ получить пронумерованный набор с сервера


 
Павел Калугин ©   (2006-11-03 13:27) [16]

> [14] Кщд ©   (03.11.06 13:19)

Ну, если можно ХП написать и табличку создать то проще сразу создавать с полем RowMo identyty(1,1) и вставлять туда набор данных.
Но, мое мнение, что не создавая ХП вложить всесь этот процесс в TDataSet несколько хлопотно. поздзапрос проще.


 
sniknik ©   (2006-11-03 13:42) [17]

> Но, мое мнение, что не создавая ХП вложить всесь этот процесс в TDataSet несколько хлопотно. поздзапрос проще.
а ты читал то на что отвечаешь? показанные там 2 строчки это и есть все "хлопоты", не показана третья с непосредственно выборкой, ну и удаление темповой тоже желательно. но это все, и гораздо проще чем еще ХП туда притягивать.

вообще на http://sql.ru гдето есть статься по этой нумерации, рассмотрено гдето 6-8 способов... и их недостатки.


 
evvcom ©   (2006-11-03 14:02) [18]

Да к DataSet вообще можно ничего не прикручивать. Автор же про DbGrid говорит. Простейший OnCustomDrawCell и никакой зависимости от недостатков row_num, row_number и им подобных.


 
Johnmen ©   (2006-11-03 14:31) [19]


> evvcom ©   (03.11.06 14:02) [18]
> Да к DataSet вообще можно ничего не прикручивать. Автор
> же про DbGrid говорит. Простейший OnCustomDrawCell ....


С этого места поподробней :)


 
Павел Калугин ©   (2006-11-03 16:06) [20]

> [17] sniknik ©   (03.11.06 13:42)

естественно читал
В гриде отобразить можно что?
да хоть черта лысого. Особенно просто его отобразитиь если этот черт - набор данных
остается получить его в наборе данных.


 
Кщд ©   (2006-11-03 17:52) [21]


> остается получить его в наборе данных.

посчитайте во сколько table scan это выльется
лучше уж никак, чем таким запросом...


 
Павел Калугин ©   (2006-11-03 17:53) [22]

> [21] Кщд ©   (03.11.06 17:52)


> [17] sniknik ©   (03.11.06 13:42)
вообще на http://sql.ru гдето есть статься по этой нумерации, рассмотрено гдето 6-8 способов... и их недостатки.


 
Кщд ©   (2006-11-03 18:45) [23]


> Павел Калугин ©   (03.11.06 17:53) [22]

там где-либо предлагают совершить N table scan, где N - кол-во записей в выборке? :)


 
MsGuns ©   (2006-11-04 01:49) [24]

Засстерилитсья ! Сколько "вумных" советов и критики, и ни одного толкового совета.

TField.OnGetText(event):

 Text := IntToStr(Sender.DataSet.RecNo);\

и все..


 
Дмитрий Белькевич ©   (2006-11-04 02:40) [25]

В качестве глупой идеи: т.к. к таблицам часто инкрементные поля - юиды добавляют, может эти юиды и показывать? Тогда пофиг фильтр/сортировка - всегда однозначность гарантирована, да и никакой дополнительной возни, только поле таблицы показать.


 
Anatoly Podgoretsky ©   (2006-11-04 11:02) [26]

> MsGuns  (04.11.2006 1:49:24)  [24]

> Text := IntToStr(Sender.DataSet.RecNo);

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


 
Anatoly Podgoretsky ©   (2006-11-04 11:03) [27]

> Дмитрий Белькевич  (04.11.2006 2:40:25)  [25]

> всегда однозначность гарантирована

А кто просил одназначность, одназначно реализуется с помощью первичных
ключей.


 
MsGuns ©   (2006-11-04 12:05) [28]

>Anatoly Podgoretsky ©   (04.11.06 11:02) [26]
>И это тоже самое, это самое слово. Можно дать только от не понимания
технологий работы с базами.

Сабж нетрудно перечитать, всепонимающий Вы наш ?
;)))


 
Anatoly Podgoretsky ©   (2006-11-04 12:11) [29]

> MsGuns  (04.11.2006 12:05:28)  [28]

Наоборот, непонимающий Вы наш


 
evvcom ©   (2006-11-07 09:24) [30]

> [19] Johnmen ©   (03.11.06 14:31)

OnCustomDrawCell я, конечно, погорячился. Из DevExpress этот обработчик. А для DBGrid вот:
procedure TMyForm.DBGrid1DrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn;
 State: TGridDrawState);
begin
 inherited;
 if Column.FieldName = "" then
   DBGrid1.Canvas.TextOut(Rect.Left, Rect.Top, IntToStr(MyDataSet.RecNo));
end;

Мог бы и провести аналогию имен :)



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

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

Наверх





Память: 0.51 MB
Время: 0.058 c
4-1158337668
maxistent
2006-09-15 20:27
2007.01.28
Информация о процессе


2-1168607734
Plotnick
2007-01-12 16:15
2007.01.28
Unicode


2-1168639754
Ezorcist
2007-01-13 01:09
2007.01.28
Overriding virtual method TRegReaderObj.Destroy has lower.....


15-1168066455
vidiv
2007-01-06 09:54
2007.01.28
Дизайн страницы


15-1167807193
Slider007
2007-01-03 09:53
2007.01.28
С днем рождения ! 3 января





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