![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как считать значение всех полей в БД по номеру строки? [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 ?