Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как считать значение всех полей в БД по номеру строки? [D6, Paradox]


Nikos ©   (2003-05-02 11:10:00) 

Есть БД. Состоит она из одной таблицы. Мне нужно считать 3 знаения поля строки №10, и вывести в lb1, lb2, lb3. Как это сделать так, чтобы не использовать таблицу?


MsGuns   (2003-05-02 16:04:00) [1]

>Anatoly Podgoretsky © (02.05.03 15:59)

Скорее всего автор сабжа не особо знаком с клиент-серверными БД, работает с парадокс, использую TTable, не сортирует записи и считает, что он один юзает таблицу - тогда такой подход имеет смысл.


Anatoly Podgoretsky   (2003-05-02 15:59:00) [2]

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


MsGuns   (2003-05-02 15:53:00) [3]

Исли не хочешь "ползать" курсором по отображаемому в гриде датасету, связанному с таблицей, то есть 2 метода:

1. Использовать этот же датасет
- Отключить отображение данных в гриде методом DisableControls датасета или Grid.DataSource.Enable := false;
- Запомнить текущее положение активной записи датасета (TTable.GeBookMark)
- Использовать метод TTable.MoveBy на кол-во строк, равное разнице между текущей (RecNo) и требуемой (10-й в твоем примере)
- Извлечь значения нужных полей в кэпшины лабелей (Label1.Caption := TTable1.FieldByName("MyField1").AsString)
- Вернуться в исх.строку TTable.GoToBookMark
(вообще-то вместо бокмарок можно исп-ть просто RecNo)
- Включить отображение данных.

2. Не трогая датасет, чтобы не менять видимую часть данных (в том числе положение активной записи относительно начала отображаемого в гриде подмножества записей)
- Создать (или использовать созданный в дизайне) другой TTable, связанный с этой же таблицей. В нем и искать требуемую запись.

Все это касается только относительного номера записи того курсора, который отображается в гриде. Вообще-то понятие "номер записи" весьма относительное и не отражает реального состояния таблицы или ее части, если вместо TTable исп-ся TQuery. Но даже в случае исп-я TTable без фильтрации нет никакой гарантии, что запись за номером 1 является самой первой на самом деле, т.к. с другого компа могли что-то вставить перед ней или ее же удалить.


Nikos   (2003-05-02 15:33:00) [4]

Да, именно это я хотел сказать. Если знаете как решить мою проблему, просьба написать в форум.


MsGuns   (2003-05-02 13:13:00) [5]

Что значит "не использовать таблицу" ? Может, хотел сказать, не используя TTable ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо