![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Номер записи [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.