Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Как можно считать значение не текущей ячейки таблицы?   Найти похожие ветки 

 
dmitry1208197320 ©   (2010-02-09 20:28) [0]

Как можно считать значение не текущей ячейки таблицы, например, ячейки (1:1) - первая ячейка первого столбца.


 
Плохиш ©   (2010-02-09 22:51) [1]

В таблице, в терминах данной конференции, ячеек нет.


 
Anatoly Podgoretsky ©   (2010-02-10 00:11) [2]

И главное, не только нет, но и не предвидится.


 
dmitry1208197320 ©   (2010-02-15 15:07) [3]

Я имел ввиду под ячейкой конкретную запись, может всё-таки поможете?


 
Sergey13 ©   (2010-02-15 15:13) [4]

> [3] dmitry1208197320 ©   (15.02.10 15:07)
> может всё-таки поможете?

Как же тебе помочь, если ты за неделю!!! не удосужился F1 нажать и почитать что там написано?


 
dmitry1208197320 ©   (2010-02-15 15:27) [5]

Я читал, но ненашёл нужного ответа


 
Ega23 ©   (2010-02-15 15:38) [6]

В "таблице" нет понятия "ячейка". А также очень спорным является термин "текущая запись". Всё зависит от того, какое понятие ты вкладываешь в термин "таблица".


 
Дмитрий Белькевич   (2010-02-15 15:45) [7]

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


 
dmitry1208197320 ©   (2010-02-15 16:07) [8]

В данном понимании таблица - это файл типа *.dbf, открытый и отображаемый с помощью компонентов TDBGrid, TDataSource и TTable.
А под ячейкой таблицы я понимаю какую-то конкретную запись, например, ячейка (1:1) - первая запись первого столбца.


 
Mike Kouzmine   (2010-02-15 16:12) [9]

перейди на конкретную запись и прочитай значение первого поля


 
Сергей М. ©   (2010-02-15 16:12) [10]


> dmitry1208197320 ©   (15.02.10 16:07) [8]


Table.First; // <-- встал на первую запись в НД
Table.Fields[0].Value; // <-- обратился к первому полю записи

Грабли лови сам)


 
dmitry1208197320 ©   (2010-02-15 16:20) [11]

Спасибо, но я думал, что можно считать запись, не переходя к ней, это возможно?


 
Сергей М. ©   (2010-02-15 16:23) [12]

Невозможно.


 
Ega23 ©   (2010-02-15 16:23) [13]


> В данном понимании таблица - это файл типа *.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).


 
Ega23 ©   (2010-02-15 16:25) [14]


> Сергей М. ©   (15.02.10 16:23) [12]
> Невозможно.


Вообще-то возможно. Но это надо хорошо разбираться, что такое TDataLink и как им пользоваться.


 
Mike Kouzmine   (2010-02-15 16:48) [15]

можно положить еще один табле с аналогичными настройками и прыгать по нему куда угодно и читать


 
Ega23 ©   (2010-02-15 17:17) [16]


> можно положить еще один табле с аналогичными настройками
> и прыгать по нему куда угодно и читать


Можно. Но там надо крайне аккуратно, дабы в монопольный доступ таблицу в БД не заблокировать, ибо TTable в этом плане компонент несколько дурной и чудоватый.


 
Mike Kouzmine   (2010-02-15 17:52) [17]

Ega23 ©   (15.02.10 17:17) [16] Указать ро и читать. В конце концов - открыл - прочитал - закрыл. Чтобы наверняка.


 
Ega23 ©   (2010-02-15 18:01) [18]


> Ega23 ©   (15.02.10 17:17) [16] Указать ро и читать. В конце
> концов - открыл - прочитал - закрыл. Чтобы наверняка.


Я первый экземпляр TTable имел ввиду. Да и синхронизовывать закрытие-открытие тоже нуна...


 
Плохиш ©   (2010-02-15 19:07) [19]


> dmitry1208197320 ©   (15.02.10 16:20) [11]
>
>

Ты б задачу рассказал...

> Ega23 ©   (15.02.10 16:25) [14]

> Вообще-то возможно. Но это надо хорошо разбираться, что
> такое TDataLink и как им пользоваться.

В TDataLink содержит только часть записей из таблицы.


 
Leonid Troyanovsky ©   (2010-02-15 20:27) [20]


> dmitry1208197320 ©   (15.02.10 16:20) [11]

> Спасибо, но я думал, что можно считать запись, не переходя
> к ней, это возможно?

Lookup ?

--
Regards, LVT.


 
sniknik ©   (2010-02-15 20:50) [21]

> Lookup ?
по позиции?


 
Ega23 ©   (2010-02-16 10:20) [22]


> В TDataLink содержит только часть записей из таблицы.


В TDataLink содержится ровно то, что ты хочешь. В GridDataLink - да, видимая на экране часть строк. Но никто не мешает свой написать, в котором всё содержаться будет.


 
Плохиш ©   (2010-02-16 14:26) [23]


> Ega23 ©   (16.02.10 10:20) [22]
>
>
> > В TDataLink содержит только часть записей из таблицы.
>
>
> В TDataLink содержится ровно то, что ты хочешь.

Тут справка с тобой не согласна.

RecordCount (Eigenschaft von TDataLink)

TDataLink Siehe auch

Die Eigenschaft RecordCount gibt die Anzahl der Datens&#228;tze im internen Datensatzpuffer an, der von der Datenmenge verwaltet wird.



 
Ega23 ©   (2010-02-16 14:27) [24]


> Тут справка с тобой не согласна.


Я по-полску не разумею


 
Плохиш ©   (2010-02-16 14:52) [25]

Справка TDataLink - RecordCount  там читать...
TDataLink содержит столько записей, сколько необходимо связанному с ним визуальному компоненту. А ТGridDataLink является наследником TDataLink.


 
Ega23 ©   (2010-02-16 15:01) [26]


> TDataLink содержит столько записей, сколько необходимо связанному
> с ним визуальному компоненту


Ну и? Неужели так трудно придумать компонент, где нужны ВСЕ записи разом?
Даю подсказку: ImageList, TreeView и т.п.



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.048 c
15-1272141003
Юрий
2010-04-25 00:30
2010.08.27
С днем рождения ! 25 апреля 2010 воскресенье


15-1273573286
Дмитрий Белькевич
2010-05-11 14:21
2010.08.27
Возможно ли доступиться из JavaScript к OLE интерфейсам?


2-1267989705
Delphist
2010-03-07 22:21
2010.08.27
подключение DBGrid к SQL Server в Delphi 2010


6-1218807638
_koha
2008-08-15 17:40
2010.08.27
Падает сокет усервера на WinAPI - не могу разобраться


2-1266325693
Rail
2010-02-16 16:08
2010.08.27
как правильно указать путь к бд