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

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

Нужно добавить в DBGrid поле не содержащееся в Recordset [D7, MSSQL]


Страницы:   1 2

Йурий ©   (2003-09-16 12:12:00) 

Такая проблема, мне нужно добавить поле в DBGrid не связанное с конкретным полем reordset, вычесляемое не подойдет...
Скажем, после открытия ADOQuery я вычисляю значения для этого поля один раз и они(значения) существуют до следующего открытия, а не как в вычисляемом поле вычесляются при каждой отрисовке данных...
На это поле нужно накладывать фильтры, сортировать на клиенте, с вычисляемыми это не проходит...
Спасибо!


Йурий   (2003-09-16 14:54:00) [1]

А где взять?


Nikolay M.   (2003-09-16 14:49:00) [2]

Вообще - библиотека RxLib, а конкретно для Д7 - в библиотеке JEDI, например.


Йурий   (2003-09-16 14:47:00) [3]

А где взять RxMemoryData?


Nikolay M.   (2003-09-16 14:11:00) [4]


> икать по нему

:))) LOL :)

По сабжу:
ClientDataSet, RxMemoryData/MemoryTable?


Йурий   (2003-09-16 14:04:00) [5]

сортировать еще надо, икать по нему...


Nikolay M.   (2003-09-16 13:58:00) [6]

Проблема только в том, чтобы фильтровать некоторое трудновычислямое поле не клиенте? Ну так а OnFilterRecord - не выход?


Йурий   (2003-09-16 13:47:00) [7]

Временная таблица конечно выход, но как-бы было здорово создавать дополнит. поля на клиенте... :)


Hooch   (2003-09-16 13:43:00) [8]

если смущает явное создание временной таблицы, можно "завуалировать"

adoDataSet.Commandtext =
"DECLARE TABLE @Data(....) "+
"INSERT INTO @Data ... " +
"SELECT * FROM @Data..."
:-)


Sandman25   (2003-09-16 13:41:00) [9]

[19] Йурий (16.09.03 13:34)

Так если у Вас и так временная таблица, так в чем проблема. Пускай себе записывает обратно в нее? Кстати, с чего Вы взяли, что сервер нужно беречь? Обычно его используют по максимуму, чтобы не нагружать клиента и сеть. Не на каждом рабочем месте стоит PentiumIV :)


Йурий   (2003-09-16 13:36:00) [10]

Узнать бы еще как этот recordset создавать? :)


Йурий   (2003-09-16 13:34:00) [11]

Он, по сути, так и работает, поскольку запрос сложный и все в результате берется из временной таблицы... Но он же все равно собирается во временную таблицу сохранить, а держать ее в памяти неохото...


Sandman25   (2003-09-16 13:33:00) [12]

[17] ZrenBy © (16.09.03 13:27)

Точно! Можно создавать какие угодно поля и не беспокоиться об их сохранении на сервер...


ZrenBy   (2003-09-16 13:27:00) [13]

Все элементарно делается классическим методом -
использованием временных таблиц

if(object_id("tempdb..#temp_M") is not null)drop table #temp_M
create table #temp_M (
M_ID int,
. . .
Z_1 smallint,
Z_2 smallint
)

insert into #temp_M
select
M_ID,
. . .
Z_1 = cast(0 as smallint),
Z_2 = cast(0 as smallint)
from . . .
left outer join
. . .
where
. . .
order by
. . .

select * from #temp_M


Йурий   (2003-09-16 13:24:00) [14]

Во! А ктонить структуру _recordset знает? Может создавать _recordset на клиенте и присваивать ADOQuery?


Йурий   (2003-09-16 13:21:00) [15]

В том-то и проблема, если на SQL вычислять сильногрузит сервак, поскольку запросец нехилый... Похоже решения к сож. пока нет... Эх-хе-хе


Sandman25   (2003-09-16 13:19:00) [16]

Йурий

А возможно ли вычислить значение этого поля в SQL? В чем смысл поля?


Sandman25   (2003-09-16 13:17:00) [17]

[9] Nikolay M. © (16.09.03 13:10)

Массив в памяти ему не подойдет. Ему же фильтровать и сортировать по этому полю надо.


Йурий   (2003-09-16 13:17:00) [18]

Nikolay M. © Не, другое(а что кроме вычисляемых) все перепробывал, ничо не подходит поскольку надо ставить фильтры, сортировать на клиенте по этому полю...


Sandman25   (2003-09-16 13:12:00) [19]

>И еще, при изметнении, он попытается отправить все это на сервер... Т.е. сохранить...

Естественно. Получается, что надо либо использовать вычисляемое поле, либо CashedUpdates := True (если такое есть у ADOQuery).

А возможно ли вычислить значение этого поля в SQL? В чем смысл поля?


Йурий   (2003-09-16 13:11:00) [20]

Вот код...
ADOQuery1.First;
for i:=1 to ADOQuery1.RecordCount do
begin
DataSource1.Edit;
ADOQuery1new_field.AsInteger:=i;
ADOQuery1.Next;
end;
Он пытается сохранить все это на сервак, а поле-то виртуальное...


Страницы:   1 2

Наверх

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