![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Люди добрые!!! Нужна срочно помощь!!! [D5, Paradox]
Fbist © (2002-08-16 08:11:00)Пишу на Дельфи5 с применением ADO. В общем суть такая: открываю таблицу TADOTable, делаю Locate на нужную запись, вызываю метод Edit, затем заменяю значения в этой записи, потом делаю Post и УЖАС! Вылетает такая ошибка: "Не удаётся найти строку для обновления. Некоторые значения могли быть изменены со времени её последнего чтения". Сроки жмут, а я уже 3 дня завис из-за этого... Может где-то туплю, решение чувствую, должно быть простым. Буду рад любым намёкам на зародыш этой проблемы! Заранее спасибо! Андрей Д.
Mike Kouzmine (2002-08-16 12:20:00) [1]Ты проводишь проверку на откр до ее вызова, но это к делу не относиться.
Правильно. (Cancel)
Fbist (2002-08-16 12:19:00) [2]:) Пока что всё только пучком. По другой ветке алгоритм не бегает. Но спасибо за поправку. Вставлю. Cancel.
SaS13 (2002-08-16 12:14:00) [3]Fbist © (16.08.02 11:52)
Если все пучком - идет Post, а если нет - ???, надо Cancel наверное како-нить поставить, а то НД в режиме редактирования или вставки...
Fbist (2002-08-16 12:13:00) [4]дельфи - 5. с патчами.
Fbist (2002-08-16 12:11:00) [5]Obj2DB возвращает False в случае, если таблица закрыта. То есть не инициализирована или в процессе изменения другими модулями.
Mike Kouzmine (2002-08-16 12:11:00) [6]Ну а делфи то у тебя какие.
Fbist (2002-08-16 12:09:00) [7]А куда апдейтить? Я и так на 2000 виндах сижу... Вроде не старое ADO...
Кстати, попробовал перед Locate вставить FTable.UpdateCursorPos - и валиться перестало. Но на Post всё равно валится... :(
Mike Kouzmine (2002-08-16 12:08:00) [8]функция Obj2DB, а в каком случае она возвр. False. Просто интересно.
Mike Kouzmine (2002-08-16 12:03:00) [9]Может правда, надо проапдейтить ADO? Если бы не валилась на Locate...
Fbist (2002-08-16 12:01:00) [10]С ключами - порядок! :)
Fbist (2002-08-16 11:58:00) [11]Процедура Obj2DB представляет собой следующее:
FTable["Имя поля"]:=Item.Имя_свойства;
...
Fbist (2002-08-16 11:52:00) [12]Попробую выдрать из контеста код:
Процедура сохраняет в базе данные из объекта Item, передаваемого через параметр. Краткие комментарии по тексту
function TController.SaveItem(Item:TItem):boolean;
begin
Result:=False;
if FTable.Active then // Таблица - глобальная переменная
if Item.IsChanged then // Если были изменения
begin
if FTable.Locate("ID",Item.ID,[]) then // Если есть такой объект в базе
begin
FTable.Edit; // редактирование
Result:=Obj2DB(Item); // Записываем объект в текущую запись
end else
begin
FTable.Append; // Добавляем запись
Result:=Obj2DB(Item); // Записываем объект
end;
if Result then // если всё пучком
begin
FTable.Post; // Сохраняем изменения
Item.FIsChanged:=False; // Типа объект уже не изменён
end;
end else Result:=True; // Всё ништяк
end;
Валится или в Locate или в Post... :(
Структура файлов значения не имеет. Объекты идентифицируются по уникальному полю-ключу.
Johnmen (2002-08-16 10:45:00) [13]А вот интересно, ключи были созданы для таблиц ?
Mike Kouzmine (2002-08-16 10:18:00) [14]Хочешь - помогу, только пришли код, структуру файлов. Ну что- нибудь, чтобы понять, что ты хочешь и что для этого ты делаешь.
А лучший способ избавиться от проблемы - это не создавать их. (Шутка)
Fbist (2002-08-16 10:14:00) [15]Шутник! :)
У меня одно из требований - минимизация дистрибутива!
Чего то всё не то говорите, как уйти от проблемы - а мне бы причину найти и устранить... :)
Mike Kouzmine (2002-08-16 09:34:00) [16]есть версия BDE и для доса, только она 2 с чем-то. А что, БДЕ спид или сифилис, что ты боишься его распространять?
Fbist (2002-08-16 09:00:00) [17]Да мне надо было что-то простенькое и чтоб таблицы в отдельных файлах (активный экспорт импорт). Вот и подошли Paradoxики. А ADO - исключительно из-за встроенности в ОС - чтоб не распространять BDE...
ADO менять нежелательно... :( Прога будет ставиться на разных компах, в том числе которые ещё на Win95... А новые ADO требуют ещё кучу всего доустановить там...
Виталий Панасенко (2002-08-16 08:48:00) [18]Попробуй перейти на Д6. Помоему это изврат, работать с парадоксом не через БДЕ ;-)))
SaS13 (2002-08-16 08:48:00) [19]Попробуй обновить ADO.
Fbist (2002-08-16 08:22:00) [20]Ну или подскажите, что это за ошибка такая...