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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2009, 21:12   #1
EugeneIsmatulin
Пользователь
 
Аватар для EugeneIsmatulin
 
Регистрация: 24.05.2009
Сообщений: 64
Вопрос Массив and Таблица

Есть таблица Нагрузки с полями (предмет, общее кол-во часов по предмету и кол-во часов в неделю), а также есть массив в котором собранно количество предметов из DBLokupComboBox'сов, как можно при нажатии на кнопку сравнить этот получившийся массив с этой таблицей.
Например в массиве у нас есть запись Литература = 6 то есть это 6 повторений и нам нужно умножит на 2 часа т.к. 1 предмет равен 2 часа, получилось 12 часов и он ищет в таблице Нагрузки предмет "Литература" и сравнивает у него в количество часов в неделю с количеством часов из массива и выводит сообщение что Литература у вас больше часов в расписании чем в нагрузке, а если меньше или равно, то отнимает из общего кол-ва часов по предмету, и так по каждому предмету из массива...
EugeneIsmatulin вне форума Ответить с цитированием
Старый 17.06.2009, 22:36   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Так как писал предыдущий код собирания значений из DBLookupComboBox'ов, скажу что в массиве значения имеют такой вид:
Литература=6 (без пробелов)

Попробую написать код, потестить сам не смогу, т.к. данной таблицы у меня нет.

Допустим, что массив объявлен в секции private вот так:
Код:
private
  a: array of string;
Как я там писал, только объявлял в секции var локально к процедуре заполнения массива.
Еще будем считать, что таблица Нагрузки - Table1.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 i, j: integer;
 Predmet: string;     //Название предмета в массиве
 HoursPredmets: byte; //Время предметов в неделю - Число после равно * 2
begin        
 if Length(a) <> 0 then
 begin
  for i := 0 to Length(a) - 1 do
  begin                    
   Predmet := Copy(a[i], 1, Pos('=', a[i]) - 1); 
   HoursPredmets := StrToInt(Copy(a[i], Pos('=', a[i]) + 1, Length(a[i]));
   HoursPredmets := NPredmets * 2;  
   
   Table1.First;
   for j := 0 to Table1.RecordCount - 1 do  
   begin
    if Predmet = Table1.FieldByName('Predmet').AsString then    //Ввести вместо 'Predmet' настоящее имя поля
    begin
     if HoursPredmets > Table1.FieldByName('HoursPerWeek').AsInteger then  //'HoursPerWeek' - часы в неделю в таблице, тоже заменить
      ShowMessage(Predmet + ' у вас больше часов в расписании чем в нагрузке.')
     else
      Table1.FieldByName('HoursPerWeek').AsInteger := Table1.FieldByName('HoursPerWeek').AsInteger - HoursPredmets;
     Break;
    end;
    Table1.Next;
   end;
  end;                                               
 end;
end;
Возможно я что-то пропустил... Писал без делфи.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 18.06.2009, 05:22   #3
EugeneIsmatulin
Пользователь
 
Аватар для EugeneIsmatulin
 
Регистрация: 24.05.2009
Сообщений: 64
По умолчанию

Всё работает, но как сделать чтобы он сначало проверял всё а потом отнимал у всех, а то при повторном нажатии на кнопку где ошибка он пропускает а у всех отнимет...

Последний раз редактировалось EugeneIsmatulin; 18.06.2009 в 07:33.
EugeneIsmatulin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблица в C# (не БД) mopozoff Общие вопросы .NET 6 15.11.2015 00:15
таблица тася Microsoft Office Excel 17 25.01.2009 00:29
Таблица Настенька..Блонди Помощь студентам 3 07.01.2009 18:16
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06
Таблица frutty Компоненты Delphi 1 07.04.2008 09:29