Нужен порядковый номер записи из Sql выборки

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем LAW, 14 дек 2006.

Статус темы:
Закрыта.
  1. LAW

    LAW Гость

    Приветствую форумчане!
    Поломал уже все копья :) подскажите.
    Как же всё таки получить порядковый номер записи в Query после запроса по SELECT FROM WHERE?
    RecNo просьба не предлагать ибо он возвращат физический номер записи.

    Жду советов, спасибо.
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Для чего это нужно, т.к. от этого зависит способ решения
     
  3. LAW

    LAW Гость

    Это нужно для того что бы показать пользователю. Где он находится по отношению к первой и последней записи.
    что-то типа: вы находитесь на 25 записи из 99.
     
  4. Barmutik

    Barmutik Гость

    Ммм..я всегда думал что RecNo возвращает порядковый номер записи в курсоре.. да и в хелпе так написано ..

    Тогда проясните что вы подразумевате под физическим номером и порядковым ?
     
  5. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-Barmutik+14:12:2006, 11:32 -->
    <span class="vbquote">(Barmutik @ 14:12:2006, 11:32 )</span><!--QuoteEBegin-->я всегда думал что RecNo возвращает порядковый номер записи в курсоре
    [snapback]50782" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Я тоже так думал, поэтому и спросил для чего это нужно... Может нумерация записей не поддерживается сервером? Если я не ошибаюсь, то есть функция IsSequenced (или что-то около того), которая говорит о возможности нумерации записей в наборе. Если я не прав, то исправьте...
     
  6. Barmutik

    Barmutik Гость

    Для: European

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

    А так стандартный вариант RecNo/RecordCount .. если количество -1, то отдельным запросом считаем количество...
     
  7. LAW

    LAW Гость

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

    Спасибо за внимание.
     
  8. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-LAW+14:12:2006, 13:18 -->
    <span class="vbquote">(LAW @ 14:12:2006, 13:18 )</span><!--QuoteEBegin-->Попробуйте на своих серверах если не сложно, что возвращает RecNo после выполнения SELECT c WHERE?
    [snapback]50815" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Уже сказали, что _порядковый_ номер в наборе...

    <!--QuoteBegin-LAW+14:12:2006, 13:18 -->
    <span class="vbquote">(LAW @ 14:12:2006, 13:18 )</span><!--QuoteEBegin-->Я работаю ... через компоненты Dataset разработанные Sybase iAnywhere
    [snapback]50815" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Значит посмотри доки на компоненты, может они действительно возращают физический номер
     
  9. Barmutik

    Barmutik Гость

    Через БДЕ и АДО со всеми мне известными БД RecNo возвращает номер записи в курсоре ..

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

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Для: Barmutik

    <!--QuoteBegin-Barmutik+14:12:2006, 17:27 -->
    <span class="vbquote">(Barmutik @ 14:12:2006, 17:27 )</span><!--QuoteEBegin-->Я честно говоря вообще впервые слышу понятие ФИЗИЧЕСКИЙ НОМЕР ЗАПИСИ...
    [snapback]50853" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    На сколько я знаю, такого общепринятого понятия не существует, но часто под физическим номером записи понимают некое число, соответствующее порядку выбора записей из физической таблицы до наложения на выборку каких-либо ограничений и условий. Единственным разумным оправданием использования физического номера является ограничение на количество записей, выбираемых из таблицы, и некоторые виды сортировок и то, как правило, это результат или плохого проектирования, или неуемных требований пользователей.
     
  11. LAW

    LAW Гость

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

    Эта база мать её!!! Последователь DBF. Не моя была идея её использовать в проекте. Так вот и мучаюсь теперь. Посмотрел я доки по компонентам: физический номер записи у них-это порядковый номер записи в файле базы данных. К нему можно даже обратиться в WHERE.
    Короче всё понятно. Не видать мне нумерации в выборке.
     
  12. Barmutik

    Barmutik Гость

    Так а попробуйте исользоватьстандартные компоненты вместо специализированных ? Неужель и там так будет?
     
  13. LAW

    LAW Гость

    В стандартных RecNo работает нормально, но время выборки просто не реальное. На миллионнике требуется больше времени в 10-20 раз.
    Буду писать багрепорт производителю, мож в след версиях поправят.
     
  14. Barmutik

    Barmutik Гость

    Ммм.. а может пытаться воспользоваться параметрами сколько записей должно выбираться в одном пакете .. это значительно убыстрает ответ сервера ...

    Хотя конечно родные компоненты явно должны быстрее работать... на то они и родные ...
     
  15. LAW

    LAW Гость

    Угу.
    Всё тема, можно сказать, раскрыта (закрыта) в связи с криворукостью разработчиков. :D

    Всем спасибо.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей