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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2010, 13:47   #1
Марк Охман
Форумчанин
 
Аватар для Марк Охман
 
Регистрация: 05.02.2010
Сообщений: 153
По умолчанию Фиктивное изменение данных для демки

Всем привет)) есть проблема(
Написал программку, в ней на DBGrid отображается таблица из AdoQuery<--AdoConnection. В таблице данные такого типа:
100, 50, 80, 90; Нужно чтобы при нажатии кнопки эти данные изменялись следующим образом: если от 0 до 40 то изменить на С, от 40 до 80 изменить на B, от 80 до 100 - А.
Проблема в том что эти данные не должны сохраняться в таблицу, они предназначены только для демонстрации(т.е. должна быть кнопка, которая возвращает таблице первоначальный вид). Какие есть идеи?
Я начинающий web-программист) Не судите строго, плиз! Буду очень стараться!
Марк Охман вне форума Ответить с цитированием
Старый 21.11.2010, 13:56   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Сделайте копию этой таблицы и уродуйте ее в свое удовольствие...
А когда нужно будет вернуть данные в исходное состояние, очистите копию и занесите туда данные из "настоящей" таблицы.

З.Ы. Естественно, все контролы должны быть подключены к копии.
mihali4 вне форума Ответить с цитированием
Старый 21.11.2010, 14:05   #3
Марк Охман
Форумчанин
 
Аватар для Марк Охман
 
Регистрация: 05.02.2010
Сообщений: 153
По умолчанию

Можно еще подсказку плиз. Как сделать копию?
Я начинающий web-программист) Не судите строго, плиз! Буду очень стараться!
Марк Охман вне форума Ответить с цитированием
Старый 21.11.2010, 14:42   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А смысл сего действа?
Зачем изменять данные, когда проще просто сделать по исходным перерасчет через вычисляемые поля.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2010, 14:53   #5
Марк Охман
Форумчанин
 
Аватар для Марк Охман
 
Регистрация: 05.02.2010
Сообщений: 153
По умолчанию

Тоесть все поля таблицы сделать вычисляемыми?

Проблема все стоит на повестке дня (точнее вечера)))) помогите пожалуйста..)

SOS!!!
Я начинающий web-программист) Не судите строго, плиз! Буду очень стараться!

Последний раз редактировалось Марк Охман; 21.11.2010 в 23:03.
Марк Охман вне форума Ответить с цитированием
Старый 21.11.2010, 23:04   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Лови, набросал на скорую руку. Я там и ячейки раскрасил, предвидя следующий вопрос...
Вложения
Тип файла: zip test2.zip (410.2 Кб, 9 просмотров)
_SERGEYX_ вне форума Ответить с цитированием
Старый 21.11.2010, 23:17   #7
Марк Охман
Форумчанин
 
Аватар для Марк Охман
 
Регистрация: 05.02.2010
Сообщений: 153
По умолчанию

Сергей, спасибо большое.
Вы меня поняли, но проблемма в том что у меня очень большое количество столбцов(и оно иногда меняется изнутри программы, функцияпросто такая), так что вот так их дублировать не пойдет.
Даже незнаю что делать.
Нужно чтоб с нажатием кнопки они просто напоказ изменились, а потом когда опять нажму вернулись обратно. Подскажите какже быть?
Я начинающий web-программист) Не судите строго, плиз! Буду очень стараться!
Марк Охман вне форума Ответить с цитированием
Старый 22.11.2010, 00:21   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Ну, так создай эти поля динамически при запуске программы
Код:
procedure TForm1.FormActivate(Sender: TObject);
var I: Integer;
  f: TField;
begin
  q.Close;
  q.FieldDefs.Update;
  for I := 1 to q.FieldDefs.Count - 1 do //Нулевое поле автоинкрементное
//мы его трогать не будем
  begin
    f := q.FieldDefs[I].CreateField(q);
    f := TStringField.Create(q);
    f.FieldName := q.FieldDefs[I].Name + '_1';
    f.Calculated := True;
    f.DataSet := q;
    f.DisplayWidth := 10;
    f.ReadOnly := True;
  end;
  q.Open;
end;
Впрочем... сейчас исходник нарисую... лови. Так?
Вложения
Тип файла: zip test2.zip (20.4 Кб, 7 просмотров)
_SERGEYX_ вне форума Ответить с цитированием
Старый 22.11.2010, 05:25   #9
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

А транзакции?
Баламут вне форума Ответить с цитированием
Старый 22.11.2010, 08:51   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Тоесть все поля таблицы сделать вычисляемыми?
Именно. в этом случае ресурсы на новую таблицу не тратятся. Только на вычисления и выходной набор.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение данных и перенос данных из одной таб в другую Kot9ra Microsoft Office Access 13 02.07.2010 12:22
Изменение типа данных для поля Diamand Microsoft Office Access 6 04.03.2010 23:36
Пароль на изменение данных messi013 Общие вопросы Delphi 5 11.01.2010 21:43
Изменение данных в DBGrid Lion-Tiger БД в Delphi 0 16.06.2009 13:09
Изменение данных Екатерина БД в Delphi 1 24.03.2007 10:45