![]() |
|
![]() ![]() ![]() |
|
Dayana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
Есть TQuery. Как узнать номер активной на данный момент строки запроса? Т.е. номер строки, где сейчас стоит указатель запроса?
|
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
никак. может быть в каких-то субд есть специально заточенные под это средства, в чём я сомневаюсь, но по идее - никак. в лучшем случае можно определить порядковый номер записи, отображаемый в гриде, можно, добраться до номера записи (индекса), под которым она храниться в буфере TDataSet, но что касается физического порядка хранения записей на сервере - мне кажется, это вообще чёрный ящик. переформулируйте задачу. может стоит клать нумерацию ручками в поле таблицы и потом просто просматривать это поле?
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
я правльно понимаю, что под запросом имеется в виду результирующий набор данных, а под указателем - текущая запись?
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
Dayana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
Мне именно и нужен порядковый номер текущей записи в результирующем наборе данных... мне не нужен физический порядок на сервере...
|
|||
|
||||
pigas |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 29.4.2003 Репутация: нет Всего: нет |
это с-во recno:integer /
|
|||
|
||||
pigas |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 29.4.2003 Репутация: нет Всего: нет |
или в этом духе
|
|||
|
||||
pigas |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 29.4.2003 Репутация: нет Всего: нет |
ок
|
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
это я и имел в виду - RecNo. но вот вчера попробовал... пакость, однако, получается, господа.
RecNo - это действительно номер записи, на которой стоит курсор (DBI - курсор, не квери и тем более не грида!) но квери начитывает записи по несольку штук в буфер. в итоге значение RecNo скачет безобразным образом: открыли квери - 1, пролистали страницу - 10, ещё страницу - 20 и т.д. и самое обидное, что он прав - текущая физическая запись такая и есть. но мы то видим запись из буфера ![]() ![]() так что если кто-то мне объяснит, как дорваться до номера записи в кэше bde - с меня пиво ![]() -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Что за тип ? -------------------- С уважением, г-н Посол. |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
DbTables.pas
с буфером bde работает именно через этот тип. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
x77, не понимаю о чем ты. Св-во RecNo возвращаетномер записи не зависимо от того в квери оно или в тэйбдле. И в квери оно вернет номер текущей записи резулбтирующего набора данных, что кажется и требуется. И кэш здесь сам по себе не причем.
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Думаю также, как и Cashey...
Сделал table, query, вывел запрос в грид. RecNo всегда показывает ту запись, которая выбрана в гриде. Если просто в цикле делать next или менять RecNo, тоже нормально всё. Я не понял, что имел в виду x77 тут:
где видим и что ? -------------------- С уважением, г-н Посол. |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
у меня он не является номером текущей записи. сначала равен одному. листаю грид. спустя сколько-то там строк становится равным десяти. дохожу до конца грида. делаю вставку. -1. отменяю вставку - 28. т.е. он меняется скачкообразно, по мере того, как квери начитывает данные из таблицы в буфер. и становится равным номеру последней, начитанной в буфер записи. что это за фигня - я пока не знаю, сейчас эксперементировать - времени нет, вечером разберусь и отвечу.
з.ы. я тоже, почему-то, был уверен, что recno всегда возвращает номер текущей записи в результирующем НД. однако вот. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
кажется, есть. на *.db, *.dbf всё так, как полагается - в RecNo живёт номер текущей записи. а вот на Ib - полная фигня.
чушь это, конечно, работать с Ib через BDE, но тем не менее. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
Dayana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
Вот и я о том же... пробовала через RecNo... обрабатываю на событие OnCalcFields (или почти так называется), считываю RecNo, а он мне -1 всегда возвращает. Думаю, RecNo содержит номер выделеной строки на db гриде. А OnCalcFields с выделением строки в db гриде не связано.
Задача у меня такая. В db гриде надо вывести колонку с нумерацией всех строк. Я подумала, что самое простое это завести поле в TQuery, которое калькулейтит, и в OnCalcFields заносить туда номер текущей записи. Оказалось проблема с номером текущей записи. Но, и по-другому, как пересчитать строки я до сих пор не знаю. Ведь в db гриде напрямую добраться к ячейки нельзя (как, например, в string гриде). А квери у меня большой, и делать его еще больше, чтобы он сам возвращал номер строки не хочется, т.к. я выяснила, что это не так уж и тривиально. Может есть мысли на этот счет? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |