Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему появляется ошибка "Dataset not in edit or inser mode" [D6, Paradox]


MakedoneZ ©   (2005-01-31 17:40:00) 

Почму выдает ошибку "Dataset not in edit or inser mode"
Это из-за Table.Post,да?
Он добавляет последнее значение введенное в TDBGrid,но все равно выдает ошибку.
Как исправить?

procedure TfrmWomen.btnSaveAndCloseClick(Sender: TObject);

begin

 Table.Post;
 {Освобождаем ресурсы}
 Table.Close;
 Table.Free;
 DataSource.Free;
 HALT;
end;


MakedoneZ   (2005-01-31 21:41:00) [1]

Спасибо.


Anatoly Podgoretsky   (2005-01-31 21:02:00) [2]

MakedoneZ ©   (31.01.05 20:42) [7]
Это просто пример где грубость, а где нет.

Уже лучше, особенно if. Нудно ли остальное или нет, сказать можешь только ты, но скрывая подробности, ты возможно не получишь более правильного решения.
Вероятнее всего
Table.Close;
Table.Free;
DataSource.Free;
Лишнее, поскольку ты далее закрываешь приложение и все эти действия будут выполнены автоматически.

а те кто отвечают говорята нечего сказать, поскольку подробности скрыты и это единственно корректный ответ, другой же гадания с определенными последствиями. Я бы задумался почему мне так сказали, видимо из-за того, что я где то неправ или не конкретен и мне просто нечего сказать более конкретного. Ну далее по разному, или я попытаюсь уточнить информацию, дать объяснение или уйду обиженным и голодным.

Насчет орфографии, да не по этому я написал это, а чтобы продемонстрировать, как на наезд могут реагировать. Так что считай или шуткой или учебой, по вкусу.


MakedoneZ   (2005-01-31 20:42:00) [3]

Anatoly Podgoretsky >
Мне нравиться ваш подход к делу :-) :-)
Да вы правы,тут я лишнего сказал,просто вспылчивый.

Halt заменил на Application.Terminate и добавил if( Table.State in [dsEdit, dsInsert] ) then
Table.Post;
А остальное поверьте нужно.

Извиняюсь.
Просто понимаете...часто я задаю вопрос,а те кто отвечают говорят "грубо,примитивно,почему так почему этак",так и неответив на вопрос.
На сколько бы кто-то не был умным,всегда найдеться кто-то умнее.
И что если он будет над вами смеяться? Будет ли вам приятно?

PS. А насчет орфографии я живу в Азербайджане.
   И очевидно Русский язык знаю неважно.


Anatoly Podgoretsky   (2005-01-31 20:24:00) [4]

Нет мы хотели услышать причины такого странного кода, вот тогда может быть подскали правильное решение. На мой взгляд здесь только одна строчка нормальная Table.Close;, но это так предположение, может так и нужно, но весьма сомнительно - особенно HALT, прямой путь к разного рода неприятностям.
Хотя если не хочешь рассказывать, то не рассказывай, а продолжай наезды, в то время когда народ к тебе с душой отнесся.
Можно и мне наезд? А то несправедливо. делитантнадо писать так дилетант.


MakedoneZ   (2005-01-31 19:58:00) [5]

Я делитант! Не хрена не умею! И вообще не имею права называться программистом. В Delphi вообще ничего не понимаю. Мое дело печатать документы и то не редактировать,а просто набирать текст.Так просто разбираюсь в компьютерах.
Это хотели слышать. Теперь приятно?


msguns   (2005-01-31 18:40:00) [6]

Каким образом Post освобождает ресурсы ?
И зачем free ? Да еще два раза ?

Очень напоминает как убивали Гришку Распутина: сначала обкормили стрихнином, затем изрешетили пулями, а потом уже бросили под лед в Неву. И все равно, по заключению врачей, он жил еще под водой довольно долго.


MakedoneZ   (2005-01-31 18:20:00) [7]

Огромное спасибо!


Соловьев   (2005-01-31 18:02:00) [8]


> а вместо Halt лучше Application.Terminate, хотя тоже грубо

Тут все грубо :)
где блок try?
Какой смысл генерить таблицу? Уж лучше TQuery.


Desdechado   (2005-01-31 17:58:00) [9]

Post нужен только после Edit или Insert
поэтому поставь проверку
if( Table.State in [dsEdit, dsInsert] ) then
 Table.Post;
а вместо Halt лучше Application.Terminate, хотя тоже грубо


Наверх

Титульная страница Поиск, карта сайта Написать письмо