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

Вниз

Порядковый номер записи   Найти похожие ветки 

 
stalexo   (2002-06-18 21:19) [0]

Уважаемые мастера!
Каким образом, работая с таблицами InterBase,
создать в DBGrid поле, показывающее номер
записи по порядку. RecNo,работающий
в Paradox здесь не работает.
Спасибо!


 
Praco   (2002-06-19 09:11) [1]

1.При помощи хранимой процедуры. В For Select вставляешь счетчик и возвращаешь его значение.

2.Можно поизвращаться с вычисляемыми полями, но там все непонятно.


 
Praco   (2002-06-19 09:13) [2]

3. Написать свой грид или поискать готовый.


 
stalexo   (2002-06-19 16:23) [3]

Praco, буду очень признателен за
твой грид!
Спасибо!
С уважением, stalexo.


 
koks   (2002-06-19 16:33) [4]

из 3-х вариантов 2-ой очень сложный, 3-й просто убийственный...
остается 1-й.
Это хорошо, что у тебя IB. На этом форуме пару раз обсуждали тоже самое, только для DBase/Paradox... такого там нагородили - я понял тогда, что это мне не надо. А вот если есть возможность использовать хранимую процедуру то все выглядит просто и красиво...


 
Praco   (2002-06-19 17:39) [5]

stalexo © (19.06.02 16:23)
Дык нет у меня такого грида. В DBGridEh не нашел. Другие навороченные гриды не изучал.

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



 
MishGan`   (2002-06-19 17:46) [6]

Могу предолжить такой вариант:
В тексте запроса добавляешь дополнительное псевдополе,
например так:
SELECT 1 as "N",t.* FROM ALL_TABLES t
У грида делаешь обработчик события OnDrawDataCell или OnDrawColumnCell, и в нем отрисовываешь нужный номер:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.FullName="N" then
begin
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+1,IntToStr(DBGrid1.DataSource.DataSet.RecNo));
end;
end;

При желании можно добавить FixedCol и в нем отображать номер строки.


 
stalexo   (2002-06-19 18:04) [7]

Спасибо всем, что не бросаете в беде!
Mishgan"у - персонально.За текст!
Сейчас буду пробовать.


 
Val   (2002-06-19 18:10) [8]

>stalexo © (19.06.02 18:04)
RecNo,работающий
в Paradox здесь не работает.

MishGan` (19.06.02 17:46)
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+1,IntToStr(DBGrid1.DataSource.DataSet.RecNo));

???


 
MishGan`   (2002-06-19 18:21) [9]

2 val
>>DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+1,IntToStr
>>(DBGrid1.DataSource.DataSet.RecNo));
Что здесь не понятно? Готов объяснить.
Зы:
И еще - если RecNo не работает (или работает не так как нужно), то можно его и не использовать. А использовать что-нибудь другое, например какой-нибудь свой счетчик.


 
Val   (2002-06-19 18:24) [10]

>MishGan` (19.06.02 18:21)
спасибо, объяснять не нужно, я лишь обращаю внимание на использование RecNo, из-за которого, собственно, проблема и возникла.


 
Леха_   (2002-06-19 18:47) [11]

ответ с форума королевства примерно плутора годовой давности:

Задачка классическая!!!

Имеем исходный запрос (без нумерации):

SELECT MY_COLUMN FROM MY_TABLE ORDER BY 1

ORDER BY важен, без него не получится. MY_COLUMN предполагаем сортируемым
и уникальным, т.е. нет двух записей с повторяющимися MY_COLUMN. Далее делаем
финт ушами:

SELECT COUNT(*), t1.MY_COLUMN
FROM MY_TABLE t1, MY_TABLE t2
WHERE t1.MY_COLUMN >= t2.MY_COLUMN
GROUP BY t1.MY_COLUMN
ORDER BY t1.MY_COLUMN

Т.е. просто подсчитываем количество записей, стоящих согласно порядку сортировки
ранее текущей. Я не уверен, что вариант оптимален :)) Но работает. Проверил
только что.
Peter Taran



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

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

Наверх




Память: 0.46 MB
Время: 0.012 c
14-47776
Malder
2002-06-13 17:49
2002.07.15
Быстроприготовляемые супы (типа Роллтона)


14-47745
Вадим
2002-06-11 21:46
2002.07.15
mp3, где можно найти?


1-47478
VICTOR_
2002-07-03 19:00
2002.07.15
Ошибка при открытии COM объекта


14-47761
Gu
2002-06-11 18:03
2002.07.15
Разгон монитора с 15 до 17


14-47772
panov
2002-06-14 10:18
2002.07.15
трансляции футбола





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