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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2013, 19:04   #1
anonimka
 
Регистрация: 24.05.2010
Сообщений: 3
По умолчанию Аналитическая модель системы реального времени

Выдает ошибку на 4 строке
Table:cannot perform this operation on a closed dataset
Помогите пожалуйста
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Last;
For i:=Table1.recordCount downto 1 do
Table1.Delete;
Randomize;
i:=1;
Napr1:=StrToInt(Form1.Edit1.Text);
Napr2:=StrToInt(Form1.Edit2.Text);
Napr3:=StrToInt(Form1.Edit3.Text);
Nap1:=Random(900);
Nap2:=Random(870);
Nap3:=Random(670);
Puti:=Random(672);
While (i<>Nap1) and (i<>Nap2) and (i<>Nap3) and (i<>Puti) and (i<1440)do
        begin
        i:=i+1;
        Form1.Edit5.Text:=IntToStr(i);
        Form1.Edit5.Update;
        Form1.Table1.Insert;
        Form1.DBEdit1.Text:=floatToStr(Round(i/60));
        Form1.DBEdit2.Text:=Form1.Edit1.Text;
        Form1.DBEdit3.Text:=Form1.Edit2.Text;
        Form1.DBEdit4.Text:=Form1.Edit3.Text;
        Form1.Table1.Post;
        Form1.Edit4.Text:=IntTostr(StrToInt(Form1.Edit4.Text)+random(2));
        Form1.Edit4.Update;
        Form1.DbChart1.Update;
        end;
If i=Nap1 then
        begin
        If i mod 60>=10 then Form1.Memo1.Lines.Add(IntToStr(i div 60)+':'+IntTostr(i mod 60)+' Ïîëîìêà íà ïåðâîì íàïðàâëåíèè') else Form1.Memo1.Lines.Add(IntToStr(i div 60)+':0'+IntTostr(i mod 60)+' Ïîëîìêà íà ïåðâîì íàïðàâëåíèè');
        Form2.Visible:=true;
        Form2.Label1.Caption:='Ïîëîìêà íà ïåðâîì íàïðàâëåíèè';
        Form1.Edit1.Text:='11';
        i:=i+1;
        Form1.Edit5.Text:=IntToStr(i);
        Form1.Edit5.Update;
        Form1.Table1.Insert;
        Form1.DBEdit1.Text:=floatToStr(i/60);
        Form1.DBEdit2.Text:=Form1.Edit1.Text;
        Form1.DBEdit3.Text:=Form1.Edit2.Text;
        Form1.DBEdit4.Text:=Form1.Edit3.Text;
        Form1.Table1.Post;
        Form1.Edit4.Text:=IntTostr(StrToInt(Form1.Edit4.Text)+random(2));
        Form1.Edit4.Update;
        Form1.DbChart1.Update;
        end;
If i=Nap2 then
        begin
        If i mod 60>=10 then Form1.Memo1.Lines.Add(IntToStr(i div 60)+':'+IntTostr(i mod 60)+' Ïîëîìêà íà âòîðîì íàïðàâëåíèè') else Form1.Memo1.Lines.Add(IntToStr(i div 60)+':0'+IntTostr(i mod 60)+' Ïîëîìêà íà âòîðîì íàïðàâëåíèè');
        Form2.Visible:=true;
        Form2.Label1.Caption:='Ïîëîìêà íà âòîðîì íàïðàâëåíèè';
        Form1.Edit2.Text:='7';
        i:=i+1;
        Form1.Edit5.Text:=IntToStr(i);
        Form1.Edit5.Update;
        Form1.Table1.Insert;
        Form1.DBEdit1.Text:=floatToStr(i/60);
        Form1.DBEdit2.Text:=Form1.Edit1.Text;
        Form1.DBEdit3.Text:=Form1.Edit2.Text;
        Form1.DBEdit4.Text:=Form1.Edit3.Text;
        Form1.Table1.Post;
        Form1.Edit4.Text:=IntTostr(StrToInt(Form1.Edit4.Text)+random(2));
        Form1.Edit4.Update;
        Form1.DbChart1.Update;
        end;
If i=Nap3 then
        begin
        If i mod 60>=10 then Form1.Memo1.Lines.Add(IntToStr(i div 60)+':'+IntTostr(i mod 60)+' Ïîëîìêà íà òðåòüåì íàïðàâëåíèè') else Form1.Memo1.Lines.Add(IntToStr(i div 60)+':0'+IntTostr(i mod 60)+' Ïîëîìêà íà òðåòüåì íàïðàâëåíèè');
         Form2.Visible:=true;
        Form2.Label1.Caption:='Ïîëîìêà íà òðåòüåì íàïðàâëåíèè';
        Form1.Edit3.Text:='8';
        i:=i+1;
        Form1.Edit5.Text:=IntToStr(i);
        Form1.Edit5.Update;
        Form1.Table1.Insert;
        Form1.DBEdit1.Text:=floatToStr(i/60);
        Form1.DBEdit2.Text:=Form1.Edit1.Text;
        Form1.DBEdit3.Text:=Form1.Edit2.Text;
        Form1.DBEdit4.Text:=Form1.Edit3.Text;
        Form1.Table1.Post;
        Form1.Edit4.Text:=IntTostr(StrToInt(Form1.Edit4.Text)+random(2));
        Form1.Edit4.Update;
        Form1.DbChart1.Update;
        end;
If i=Puti then
        begin
        If i mod 60>=10 then Form1.Memo1.Lines.Add(IntToStr(i div 60)+':'+IntTostr(i mod 60)+' Ïåðåáîé ýëåêòðè÷åñòâà') else Form1.Memo1.Lines.Add(IntToStr(i div 60)+':0'+IntTostr(i mod 60)+' Ïåðåáîé ýëåêòðè÷åñòâà');
        Form3.Visible:=true;
        i:=i+1;
        Form1.Edit5.Text:=IntToStr(i);
        Form1.Edit5.Update;
        Form1.Table1.Insert;
        Form1.DBEdit1.Text:=floatToStr(i/60);
        Form1.DBEdit2.Text:=Form1.Edit1.Text;
        Form1.DBEdit3.Text:=Form1.Edit2.Text;
        Form1.DBEdit4.Text:=Form1.Edit3.Text;
        Form1.Table1.Post;
        Form1.Edit4.Text:=IntTostr(StrToInt(Form1.Edit4.Text)+random(2));
        Form1.Edit4.Update;
        Form1.DbChart1.Update;
        end;
If i=1440 then Form1.Memo1.Lines.Add('Ñóòêè çàâåðøåíû');
end
anonimka вне форума Ответить с цитированием
Старый 21.05.2013, 09:20   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, вы текст ошибки перевести на русский не пробовали?!
Текст звучит так: "невозможно выполнить операцию на закрытом наборе данных (dataset)"
Как устранить ошибку? Правильно, нужно предварительно ОТКРЫТЬ датасет! (т.е. сделать Table1.Open; )

во-вторых, в методах таблицы есть возможность одной командой удалить сразу все записи:
Код:
Table1.EmptyTable;
Цитата:
TTable.EmptyTable
Deletes all records from the table.

procedure EmptyTable;

Description
The EmptyTable method deletes all records from the database table specified by the DatabaseName and TableName properties.

Note: Deletion of records can fail if the user lacks sufficient privileges to perform the delete operation.
ну и в третьих, забудьте Вы про эту антикварнут TTable! Откройте для себя ADO и запросы к БД!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Системы реального времени Nelli22 Общие вопросы C/C++ 15 21.01.2015 19:11
(Assembler) Реализовать модель часов реального временни INGBI Помощь студентам 1 07.12.2011 22:08
Отладчик реального времени Dimaz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 30.03.2011 08:57
CMOS и часы реального времени. stVadi Помощь студентам 0 28.02.2011 20:59
Кнут-Моррис-Пратт для реального времени >dodger< Помощь студентам 0 25.12.2009 22:05