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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2007, 13:34   #1
nataly_ukr
Пользователь
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию Корректировка БД

Начала новый проект Создала базу в DatabaseDiskTop
Нужно записать новое значение реквизита
Код:
 rsum:=0;
       Form4.Table3.Active:=true;
       Form4.Table3.Edit;
       Form4.Table3.First;
        For i:=1 to Form4.Table3.RecordCount do
         begin
                 rsum:=Form4.Table3.FieldByName('ves').AsFloat;
                   Form4.Table3.FieldByName('cena').AsFloat:=rsum;
          Form4.Table3.Next;
             end;
           Form4.Table3.Post;
Выдает ошибку Table Dataset not in edit or insert mode Понимаю ошибку, но не пойму что не так , причем на любой массив из БД одна и таже ошибка. DBNavigator исправляет все нормально . Может в DatabaseDiskTop при создании что-то нарушила

Последний раз редактировалось Alex21; 07.11.2007 в 14:18. Причина: оформляете код с использованием тегов #code
nataly_ukr вне форума Ответить с цитированием
Старый 07.11.2007, 13:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию Добавлю от себя

АПробуй так:
Код:
Form4.Table3.Active:=true;
Form4.Table3.First;
For i:=1 to Form4.Table3.RecordCount do
begin
rsum:=Form4.Table3.FieldByName('ves').AsFloat;

Form4.Table3.Edit;

Form4.Table3.FieldByName('cena').AsFloat:=rsum;
Form4.Table3.Next;
end;
Form4.Table3.Post;
P.S. А я б это через SQL сделал, та одна команда UPDATE реализует весь твой цикл
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2007, 14:09   #3
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
Смущение

Цитата:
Сообщение от nataly_ukr Посмотреть сообщение
Выдает ошибку Table Dataset not in edit or insert mode Понимаю ошибку, но не пойму что не так , причем на любой массив из БД одна и таже ошибка. DBNavigator исправляет все нормально . Может в DatabaseDiskTop при создании что-то нарушила
При каждом перемещении по записям набора данных он автоматически переходит из режима редактирования или вставки в режим просмотра.
Посмотри внимательнее свой код:

Код:
Form4.Table3.Active:=true;
       Form4.Table3.Edit; {здесь ты устанавливаешь режим редактирования}
       Form4.Table3.First; {а здесь ты перескакиваешь на первую запись НД переходит в режим просмотра}
        For i:=1 to Form4.Table3.RecordCount do
         begin
                 rsum:=Form4.Table3.FieldByName('ves').AsFloat;
                   Form4.Table3.FieldByName('cena').AsFloat:=rsum; {а здесь ты пытаешся внести изменения, на что получаешь облом}
          Form4.Table3.Next;{а здесь ты в цикле бегаешь по записям. НД снова переходит в режим просмотра}
             end;
           Form4.Table3.Post; {а здесь ты пытаешся внести изменения, на что получаешь облом}
Извините за невнимательность, чепуху-с сморозил. Ошибка возникает на этапе попытки внесения изменения (выделено зеленым), а не на этапе сохранения изменений (метод post. выделено красным подчеркиванием), как было написано ранее.

__________________
Самые глупые вещи всегда говорятся с умным видом. (с) Марк Твен /кажется/
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.

Последний раз редактировалось Andrei; 08.11.2007 в 05:45. Причина: ошибка при разборе кода
Andrei вне форума Ответить с цитированием
Старый 07.11.2007, 14:18   #4
nataly_ukr
Пользователь
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Stilet Привет земляк , твои примочки помогли Но что-то мне от этого Edit зарябило, наверное напишу через SQL

Andrei Огромное спасибо за подробное разъяснение , а ты не можешь написать как надо корректировать при чтении массива в цикле Сделала как мне предложил Stilet
Стало теперь работать
nataly_ukr вне форума Ответить с цитированием
Старый 07.11.2007, 14:57   #5
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от nataly_ukr Посмотреть сообщение
Stilet Привет земляк , твои примочки помогли Но что-то мне от этого Edit зарябило, наверное напишу через SQL

Andrei Огромное спасибо за подробное разъяснение , а ты не можешь написать как надо корректировать при чтении массива в цикле Сделала как мне предложил Stilet
Стало теперь работать
Корректировка набора данных в цикле на примере твоего кода:

Код:
rsum:=0;
Form4.Table3.Active:=true;
Form4.Table3.First; {переход на первую запись}
  //Организуем цикл
  For i:=1 to Form4.Table3.RecordCount do
     begin
        rsum:=Form4.Table3.FieldByName('ves').AsFloat;
        Form4.Table3.Edit; {переход в режим редактирования}
        Form4.Table3.FieldByName('cena').AsFloat:=rsum;
        Form4.Table3.Post;{внесение изменений}
        Form4.Table3.Next;{переход на следующую запись}
     end;
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.

Последний раз редактировалось Andrei; 07.11.2007 в 15:05.
Andrei вне форума Ответить с цитированием
Старый 07.11.2007, 15:04   #6
nataly_ukr
Пользователь
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Спасибо всем за помощь
nataly_ukr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
корректировка xls файла с помощью delphi Adept БД в Delphi 2 06.03.2008 10:26
Корректировка данных в переменных celovec Общие вопросы Delphi 10 28.01.2008 02:29