C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
RecNo в InterBase
Simai
  Отправлено: 30.07.2004, 13:31


Ученик-кочегар

Группа: Участник
Сообщений: 15



Господа программеры, не подскажет ли как в IВ увидеть номер записи.
В Paradoxе Table->RecNo — показывала, а здесь увы. С учетом того,что User получил примерно 1000 записей в кеше и далее он эти записи по одной или несколько удаляет.
Соответственно количество записей меняется.
AVC
Отправлено: 30.07.2004, 13:50


Ветеран

Группа: Модератор
Сообщений: 1583



Вам придется привыкать к мысли, что в SQL'евских базах понятие RecNo (номер записи) отсутствует. В лучшем случае вы можете получить порядковый номер строки в выборке. Но он не будет однозначно идентифицировать запись, а будет меняться при изменении условий отбора и порядка сортировки. Для имитации RecNo можно посоветовать создать дополнительное поле типа integer с повадками PK
Simai
  Отправлено: 30.07.2004, 14:35


Ученик-кочегар

Группа: Участник
Сообщений: 15



Ok! Спасибо. Кстати я разобрался как это можно сделать, правда надо
компонент FIBPlus , у них есть такие методы:
RecNo , RecordCount , VisibleRecordCount() , VisibleRecno,
а далее FIBDataSet1->RecNo и все ok.



AVC
Отправлено: 30.07.2004, 14:59


Ветеран

Группа: Модератор
Сообщений: 1583



Методы RecNo и RecordCount есть уже в TDataSet. Подозреваю, что у FIBPlus они реализуют не тот RecNo к которому вы привыкли на не SQL'евских базах, а просто номер от начала набора данных. А ReordCount не будет заполнен пока вы не Fech'ните всех записей. Надеюсь вы почувствовали разницу. Лучше сразу настраиваться обходиться без таких данных.

Отредактировано AVC — 30/07/2004, 15:02
olegenty
Отправлено: 02.08.2004, 07:24


Ветеран

Группа: Модератор
Сообщений: 2412



AVC прав, хотя AscRecordCount в установленном виде даёт фоновый "SELECT COUNT..." и RecordCount не будет равен -1.

Вернуться в Работа с базами данных в C++Builder