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

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

Как можно считать значение не текущей ячейки таблицы? [D7, dBase, FoxPro]


Страницы:   1 2

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]

Начни с терминов - объясни, что такое в твоём понимании таблица, дальше может что-то подскажут.


Страницы:   1 2

Наверх

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