Главная страница
    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.011 c
14-47689
Malder
2002-06-14 21:19
2002.07.15
Придумал вот тут идею программы


14-47790
Sin
2002-06-06 15:30
2002.07.15
Indy - и все-таки как это выглядит


1-47454
JC
2002-06-27 16:31
2002.07.15
Как PopupMenu показать прямо под Edit ом?


1-47498
race1
2002-07-04 12:47
2002.07.15
procedure


1-47260
James007
2002-06-23 16:36
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский