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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2007, 17:03   #11
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

Работает, спасибо )))
yulia вне форума Ответить с цитированием
Старый 12.05.2007, 21:36   #12
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

begin
k:=0;
DShkola.Children.RecNo:=1;
for j:=1 to 6 do begin
DShkola.Teacher.RecNo:=j;
for i:=3 to 6 do begin
k:=k+(DShkola.Children.Fields[i+2].AsInteger*DShkola.teacher.Fields[i].AsInteger);
if (k>=DShkola.Teacher.Fields[7].AsInteger) then begin
DShkola.Children.Append;
DShkola.Children.Fields[9]:=DShkola.Teacher.Fields[0];
exit;
end;

вот какая процедура у меня в итоге получилась. Она работает, но записывает, то что мне надо в таблицу CHILDREN, добавляя новую строку. А как сделать, чтобы записывалось в туже строку из которой брались данные для подсчета, т.е. вот в эту DShkola.Children.RecNo:=1;
yulia вне форума Ответить с цитированием
Старый 14.05.2007, 07:42   #13
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Table1.RecNo:= //Перевести указатель
Table1.Delete;//Стереть строку
Table1.InsertRecord([Form2.edit1.Text,Form2.Edit2.Text.. .Все поля через ЗПТ]);//Вставить новую

P.S.:Должен быть способ и попроще.
Alex21 вне форума Ответить с цитированием
Старый 14.05.2007, 13:22   #14
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

begin
k:=0;
DShkola.Children.RecNo:=1;
for j:=1 to 6 do begin
DShkola.Teacher.RecNo:=j;
for i:=3 to 6 do begin
k:=k+(DShkola.Children.Fields[i+2].AsInteger*DShkola.teacher.Fields[i].AsInteger);
if (k>=DShkola.Teacher.Fields[7].AsInteger) then begin
DShkola.Children.Append;
DShkola.Children.Fields[9]:=DShkola.Teacher.Fields[0];
exit;
end;


Если в этой процедуре заменить строчку DShkola.Children.Append;
на строчку DShkola.Children.Edit , тогда оно у меня строку не добавляет, но записывает результат в выделенную строку, а как сделать чтобы оно записывало во все строки подряд, т.е начинало и с первой и автоматически после каждой записи переводило курсор?
yulia вне форума Ответить с цитированием
Старый 14.05.2007, 13:45   #15
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Чем неподходит то-что выше?

После Edit надо вобще-то ApplyRange;
Alex21 вне форума Ответить с цитированием
Старый 14.05.2007, 14:09   #16
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Странный у Вас алгоритм!
Append - добавляет запись в конец(!)

DShkola.Children.RecNo:=i; // переход на нужную строку
DShkola.Teacher.RecNo:=j; // переход на нужную строку
DShkola.Children.Delete; // удаляем эту строку со старыми записями
DShkola.Children.InsertRecord([DShkola.Teacher.Fields[0].text,DShkola.Teacher.Fields[1].text,DShkola.Teacher.Fields[2].text.......]); // вставляем новую

Не проверял, но в [ ] должен быть тип String
Alex21 вне форума Ответить с цитированием
Старый 14.05.2007, 15:07   #17
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

То что віше не подходит, т.к. у меня неоткуда потом заново данніе в єту строку записывать. Это надо ставить дополнительные компоненты и бросать все туда-сюда. Я потом это пробую, если больше ничего не придумаю )))

А что делает ApplyRange?
yulia вне форума Ответить с цитированием
Старый 14.05.2007, 15:09   #18
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

В том-то и дело, что мне не надо всю строку менять, а просто дописать значение в одно поле.

А алгоритм у меня странный, потому что я абсолютно ничего в этом не смыслю и с БД первый раз пришлось дело иметь. )))))
yulia вне форума Ответить с цитированием
Старый 14.05.2007, 15:12   #19
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

Я уже тут такого намутила и такими способами, что кошмар!!! Оно уже почти делает то что надо, ну конечно не до конца еще....
yulia вне форума Ответить с цитированием
Старый 14.05.2007, 15:15   #20
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

begin
for s:=1 to DShkola.Children.RecordCount do begin
DShkola.Teacher.RecNo:=1;
DShkola.Children.RecNo:=1;
k:=0;
for j:=1 to 6 do begin
k:=0;
for i:=3 to 6 do
k:=k+(DShkola.Children.Fields[i+2].AsInteger*DShkola.teacher.Fields[i].AsInteger);
//ShowMessage(inttostr(k));
if (k>=DShkola.Teacher.Fields[7].AsInteger) then begin
DShkola.Children.Edit;
DShkola.Children.Fields[9]:=DShkola.Teacher.Fields[0]; end else
DShkola.Teacher.Next;
end;
DShkola.Children.Next;
DShkola.Teacher.RecNo:=1;
end;

теперь оно у меня вот так выглядит
yulia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
непонятки с данными 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 00:13
Операции над данными в ListBox Mr.User Помощь студентам 14 23.11.2007 03:26