Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 08.05.2007, 16:36   #1
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
Вопрос Операции над данными

Подскажите, пожалуйста, как сделать так, чтобы данные брались из одной таблицы, над ними производились математические действия, результат сравнивался с данными из другой таблицы и в зависимости от результата сравнения в третью таблицу заносились определенные данные. Спасибо.
yulia вне форума Ответить с цитированием
Старый 08.05.2007, 16:50   #2
Killer_djon
Форумчанин
 
Регистрация: 26.04.2007
Сообщений: 143
По умолчанию

какие данные из каких таблиц и какие операции, точнее пожалуйста если можно...
Свободу клавиатурным самураям...
Killer_djon вне форума Ответить с цитированием
Старый 08.05.2007, 23:55   #3
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

У меня база данных InterBase. В одной таблице находятся числа, их надо умножить на числа из другой таблицы, сложить и сравнить с числом из другой таблицы. Потом в зависимости от результата надо чтобы данные из одной таблицы автоматически заносились в другую таблицу на нужное место.
yulia вне форума Ответить с цитированием
Старый 10.05.2007, 10:29   #4
Killer_djon
Форумчанин
 
Регистрация: 26.04.2007
Сообщений: 143
По умолчанию

т.е. если я вас правильно понял, то у вас есть 4 таблицы. Взять числа с первой таблицы перемножить их на числа со второй таблицы, сложить с числами из третьей таблицы, сравнить с числами из четвертой таблицы... а дальше с чем сравнивать и куда записывать какие результаты...
Свободу клавиатурным самураям...
Killer_djon вне форума Ответить с цитированием
Старый 10.05.2007, 18:52   #5
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

У меня есть таблицы CHILDREN, TEACHER, MARKS, COEF. Мне надо числа из таблицы MARKS умножить на числа из таблицы KOEF и то что получилось сложить. Потом результат сравнить с числом из таблицы TEACHER и если оно больше или равно, то соответствующего преподавателя занести в таблицу CHILDREN.
yulia вне форума Ответить с цитированием
Старый 11.05.2007, 07:53   #6
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Используйте 4 Table, 4 DataSet, 4 DBGrid.

Для выбора номера строки в таблице используйте:
Table_CHILDREN.RecNo:= i ;
Table_MARKS.Fields[N]) - значение N столбца, i строки.
//////////////////////////////////////
Для мат. операцийнапример)
var
K:integer;
..
begin
// Для расчетов выбираем первые строки БД
Table_CHILDREN.RecNo:=1;
Table_TEACHER.RecNo:=1;
Table_MARKS.RecNo:=1;
Table_COEF.RecNo:=1;
K:=strtoint(Table_MARKS.Fields[номер поля])*strtoint(Table_KOEF.Fields[номер поля]);
// сравниваем произведение на превышение
if К>strtoint(Table_TEACHER.Fields[нгомер поля]) then
begin
// если то записываем
Table_KOEF.Fields[нгомер поля]:=inttostr(k);
end;
end;

Пример показан для первой строки!!! Для всех записей добавить цикл for i и переводить RecNo:=i во всех таблицах.
Alex21 вне форума Ответить с цитированием
Старый 11.05.2007, 07:57   #7
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от Alex21 Посмотреть сообщение
Для выбора номера строки в таблице используйте:
Table_CHILDREN.RecNo:= i ;
Table_MARKS.Fields[N]) - значение N столбца, i строки.
Читать: Первая и Вторая таблы с одним именем!!!
Table_CHILDREN.RecNo:= i ;
Table_CHILDREN.Fields[N])
Alex21 вне форума Ответить с цитированием
Старый 11.05.2007, 15:19   #8
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

Спасибо большое!!! Буду пробовать... ))))
yulia вне форума Ответить с цитированием
Старый 12.05.2007, 14:35   #9
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

K:=strtoint(Table_MARKS.Fields[номер поля])*strtoint(Table_KOEF.Fields[номер поля]);

А что делать, если оно мне в этой строчке выдает:

Incompatible types: 'String' and 'TField'

????
yulia вне форума Ответить с цитированием
Старый 12.05.2007, 16:32   #10
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

K:=Table_MARKS.Fields[номер поля].AsInteger*Table_KOEF.Fields[номер поля].AsInteger;

Не проверял, но должно работать, НО только в том случае, если тип поля числовой.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
непонятки с данными KiSH333 БД в Delphi 5 01.09.2008 08:36
Файл с данными werser БД в Delphi 1 24.05.2008 23:40
сравнение с данными в таблице Apo БД в Delphi 5 31.03.2008 19:24
Обмен данными по сети Altera Работа с сетью в Delphi 2 23.02.2008 01:13
Операции над данными в ListBox Mr.User Помощь студентам 14 23.11.2007 04:26


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS