Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нужен порядковый номер записи из Sql выборки
Форум программистов > Системное программирование > C, С++ и С Builder > Borland C++ Builder & Kylix
LAW
Приветствую форумчане!
Поломал уже все копья smile.gif подскажите.
Как же всё таки получить порядковый номер записи в Query после запроса по SELECT FROM WHERE?
RecNo просьба не предлагать ибо он возвращат физический номер записи.

Жду советов, спасибо.
European
Для чего это нужно, т.к. от этого зависит способ решения
LAW
Это нужно для того что бы показать пользователю. Где он находится по отношению к первой и последней записи.
что-то типа: вы находитесь на 25 записи из 99.
Barmutik
Ммм..я всегда думал что RecNo возвращает порядковый номер записи в курсоре.. да и в хелпе так написано ..

Тогда проясните что вы подразумевате под физическим номером и порядковым ?
European
Цитата(Barmutik @ 14:12:2006, 11:32 )
я всегда думал что RecNo возвращает порядковый номер записи в курсоре
*

Я тоже так думал, поэтому и спросил для чего это нужно... Может нумерация записей не поддерживается сервером? Если я не ошибаюсь, то есть функция IsSequenced (или что-то около того), которая говорит о возможности нумерации записей в наборе. Если я не прав, то исправьте...
Barmutik
Для: European

Да вроде всю жизнь работал RecNo, порядковый номер в курсоре.. бывали случае что RecordCount возвращает -1, но это другое...

А так стандартный вариант RecNo/RecordCount .. если количество -1, то отдельным запросом считаем количество...
LAW
Я работаю с Sybase iAnywhere Advantage Database Server 8.0 (ADS) в связке с Билдером 6 через компоненты Dataset разработанные Sybase iAnywhere. По идее сервер держит SQL 92. Но как выясняется при разработке не полностью. Так вот это один из непонятных мне моментов.
Попробуйте на своих серверах если не сложно, что возвращает RecNo после выполнения SELECT c WHERE? У меня возвращается физический номер записи в базе. То есть если брать RecNo после селекта, то номера идут например: у первой записи 1, у второй может быть 50, у третьей 100.

Спасибо за внимание.
European
Цитата(LAW @ 14:12:2006, 13:18 )
Попробуйте на своих серверах если не сложно, что возвращает RecNo после выполнения SELECT c WHERE?
*

Уже сказали, что _порядковый_ номер в наборе...

Цитата(LAW @ 14:12:2006, 13:18 )
Я работаю ... через компоненты Dataset разработанные Sybase iAnywhere
*

Значит посмотри доки на компоненты, может они действительно возращают физический номер
Barmutik
Через БДЕ и АДО со всеми мне известными БД RecNo возвращает номер записи в курсоре ..

Я честно говоря вообще впервые слышу понятие ФИЗИЧЕСКИЙ НОМЕР ЗАПИСИ... если бы ещё значение уникального ключа .. а то физический номер ..

Хотя с Сайбэйсом я последний раз в 2000 году работал .. может с тех пор они что-то такое хитрое и придумали ...
European
Для: Barmutik

Цитата(Barmutik @ 14:12:2006, 17:27 )
Я честно говоря вообще впервые слышу понятие ФИЗИЧЕСКИЙ НОМЕР ЗАПИСИ...
*

На сколько я знаю, такого общепринятого понятия не существует, но часто под физическим номером записи понимают некое число, соответствующее порядку выбора записей из физической таблицы до наложения на выборку каких-либо ограничений и условий. Единственным разумным оправданием использования физического номера является ограничение на количество записей, выбираемых из таблицы, и некоторые виды сортировок и то, как правило, это результат или плохого проектирования, или неуемных требований пользователей.
LAW
Цитата
На сколько я знаю, такого общепринятого понятия не существует, но часто под физическим номером записи понимают некое число, соответствующее порядку выбора записей из физической таблицы до наложения на выборку каких-либо ограничений и условий. Единственным разумным оправданием использования физического номера является ограничение на количество записей, выбираемых из таблицы, и некоторые виды сортировок и то, как правило, это результат или плохого проектирования, или неуемных требований пользователей.

Да мне как раз физический номер записи-то и не нужен. Мне б логический поиметь.

Эта база мать её!!! Последователь DBF. Не моя была идея её использовать в проекте. Так вот и мучаюсь теперь. Посмотрел я доки по компонентам: физический номер записи у них-это порядковый номер записи в файле базы данных. К нему можно даже обратиться в WHERE.
Короче всё понятно. Не видать мне нумерации в выборке.
Barmutik
Так а попробуйте исользоватьстандартные компоненты вместо специализированных ? Неужель и там так будет?
LAW
В стандартных RecNo работает нормально, но время выборки просто не реальное. На миллионнике требуется больше времени в 10-20 раз.
Буду писать багрепорт производителю, мож в след версиях поправят.
Barmutik
Ммм.. а может пытаться воспользоваться параметрами сколько записей должно выбираться в одном пакете .. это значительно убыстрает ответ сервера ...

Хотя конечно родные компоненты явно должны быстрее работать... на то они и родные ...
LAW
Угу.
Всё тема, можно сказать, раскрыта (закрыта) в связи с криворукостью разработчиков. smile.gif

Всем спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.