Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.07 c
15-1269453084
SergD
2010-03-24 20:51
2010.08.27
Экземпляр класса


2-1273316321
FIL-23
2010-05-08 14:58
2010.08.27
как добавить поле в индифицирующую колонку


2-1265924438
azatsh
2010-02-12 00:40
2010.08.27
pointer to cardinal or to longint ?


15-1269675632
Игорь
2010-03-27 10:40
2010.08.27
Джеки Чан в рекламе АВ Касперского


15-1272460353
Amoeba_
2010-04-28 17:12
2010.08.27
Академики шарлатаны. ФО РАН посвящается.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский