Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2012, 13:32   #1
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
Вопрос Как в Dataset создать дубликат колонки?

Здравствуйте!
Подскажите, пожалуйста - как в FIBDataset после получения данных из БД создать ещё одну колонку содержащую копию одной из колонок полученных из БД. Типа получили Column1,Column2,Column3 нужно создать ColumnCopy со всем данными Column3. Можно этот как-то сделать быстрыми указаниями без присвоения значения каждой строке??
delphicoding вне форума Ответить с цитированием
Старый 16.03.2012, 18:57   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Выбирай
1. TcalclulateFiled
2 а почему бы не получать с сервера одно поле дважды (трижды и т.д.)
Код:
select fileld1 as col1, field1 as col2, ..........
3 зачем человеку видеть одно и тоже два раза?!
4. просто добавить колонку в Grid и указать ему поле(привязать к нужному полю еще раз).
Код:
Dbgrid.columns.add // и прочее с этим связанное
Начинать лучше с последних вариантов.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 16.03.2012 в 19:05.
evg_m вне форума Ответить с цитированием
Старый 16.03.2012, 21:46   #3
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

1. Не решает или не понял как этим решать задачу...
2. Очевидно, уже так сделал, но это некрасиво.
3. Он видит только одно один раз. Речь не о Grid, а о Dataset.
4. Ну так если колонка связана с Dataset, то юзер изменив значение 2раза в итоге на изначальное - значение в Dataset обновится так же 2раза и Dataset не поймёт, что значение аналогично изначальному. (Хотя тут можно попробовать без ImmediatePost, но это как-то не надёжно, хотелось бы данные содержать в Dataset.)

Так в Open Dataset никак нельзя добавить клон колонки с данными?
delphicoding вне форума Ответить с цитированием
Старый 16.03.2012, 22:11   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Очевидно, уже так сделал, но это некрасиво.
Это как раз для вашего случае, при чем здесь красота?
Цитата:
хотелось бы данные содержать в Dataset
В DataSet содержатся только колонки из запроса плюс калькулируемые поля (эти условно, они вычисляются каждый раз)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.03.2012, 22:45   #5
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Цитата:
Это как раз для вашего случае, при чем здесь красота?
При том, что лишние (дублирующиеся) данные передаются два раза - это очень тупо.
delphicoding вне форума Ответить с цитированием
Старый 16.03.2012, 22:46   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
данные передаются два раза - это очень тупо
Тогда свой DataSet клепайте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.03.2012, 15:06   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

если исходная задача
Цитата:
значение в Dataset обновится так же 2раза и Dataset не поймёт, что значение аналогично изначальному.
то
Tfield.OldValue Represents the original value of the field (as a Variant).

и почему нельзя разрешить для БД такое обновление (на точно такое же значение)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 17.03.2012 в 15:09.
evg_m вне форума Ответить с цитированием
Старый 18.03.2012, 20:13   #8
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Цитата:
Tfield.OldValue Represents the original value of the field (as a Variant).
В навороченном cxGrid такого нет, а Вы откуда это взяли?

Цитата:
и почему нельзя разрешить для БД такое обновление (на точно такое же значение)
Задача сложнее, чем я описываю, чтобы людей слишком не грузить. В данном случае в зависимости от изменения значения в данном поле нужно выполнять одно из действий: insert,update,delete. Например если было 1 и стало 10 то запись добавляется, если было 1 стало -10 запись удаляется, если было 1 стало до 9 запись обновляется. Поэтому просто обновлять каждую запись нельзя.
delphicoding вне форума Ответить с цитированием
Старый 18.03.2012, 20:21   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

OldValue это свойство TField и не имеет отношения ни к какому гриду. И мало вероятно, что с него что-то можно вытащить, поскольку
Цитата:
the OldValue property is only usable when the data is accessed using a TClientDataSet component or cached updates is enabled.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.03.2012, 21:43   #10
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

CachedUpdates включить можно в Dataset! Это даст что-то?
delphicoding вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Dataset - как создать новую пустую запись? delphicoding Общие вопросы Delphi 4 11.09.2011 13:59
Строку из одного DataSet в другой DataSet Abbath1349 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 22.05.2011 19:26
Создать макрос, разбивающий текст на колонки Vova1987 Microsoft Office Word 1 15.10.2010 14:37
Проверка на дубликат в базе postaveche БД в Delphi 8 31.08.2010 09:18
Дубликат окна на Delphi monkey1631 Помощь студентам 2 23.04.2010 13:22