![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно считать значение не текущей ячейки таблицы? [D7, dBase, FoxPro]
dmitry1208197320 © (2010-02-09 20:28:00)Как можно считать значение не текущей ячейки таблицы, например, ячейки (1:1) - первая ячейка первого столбца.
Ega23 (2010-02-16 15:01:00) [1]
> TDataLink содержит столько записей, сколько необходимо связанному
> с ним визуальному компоненту
Ну и? Неужели так трудно придумать компонент, где нужны ВСЕ записи разом?
Даю подсказку: ImageList, TreeView и т.п.
Плохиш (2010-02-16 14:52:00) [2]Справка TDataLink - RecordCount там читать...
TDataLink содержит столько записей, сколько необходимо связанному с ним визуальному компоненту. А ТGridDataLink является наследником TDataLink.
Ega23 (2010-02-16 14:27:00) [3]
> Тут справка с тобой не согласна.
Я по-полску не разумею
Плохиш (2010-02-16 14:26:00) [4]
> Ega23 © (16.02.10 10:20) [22]
>
>
> > В TDataLink содержит только часть записей из таблицы.
>
>
> В TDataLink содержится ровно то, что ты хочешь.
Тут справка с тобой не согласна.
RecordCount (Eigenschaft von TDataLink)
TDataLink Siehe auch
Die Eigenschaft RecordCount gibt die Anzahl der Datensätze im internen Datensatzpuffer an, der von der Datenmenge verwaltet wird.
Ega23 (2010-02-16 10:20:00) [5]
> В TDataLink содержит только часть записей из таблицы.
В TDataLink содержится ровно то, что ты хочешь. В GridDataLink - да, видимая на экране часть строк. Но никто не мешает свой написать, в котором всё содержаться будет.
sniknik (2010-02-15 20:50:00) [6]> Lookup ?
по позиции?
Leonid Troyanovsky (2010-02-15 20:27:00) [7]
> dmitry1208197320 © (15.02.10 16:20) [11]
> Спасибо, но я думал, что можно считать запись, не переходя
> к ней, это возможно?
Lookup ?
--
Regards, LVT.
Плохиш (2010-02-15 19:07:00) [8]
> dmitry1208197320 © (15.02.10 16:20) [11]
>
>
Ты б задачу рассказал...
> Ega23 © (15.02.10 16:25) [14]
> Вообще-то возможно. Но это надо хорошо разбираться, что
> такое TDataLink и как им пользоваться.
В TDataLink содержит только часть записей из таблицы.
Ega23 (2010-02-15 18:01:00) [9]
> Ega23 © (15.02.10 17:17) [16] Указать ро и читать. В конце
> концов - открыл - прочитал - закрыл. Чтобы наверняка.
Я первый экземпляр TTable имел ввиду. Да и синхронизовывать закрытие-открытие тоже нуна...
Mike Kouzmine (2010-02-15 17:52:00) [10]Ega23 © (15.02.10 17:17) [16] Указать ро и читать. В конце концов - открыл - прочитал - закрыл. Чтобы наверняка.
Ega23 (2010-02-15 17:17:00) [11]
> можно положить еще один табле с аналогичными настройками
> и прыгать по нему куда угодно и читать
Можно. Но там надо крайне аккуратно, дабы в монопольный доступ таблицу в БД не заблокировать, ибо TTable в этом плане компонент несколько дурной и чудоватый.
Mike Kouzmine (2010-02-15 16:48:00) [12]можно положить еще один табле с аналогичными настройками и прыгать по нему куда угодно и читать
Ega23 (2010-02-15 16:25:00) [13]
> Сергей М. © (15.02.10 16:23) [12]
> Невозможно.
Вообще-то возможно. Но это надо хорошо разбираться, что такое TDataLink и как им пользоваться.
Ega23 (2010-02-15 16:23:00) [14]
> В данном понимании таблица - это файл типа *.dbf, открытый
> и отображаемый с помощью компонентов TDBGrid, TDataSource
> и TTable.
> А под ячейкой таблицы я понимаю какую-то конкретную запись,
> например, ячейка (1:1) - первая запись первого столбца.
>
Ну это уже более конкретная информация.
Значит так.
1. В DBGrid нет никаких данных. DBGrid отображаетвидимую в данный момент область значений набора данных.
2. Все данные лежат в наборе данных (в твоём случае - TTable)
3. У TTable есть понятие "активная запись" - для упрощения - "строка таблицы".
4. Все данные у стандартных TDataSet (потомком которого является TTable) оперируют понятием "активной записи".
5. Поэтому, если просуммировать всё вышеперечисленное, тебе нужно:
5.1. Запомнить текущую позицию TTable
5.2. Встать на нужную тебе запись (в твоём случае - первую).
5.3. Считать нужное тебе значение поля (в твоём случае - первого)
5.4. Вернуть текущую запись туда "где було".
6. Поскольку DBGrid при этом будет перерисован, как будто его прокрутили сначала вперёд, потом назад, надо отключить рассылку событий TTable визуальным компонентам, а потом включить её обратно.
7. В итоге код будет выглядеть так:
var
bm : TBookmark;
begin
if (not Table1.Active) or (Table1.IsEmpty) then Exit;
Table1.DisableControls;
try
bm := Table1.GetBookmark;
Table1.First;
ShowMessage(Table1.Fields[0].AsString);
Table1.GotoBookmark(bm);
Table1.FreeBookmark(bm);
finally
Table1.EnableControls;
end;
end;
P.S. Код писал прямо тут по-памяти, возможны не те названия методов (FreeBookmark или releaseBookmark).
Сергей М. (2010-02-15 16:23:00) [15]Невозможно.
dmitry1208197320 (2010-02-15 16:20:00) [16]Спасибо, но я думал, что можно считать запись, не переходя к ней, это возможно?
Сергей М. (2010-02-15 16:12:00) [17]
> dmitry1208197320 © (15.02.10 16:07) [8]
Table.First; // <-- встал на первую запись в НД
Table.Fields[0].Value; // <-- обратился к первому полю записи
Грабли лови сам)
Mike Kouzmine (2010-02-15 16:12:00) [18]перейди на конкретную запись и прочитай значение первого поля
dmitry1208197320 (2010-02-15 16:07:00) [19]В данном понимании таблица - это файл типа *.dbf, открытый и отображаемый с помощью компонентов TDBGrid, TDataSource и TTable.
А под ячейкой таблицы я понимаю какую-то конкретную запись, например, ячейка (1:1) - первая запись первого столбца.
Дмитрий Белькевич (2010-02-15 15:45:00) [20]Начни с терминов - объясни, что такое в твоём понимании таблица, дальше может что-то подскажут.