Ошибка не удается найти строку для обновления

 
Andrewtitoff ©
 
(2009-10-22 12:03)
[0]

Здравствуйте уважаемые специалисты, я знаю что данная тема доднималась уже не однократно, но к сожалению все варианты решения, которые я нашел на форуме у меня не работают… =(((
Значит ситуация такая:
Имеется БД Access из нескольких таблиц(реально используются только 2), база не моя и используется другими пользователями, поэтому зменить ее структуру я немогу…
При добовлении записи запись добавляется, но повторно не редактируется — вылетает с ошибкой «не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения»…, после повторного открытия базы все замечательно редактируется, при чем любая запись без проблем многократно редактируется без каких либо ошибок…
Так-же после создания новой записи при попытке обновления появляется ошибка: «Недостаточно сведения ключевого поля для обновления», хотя я следуя советам в IndexFieldNames вписал значение поля


 
Anatoly Podgoretsky ©
 
(2009-10-22 12:14)
[1]

> Andrewtitoff  (22.10.2009 12:03:00)  [0]

Так как насчет ключевого то поля, не молчи.


 
Andrewtitoff ©
 
(2009-10-22 12:59)
[2]

2 Anatoly Podgoretsky
А я думал что это о есть IndexFieldNames… =(((
А как узнать?, просто БД написана не мной и ничего влияющего на ее работу я менять не могу т.к. ею пользуются другие пользователи про помощи оболочки написанной на VB, встроенном в Ассеss….
Единственное я знаю, что эта таблица связанна с другой полем «Brigade», но там есть и другие таблицы, и хоть большинство из них не используется  — но удалить я их немогу и как они связанны тож незнаю…. =(((
Но при редактировании существующих записей что при помощи TDBGrid, что программно никаких ошибок нет…
При чем когда строка создается — то пустая она не сохраняется, но при создании единократно я могу сколько угодно заполнять и редактироват любые поля, покак не перешел на другую строку и при этом никаких ошибок и все сохраняется, но после перехода на другую строку к этой я вернуться для редактирования уже немогу т.к. все заканчивается ошибкой…


 
Медвежонок Пятачок ©
 
(2009-10-22 13:01)
[3]

после инсерта переоткрывай датасет


 
Amoeba ©
 
(2009-10-22 13:07)
[4]


> после создания новой записи при попытке обновления появляется
> ошибка: «Недостаточно сведения ключевого поля для обновления»

Читать цикл статей «Немного об использовании ADO в Delphi»:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=408
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=413
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=420


 
sniknik ©
 
(2009-10-22 13:09)
[5]

> «Недостаточно сведения ключевого поля для обновления»,
нет ключа в базе, или запросе

> хотя я следуя советам в IndexFieldNames вписал значение поля
это ты создал локальный индекс, в рекордсете, в базе от этого ни ключь ни такой же индекс не появится.

> «не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения»
если нет ключа (и не установлен параметр обновлять по ключу (установить который советы НАВЕРНЯКА были, сам раз сто такой давал)), то обновление производится по остальным полям (меняемый значениям…), т.е. изменили один раз данные найдет по старым, изменили еще раз/в другом месте, а они уже с базой не сходятся… вот и ошибка.

> и ничего влияющего на ее работу я менять не могу
скорее всего не надо, не верю что нет ключа…


 
Anatoly Podgoretsky ©
 
(2009-10-22 13:35)
[6]

> Andrewtitoff  (22.10.2009 12:59:02)  [2]

Проверить конструктором объекта, есть ли ключевое поле, если нет, то сделать, лучше последним по порядку полем, вдруг код дурной, это не помешает работе других программ, ну и кроме того всегда можно вернуться назад. И это поле должно фигурировать в запросе.


 
Andrewtitoff ©
 
(2009-10-22 13:41)
[7]

2 Медвежонок Пятачок
Я ADOTable использую, но бумаю суть от этого не меняется, а как ее аереоткрыть?, Refresh и UpdateRecord вываливаются с ошибкой, ADOTable4.Properties[«Update Resync»].Value:=adResyncAll; — непомогает…, да еще кстати при попытке установить CursorLocation в clUseServer выдает ошибку «Текущий проводник не поддерживает необходимые интерфейсы для сортировки и фильтрации»….

2 sniknik
Я незнаю есть ключ или нет, а как можно это узнать?


 
Andrewtitoff ©
 
(2009-10-22 13:48)
[8]

2 Anatoly Podgoretsky
Открыл таблицу конструктором — нету там ключевого поля, попятался назначить первое (т.к. там только оно одно имеет уникальные значения, все остальные повторяются) — не сохраняет, пишет «Продолжению «Microsoft Office Access» не удается сохранить изменения свойств для связанных таблиц» и ничего не сохраняет… =(((


 
Andrewtitoff ©
 
(2009-10-22 13:51)
[9]

2 Anatoly Podgoretsky
При чем у других связанных таблиц у большинства тоже нет ключевых полей, а у одной целых два…


 
Медвежонок Пятачок ©
 
(2009-10-22 14:02)
[10]

да хоть сто ключей и триста первичных.

в записи которая только что добавлена в этом самом ключевом поле нет еще значения, так как оно рождается не в датасете.

а как ее аереоткрыть?,

Хорошая шутка. Но для петросяна а не здесь.


 
Anatoly Podgoretsky ©
 
(2009-10-22 14:02)
[11]

> Andrewtitoff  (22.10.2009 13:51:09)  [9]

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


 
Andrewtitoff ©
 
(2009-10-22 14:21)
[12]

2 Anatoly Podgoretsky
Связи почему то не отображает, толи их нет, то ли я не знаю… =(((
Выбирал и «Отобразить прямые связи» и «отобразить все связи»
при чем почему то в схеме данных показывает только две таблицы, которые в принципе только и используются…


 
Andrewtitoff ©
 
(2009-10-22 14:25)
[13]

2 Anatoly Podgoretsky
Поля создавать тоже не хочет, та же ошибка…
«Продолжению «Microsoft Office Access» не удается сохранить изменения свойств для связанных таблиц»


 
Anatoly Podgoretsky ©
 
(2009-10-22 14:31)
[14]

> Andrewtitoff  (22.10.2009 14:21:12)  [12]

Не обязаны, поскольку графически схема не создана и не полная.


 
Anatoly Podgoretsky ©
 
(2009-10-22 14:33)
[15]

> Andrewtitoff  (22.10.2009 14:25:13)  [13]

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


 
Плохиш ©
 
(2009-10-22 14:57)
[16]

Такая прикольно-философская ветка ни о чём :-)

> Andrewtitoff ©   (22.10.09 13:41) [7]
>
> 2 Медвежонок Пятачок
> Я ADOTable использую, но бумаю

Программиста нанять не пробовали.


 
Andrewtitoff ©
 
(2009-10-22 15:12)
[17]

2 Плохиш
Спасибо за помощь и поддержку….

2 All
Да, забыл сказать что база формата Access 97, я читал что из за этого тоже проблемы бывают, а можно ее как то перевести в более свежий формат что бы это не повлияло на работу других пользователей?


 
Amoeba ©
 
(2009-10-22 16:04)
[18]


> база формата Access 97, я читал что из за этого тоже проблемы
> бывают, а можно ее как то перевести в более свежий формат
> что бы это не повлияло на работу других пользователей?
>

Можно с помощью Access более свежей версии. Повлиять на работу других пользователей не должно.


 
Anatoly Podgoretsky ©
 
(2009-10-22 16:10)
[19]

> Плохиш  (22.10.2009 14:57:16)  [16]

Что бы он бумал.


 
Anatoly Podgoretsky ©
 
(2009-10-22 16:11)
[20]

> Andrewtitoff  (22.10.2009 15:12:17)  [17]

А с чем работают другие пользователи?


 
Anatoly Podgoretsky ©
 
(2009-10-22 16:15)
[21]

> Amoeba  (22.10.2009 16:04:18)  [18]

Завязывай с волюнтаризмом.


 
Andrewtitoff ©
 
(2009-10-22 16:45)
[22]

2 Amoeba
Уже преобразовал, вроде все нормально, там вообще бардак, локальная версия одного формата была, серверная другого…

2 Anatoly Podgoretsky
Я же писал «…  ею пользуются другие пользователи про помощи оболочки написанной на VB, встроенном в Ассеss….»

А я вроде понял, что бы назначать ключевые поля нужно открывать напрямую серверную часть — тогда вроде нормально, сейчас попробую…


 
Anatoly Podgoretsky ©
 
(2009-10-22 16:54)
[23]

Интересует не «Я же писал», а точное указание версия.


 
Andrewtitoff ©
 
(2009-10-22 17:15)
[24]

2 Anatoly Podgoretsky
А кто ее знает, наверное изначально в 97, точно уже никто не знает т.к. это было давно и кто эту базу писал уже давно пропал…, там вообще бардак, этой базой чееловек 20 пользуется и у кого какие версии локальной базы никто не проверял, но я уверен что они разные…


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
procedure TForm5.N2Click(Sender: TObject);
var
WordApp, Doc, table: Variant;
 i:integer;
begin
 if ADOQuery4priem_pered.AsString='Готов' then Begin
// dogovor pechat
 try
     WordApp := CreateOleObject('Word.Application');
   except
     showmessage('У вас не установлен MS Office Word');
     exit;
   end;
   // vigruzka informacii
if ADOQuery1типклиента.AsString='Физическое лицо' then   begin
   //zagruzka v ms word
 Doc := WordApp.Documents.open(ExtractFilePath(Application.ExeName)+'docsdogovor_fiz.dot');
 WordApp.Selection.GoTo (-1, , , 'nom_dogovor');
  WordApp.Selection.TypeText(ADOQuery3номзаявки.AsString);
  WordApp.Selection.GoTo (-1, , , 'data');
  WordApp.Selection.TypeText(formatdatetime('dddddd',date));
  ADOQuery3.Active:=false;
  DataModule2.ATZayavka.First;
  for i := 0 to DataModule2.ATZayavka.RecordCount - 1 do begin
    if DataModule2.ATZayavka.FieldByName('id_zayavka').AsString=ADOQuery1id_zayavka.AsString then begin
      DataModule2.ATZayavka.Edit;
      DataModule2.ATZayavka.FieldByName('data_dogov').AsDateTime:=date;
      DataModule2.ATZayavka.FieldByName('dogovor').AsString:='Готов';
      DataModule2.ATZayavka.Post;
      break;
    end;
    DataModule2.ATZayavka.Next;
  end;
   ADOQuery3.Active:=true;
  WordApp.Selection.GoTo (-1, , , 'klient_fio');
  WordApp.Selection.TypeText(ADOQuery1ФИОилиорганиз.AsString);
  WordApp.Selection.GoTo (-1, , , 'adres_dost');
  WordApp.Selection.TypeText(ADOQuery1адресдоставки.AsString);
  WordApp.Selection.GoTo (-1, , , 'kol_vo_mest');
  WordApp.Selection.TypeText(ADOQuery1kolich_mest.AsString);
  WordApp.Selection.GoTo (-1, , , 'stoimost');
   WordApp.Selection.TypeText(MoneyToString(ADOQuery1общаястоимость.Value));
  WordApp.Selection.GoTo (-1, , , 'srok_deistv');
   WordApp.Selection.TypeText(datetostr(date+180));
  WordApp.Selection.GoTo (-1, , , 'klient_fio_niz');
   WordApp.Selection.TypeText(ADOQuery1ФИОилиорганиз.AsString);
  WordApp.Selection.GoTo (-1, , , 'inn_nom');
   WordApp.Selection.TypeText(ADOQuery1реквизитыорганиз.AsString);
  WordApp.Selection.GoTo (-1, , , 'passport_nom');
   WordApp.Selection.TypeText(ADOQuery1пасспорта.AsString);
  WordApp.Selection.GoTo (-1, , , 'kem_vidan');
   WordApp.Selection.TypeText(ADOQuery1кемвыдан.AsString);
  WordApp.Selection.GoTo (-1, , , 'kogda_vidan');
   WordApp.Selection.TypeText(ADOQuery1когдавыдан.AsString);
  WordApp.Selection.GoTo (-1, , , 'adres_klient');
   WordApp.Selection.TypeText(ADOQuery1адрес.AsString);
  WordApp.Selection.GoTo (-1, , , 'telef');
   WordApp.Selection.TypeText(ADOQuery1телефон.AsString);
  WordApp.Selection.GoTo (-1, , , 'inicialy');
   WordApp.Selection.TypeText(ShortName(ADOQuery1ФИОилиорганиз.AsString));
 WordApp.Visible := true;
end;
 
  if ADOQuery1типклиента.AsString='Юридическое лицо' then   begin
   //zagruzka v ms word
 Doc := WordApp.Documents.open(ExtractFilePath(Application.ExeName)+'docsdogovor_org.dot');
 WordApp.Selection.GoTo (-1, , , 'nom_dogovor');
  WordApp.Selection.TypeText(ADOQuery3номзаявки.AsString);
  WordApp.Selection.GoTo (-1, , , 'data');
  WordApp.Selection.TypeText(formatdatetime('dddddd',date));
  DataModule2.ATZayavka.First;
  for i := 0 to DataModule2.ATZayavka.RecordCount - 1 do begin
    if DataModule2.ATZayavka.FieldByName('id_zayavka').AsString=ADOQuery1id_zayavka.AsString then begin
      DataModule2.ATZayavka.Edit;
     DataModule2.ATZayavka.FieldByName('data_dogov').AsDateTime:=date;
      DataModule2.ATZayavka.FieldByName('dogovor').AsString:='Готов';
      DataModule2.ATZayavka.Post;
      break;
    end;
    DataModule2.ATZayavka.Next;
  end;
  WordApp.Selection.GoTo (-1, , , 'klient_fio');
  WordApp.Selection.TypeText(ADOQuery1ФИОилиорганиз.AsString);
  WordApp.Selection.GoTo (-1, , , 'adres_dost');
  WordApp.Selection.TypeText(ADOQuery1адресдоставки.AsString);
  WordApp.Selection.GoTo (-1, , , 'kol_vo_mest');
  WordApp.Selection.TypeText(ADOQuery1kolich_mest.AsString);
  WordApp.Selection.GoTo (-1, , , 'stoimost');
   WordApp.Selection.TypeText(MoneyToString(ADOQuery1общаястоимость.Value));
  WordApp.Selection.GoTo (-1, , , 'srok_deistv');
   WordApp.Selection.TypeText(datetostr(date+180));
  WordApp.Selection.GoTo (-1, , , 'klient_fio_niz');
   WordApp.Selection.TypeText(ADOQuery1ФИОилиорганиз.AsString);
  WordApp.Selection.GoTo (-1, , , 'rekvizit');
   WordApp.Selection.TypeText(ADOQuery1реквизитыорганиз.AsString);
  WordApp.Selection.GoTo (-1, , , 'adres_klient');
   WordApp.Selection.TypeText(ADOQuery1адрес.AsString);
  WordApp.Selection.GoTo (-1, , , 'telef');
   WordApp.Selection.TypeText(ADOQuery1телефон.AsString);
    WordApp.Visible := true;
end;
ADOQuery4.Edit;
 ADOQuery4dogovor.AsString:='Готов';
 ADOQuery4.Post;
 End else showmessage('Не готов акт приема-передачи!');
 end;


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

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> Не удается найти строку для обновления. 

V

   

Опции темы

Burka
Дата 9.10.2007, 15:55 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: 1
Всего: 2

Такая проблема: в программе, добавляю строчку в БД(она оказывается последней в списке) и редактирую, табуляцией перемещаюсь по колонкам, но когда ТАб нажимаешь на последней колонке возникает ошибка

Код

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

Подскажите, что сделать можно?
Использую AdoTable( smile ), AdoConnection( smile ) и т.п.

———————

Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.

PM MAIL   Вверх
Данкинг
Дата 9.10.2007, 19:07 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Yersinia pestis
****

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130

Помогает закрыть-открыть adodataset.

———————

There’s nothing left but silent epitaphs.

PM MAIL WWW   Вверх
Burka
Дата 9.10.2007, 19:34 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: 1
Всего: 2

ммм не тот вариант который мне нужен.. а вообще помогает смена фокуса с дбгрида, но мне нужно узнать именно причину ошибки. А дедовскими способами не хочу  smile 

———————

Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.

PM MAIL   Вверх
ALeXandrK
Дата 9.10.2007, 20:11 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 6

Все зависит от параметров CursorLoaction и IsolationLavel.

Описывать все их варианты и что они значат не буду (их много), поищи в интернете.

У меня лично стоит CursorLoaction = clUseClient, IsolationLavel = ilUnspecified;

Так ты говоришь, что я «сервер» и мне не нужно строго следить за транзакциями и др. 
штучками, т.к. я один и базу, кроме меня, никто не изменяет. Соотвтетсвенно, тебе
он говорит все правильно, т.к. не знает были ли изменения или нет…

Это сообщение отредактировал(а) ALeXandrK — 9.10.2007, 20:11

———————

Богат не/ни тот, у кого много, а тот, кому хватает

PM WWW   Вверх
Burka
Дата 9.10.2007, 22:22 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: 1
Всего: 2

Выставил все свойства так, не помогло..
Эта же ошибка выскакивает, если сделать так: добавить строку, редактировать ее и применить метод Next к соответствующему датасету. (если хотите проверьте, должна быть ошибка=) )
Я вот думаю может сохранить вручную при редактировании как-нибудь, но Post не работает т.к. датасет находится не в Edit-моде..
 smile 

———————

Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.

PM MAIL   Вверх
SergeBS
Дата 10.10.2007, 07:25 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Эксперт
***

Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22

Burka

Код
TADODataset.Properties['Update Resync'].Value := adResyncAll;

На DelphiKingdom — статья насчет ADO. Там описано зачем.
Если нет уникального ключа — не поможет ничего.
ALeXandrK

Цитата
Все зависит от параметров CursorLoaction и IsolationLavel

Если бы только от них… ЭТО от них не зависит.

PM MAIL   Вверх
Burka
Дата 10.10.2007, 11:38 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: 1
Всего: 2

SergeBS, у меня «adResyncAll» не известно. мож че подключить надо?

Цитата
Если нет уникального ключа — не поможет ничего.

Уникальный ключ, это случаем не тоже самое, что и ключевое поле? А то я путаюсь уже.

Это сообщение отредактировал(а) Burka — 10.10.2007, 11:48

———————

Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.

PM MAIL   Вверх
Savek
Дата 10.10.2007, 13:07 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: 7
Всего: 7

модуль ADOInt
adResyncAll = $0000000F;

PM MAIL   Вверх
ALeXandrK
Дата 10.10.2007, 13:41 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 6

Цитата(SergeBS @ 10.10.2007,  07:25)
Burka

Код
TADODataset.Properties['Update Resync'].Value := adResyncAll;

На DelphiKingdom — статья насчет ADO. Там описано зачем.
Если нет уникального ключа — не поможет ничего.
ALeXandrK

Цитата
Все зависит от параметров CursorLoaction и IsolationLavel

Если бы только от них… ЭТО от них не зависит.

Мне как раз 

Код
TADODataset.Properties['Update Resync'].Value := adResyncAll;

не помогал, когда была такая же проблема, а вот указанные мной свойства тут же помогли.

———————

Богат не/ни тот, у кого много, а тот, кому хватает

PM WWW   Вверх
Burka
Дата 10.10.2007, 16:02 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: 1
Всего: 2

Не помогло(

———————

Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.

PM MAIL   Вверх
Burka
Дата 10.10.2007, 16:27 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: 1
Всего: 2

Вот это вроде помогло, только грузить чуть подольше после клика мышкой:

Код

procedure TMainForm.ADOQryAfterPost(DataSet: TDataSet);
begin
DataSet.Refresh;
end;

———————

Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.

PM MAIL   Вверх
SergeBS
Дата 11.10.2007, 07:30 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Эксперт
***

Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22

Burka
Прочитай все-таки статью «Немного об использовании ADO в Delphi» c DelphiKingdom. Пригодится.

PM MAIL   Вверх



















Ответ в темуСоздание новой темы
Создание опроса
Правила форума «Delphi: Базы данных и репортинг»
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    Не удается найти строку для обновления
    , при удалении

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    22.06.10, 13:58

      Добавляю запись и если ее удалить то

      При вызове Adotable.delete ошибка:
      «Не удается найти строку для обновления. Некоторые значения могли быть изменены со временем последнего чтения».
      В чем может быть причина?

      Если закрыть прогу и снова запустить, то эта запись удляется спокойно
      А сразу нет :(


      VahaC



      Сообщ.
      #2

      ,
      22.06.10, 14:02

        А так??

        ExpandedWrap disabled

            if not Adotable.Active then Adotable.Active := true;

            if Adotable.Modified then  Adotable.CancelUpdates;

            Adotable.delete

        Wizard

        Bas



        Сообщ.
        #3

        ,
        22.06.10, 14:19

          !

          Обязательно указание:
          1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
          2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
          Например: Paradox/BDE, MS Access/ADO


          Anatoly Podgoretsky



          Сообщ.
          #4

          ,
          22.06.10, 16:38

            Используй TAdoCommand
            В таблице должен быть первичный ключ


            olga90



            Сообщ.
            #5

            ,
            22.06.10, 17:27

              Цитата Anatoly Podgoretsky @ 22.06.10, 16:38

              В таблице должен быть первичный ключ

              в том то и дело что он есть

              БД аксес
              доступ АДО

              Сообщение отредактировано: olga90 — 22.06.10, 17:29


              VahaC



              Сообщ.
              #6

              ,
              22.06.10, 17:29

                Цитата olga90 @ 22.06.10, 13:58

                Если закрыть прогу и снова запустить, то эта запись удляется спокойно
                А сразу нет

                А чего делаем перед удалением??


                olga90



                Сообщ.
                #7

                ,
                22.06.10, 17:31

                  Цитата VahaC @ 22.06.10, 17:29

                  А чего делаем перед удалением??

                  добавляла запись в эту таблицу и она отображается в гриде после вставки
                  а на удаление вылетает.

                  Прогу перезагружаю и удаляется все спокойно


                  Демо



                  Сообщ.
                  #8

                  ,
                  22.06.10, 17:34

                    Цитата olga90 @ 22.06.10, 17:31

                    а на удаление вылетает.

                    Может попробовать после вставки Commit выполнить?


                    VahaC



                    Сообщ.
                    #9

                    ,
                    22.06.10, 17:37

                      1. После вставки делали

                      ExpandedWrap disabled

                        AdoTable1.Post

                      ??

                      2. возможно что с курсорами в TADOConnection


                      olga90



                      Сообщ.
                      #10

                      ,
                      22.06.10, 17:37

                        ок — завтра попробую и отпишу.

                        До замены таблицы все работало.
                        Просто старую таблицу много там удаляла и когда заменила первоначальной то стал такой глюк


                        Павел Калугин



                        Сообщ.
                        #11

                        ,
                        23.06.10, 06:18

                          Цитата olga90 @ 22.06.10, 17:31

                          бавляла запись в эту таблицу и она отображается в гриде после вставки
                          а на удаление вылетает.

                          1. все таки таблица или запрос?
                          2. вытащи id в грид и повтори.

                          Цитата olga90 @ 22.06.10, 17:37

                          Просто старую таблицу много там удаляла и когда заменила первоначальной то стал такой глюк

                          Пhовериnm наличие уникального индекса на первичном ключе. (ну или объявление его primery key)

                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                          0 пользователей:

                          • Предыдущая тема
                          • Delphi: Базы данных
                          • Следующая тема

                          Рейтинг@Mail.ru

                          [ Script execution time: 0,0394 ]   [ 16 queries used ]   [ Generated: 13.06.23, 21:36 GMT ]  

                          и получаю ошибку: «Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения.»

                          Эта ошибка означает следующее:
                          В ходе изменения данных было изменено ключевое поле и ядро (движок базы) не может сконструировать UPDATE-оператор, чтобы занести изменения в таблицу.

                          При работе с *.DB+BDE+TTable — такая ошибка почти нонсенс, так как BDE использует какие-то фишки самого парадокса, а вот если TTable заменить на TQuery то при работе с *DBF+BDE то вполне вероятно… Т.е. эта ошибка (что лоично) зависит также и от используемого движка, и от базы. В последний раз натыкался на эту ошибку лет 8-9 назад, когда пытался перейти с Paradox на MS-Jet(Access), а позже на IB.

                          Что касается EhLib, то сам его никогда не использовал. Если в EhLib строит какие-нибудь промежуточные запросы (например, если в DBGridEh есть…. ну, фильтры, например), то вполне вероятно, что такую ошибку мы получим даже при работе с Paradox.

                          Понравилась статья? Поделить с друзьями:
                        • Ошибка не удается найти сканер
                        • Ошибка не удается найти сертификат и закрытый ключ
                        • Ошибка не удается найти с users appdata local
                        • Ошибка не удается найти проверьте правильно ли указано имя
                        • Ошибка не удается найти приложение сервер