Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.08.2012, 12:10
rs219 rs219 вне форума
Прохожий
 
Регистрация: 01.08.2012
Сообщения: 9
Репутация: 10
По умолчанию использование цикла в базе данных для переноса значений по коду

У меня есть таблица. состоит из: имя, есть топлива, расход топлива, осталось топлива. Возможно сделать так, что бы значение из поля осталось топлива по нажатию на кнопку, переносилось в поле есть топлива. Я сделал еще одну таблицу: "код; осталось топлива." Т.е. значение из поля осталось первой таб. перноситься во вторую табл, а оттуда уже снова в первую, только в другое поле. Такое можно сделать. Вы не могли бы мне помочь?
... - остаток топлива на начало - изменение, расход топлива - остаток топлива на конец - ...

или похожее на это, возможно как то по другому, ....
Ответить с цитированием
  #2  
Старый 24.08.2012, 13:03
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

для решения такой простой задачи хватит средств sql, а возможно даже самой субд, что Вы используете.
Ответить с цитированием
  #3  
Старый 24.08.2012, 13:16
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от rs219
У меня есть таблица. состоит из: имя, есть топлива, расход топлива, осталось топлива. Возможно сделать так, что бы значение из поля осталось топлива по нажатию на кнопку, переносилось в поле есть топлива. Я сделал еще одну таблицу: "код; осталось топлива." Т.е. значение из поля осталось первой таб. перноситься во вторую табл, а оттуда уже снова в первую, только в другое поле. Такое можно сделать. Вы не могли бы мне помочь?
... - остаток топлива на начало - изменение, расход топлива - остаток топлива на конец - ...

или похожее на это, возможно как то по другому, ....
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Table2.Append;
  Table2.FieldByName('осталось топлива').AsFloat := Table1.FieldByName('осталось топлива').AsFloat;
  Table2.Post;

  Table1.Edit;
  Table1.FieldByName('есть топлива').AsFloat := Table2.FieldByName('осталось топлива').AsFloat;
  Table1.Post;
end;
Ответить с цитированием
  #4  
Старый 24.08.2012, 14:01
rs219 rs219 вне форума
Прохожий
 
Регистрация: 01.08.2012
Сообщения: 9
Репутация: 10
По умолчанию

Цитата:
Сообщение от nixel
для решения такой простой задачи хватит средств sql, а возможно даже самой субд, что Вы используете.

delphi
и access
/ На примере покажите пожалуйста.

Последний раз редактировалось rs219, 24.08.2012 в 14:03.
Ответить с цитированием
  #5  
Старый 24.08.2012, 14:46
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Примерно таким запросом:

Код:
UPDATE Table1
SET a1 = (SELECT a2 FROM Table1)
, где Table1 - имя нашей таблицы в бд, а1 - имя столбца с "осталось топлива", а2 - имя столбца с "есть топлива".

На всякий случай, при уникальности имени, можно во второй селект добавить предложение запроса WHERE Table1.Name = Table1.Name, т.е. примерно так:
Код:
UPDATE Table1
SET a1 = (SELECT a2 FROM Table1 WHERE Table1.Name = Table1.Name)

но думаю, что это будет излишним.

p.s. Так же, возможно, что в конце надо будет написать GO
но это уже зависит от того, где будете выполнять запрос.

Последний раз редактировалось nixel, 24.08.2012 в 14:51.
Ответить с цитированием
  #6  
Старый 24.08.2012, 15:29
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Неправильная изначально постановка задачи. Если какое-либо значение в БД возможно вычислить используя данные таблиц, то результат этих вычислений никогда не надо заносить в отдельную таблицу. Если нарушить это правило, то рано или поздно вы наступите на грабли рассинхронизации данных. Скорее всего у вас просто несколько неверная структура БД, вот потому и проблемы с запросом.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 24.08.2012, 16:06
rs219 rs219 вне форума
Прохожий
 
Регистрация: 01.08.2012
Сообщения: 9
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Table2.Append;
  Table2.FieldByName('осталось топлива').AsFloat := Table1.FieldByName('осталось топлива').AsFloat;
  Table2.Post;

  Table1.Edit;
  Table1.FieldByName('есть топлива').AsFloat := Table2.FieldByName('осталось топлива').AsFloat;
  Table1.Post;
end;

datamodule2.ADOTable1.FieldByName('ostatok').AsFlo at:= datamodule2.ADOTable3.FieldByName('остаток').AsFlo at;

- это строка долна пприравнять значение поля "остаток" полю "ostatok", но оно выдает ошибку, что ADOTable1. не может редактировать или всталять строки,
*???
Ответить с цитированием
  #8  
Старый 24.08.2012, 16:08
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от rs219
datamodule2.ADOTable1.FieldByName('ostatok').AsFlo at:= datamodule2.ADOTable3.FieldByName('остаток').AsFlo at;

- это строка долна пприравнять значение поля "остаток" полю "ostatok", но оно выдает ошибку, что ADOTable1. не может редактировать или всталять строки,
*???
Я что, зря написал?:
Код:
Table1.Edit;
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
rs219 (24.08.2012)
  #9  
Старый 24.08.2012, 16:21
rs219 rs219 вне форума
Прохожий
 
Регистрация: 01.08.2012
Сообщения: 9
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Я что, зря написал?:
Код:
Table1.Edit;
.........ой
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter