Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Номер записи [D5, IB5.x]


desha ©   (2002-09-01 12:40:00) 

Мастера! Не ужели никто не подскажет, как узнать номер записи НД? Recno не работает для Query и в хелпе об этом написано. А как же быть?


Anatoly Podgoretsky   (2002-09-04 14:20:00) [1]

ЮЮ © (03.09.02 03:33)
Добавим "отфетченных" на данный момент


Fareader   (2002-09-04 14:08:00) [2]

Ставим FIBPlus и юзаем RecNo (для конкретного НД), а также получаем еще много других вкусностей


Basic   (2002-09-04 12:37:00) [3]

Можешь попробовать еще вариант, в книжке видел, но сам не пробовал.
Делай связь с основной бд, и с нее бери реальный номер


Query1.GotoCurrent(Table1);
showmessage(inttostr(Table1.Recno));


dimanew   (2002-09-03 07:46:00) [4]

можно сделать так:
Обьявляешь класс TMyGrid = class (TDBGrid)
Затем где-нибудь такое:
TFriendGrid(Dbgrid).DataLink.ActiveRecord


ЮЮ   (2002-09-03 03:33:00) [5]

>Только не понятно, зачем для tQuery есть RecordCount и оно работает, но RecNo тоже ест, но не работает даже документально

Потому что RecordCount - это объективная реальность, количество записей, удовлетворяющих условию запроса.


desha   (2002-09-02 12:27:00) [6]

Спасибо, это уже и сам понял. Только не понятно, зачем для tQuery есть RecordCount и оно работает, но RecNo тоже ест, но не работает даже документально....


Praco   (2002-09-02 09:08:00) [7]

Самое простое решение :
sniknik © (01.09.02 21:05)

Shtukatur © (02.09.02 07:02) - работать не будет, в IB нет временных табличек.

Для IB самое быстрое решение - хранимая процедура For Select и в блоке Do увеличение инкрентной переменной.

desha © (01.09.02 20:33)
"Просто нужно спозиционироваться на нужную запись в таблице. Про запись ничего не известно, кроме ее номера в выборке."
Не применяй номер записи в выборке для ее поиска в базе - это гарантированный путь к ошибкам. Однозначно найти запись можно только по потенциальному ключу.




Shtukatur   (2002-09-02 07:02:00) [8]

create table #rank
( rank int indentity noy null,
id int
)

insert #rank
select ID_Record from Records order by ...

select rn.rank, ...
from Records rc
join #rank rn on rn.ID = rc.ID_Record
order by rc. ..

drop table #rank

rn.rank - это номер записи, но это гемор

лучше используй TClientDataSet, там RecNo работает.


sniknik   (2002-09-01 21:19:00) [9]

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


sniknik   (2002-09-01 21:05:00) [10]

SELECT (Select Sum(1) From Products AS t1 Where t1.ProductID<= t2.ProductID) AS mynr, t2.* FROM Products AS t2

извини но это для MSSQL класический способ пойдет для IB? хрен знает. ProductID здесь именно первичный ключ.


Anatoly Podgoretsky   (2002-09-01 20:43:00) [11]

Для этого доджен быть или первичный ключ или уникальный индекс


desha   (2002-09-01 20:33:00) [12]

Просто нужно спозиционироваться на нужную запись в таблице. Про запись ничего не известно, кроме ее номера в выборке.


sniknik   (2002-09-01 14:48:00) [13]

Номер в выборке, не раз обсуждалось сдесь и я видел довольно простое решение именно для IB (чтото вроде переменной в селекте которая автоикрементная но IB я не знаю а MSSQL такого нет, или тоже не знаю :-( ). И еще было через вычисляемое поле (с извращениями). Но довольно давно видел уже наверно ушло в дайджесты (архив форума) самому искать неохота. :-)

а действительно зачем это тебе? если для репорта то там переменную можно вставить а в гриде... ? ну непонятно.


Anatoly Podgoretsky   (2002-09-01 13:28:00) [14]

Какую смысловую и полезную нагрузку несет этот номер


desha   (2002-09-01 13:12:00) [15]

To shiknik
Первоначально надо было первое. Теперь бы просто узнать номер в выборке Query.


sniknik   (2002-09-01 12:51:00) [16]

Вряд ли кто подскажет. IB это как я понимаю тапа MSSQL-я sql server а в них номер записи не поддерживается (сервер сам решает куда запись положить).
А вот как же быть? можно. Обычно вставляют дополнительное поле индефикатор (автоикремент) это и будет номер по порядку.
и еще уточни чего тебе надо номер записи НД или всетаки номер в выборке Query.


Наверх

Титульная страница Поиск, карта сайта Написать письмо