9 / 6 / 5
Регистрация: 12.05.2011
Сообщений: 282
1

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

20.06.2017, 21:50. Показов 7267. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, не могу разобраться с ошибкой "Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения."
Выходит она при попытке чтения данных из таблицы и следом сразу же запись данных в таблицу.
Использую MS SQL Server 2008 и Delphi 2010. Кто сталкивался? что нужно делать, какие параметры изменять?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2017, 21:50
Ответы с готовыми решениями:

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

Ошибка: не удается найти строку для обновления. ADOQuery
Здравствуйте, уважаемые! Пишу программу для расчета стоимости ремонта квартир. Программа использует...

Ошибка: "Не удается найти строку для обновления"
Подключена с помощью ADO. На другой диск сделана копия программы. Одновременно открываются две...

Delphi Ошибка "Не удается найти строку для обновления" не ADOQuery
Три DBGrid 'а связаны через ADOTable,DataSourse и ADOConnection. При первом запуске программы...

4
Айлурофил
432 / 367 / 106
Регистрация: 27.05.2017
Сообщений: 2,124
Записей в блоге: 1
21.06.2017, 00:22 2
Какие конкретно запросы?
0
9 / 6 / 5
Регистрация: 12.05.2011
Сообщений: 282
22.06.2017, 13:48  [ТС] 3
Massaraksh7, обычные ADOQuery.Post и Edti1.Text:=ADOQueryFIO.AsString. и все. Запрос используется только для подключения к БД.

Добавлено через 4 минуты
SQL
1
2
3
4
SELECT [Заявка].id_zayavka,[Клиент].[ФИО или организ],[Заявка].[адрес доставки],[Заявка].kolich_mest,[Заявка].[общая стоимость],[Клиент].[№ пасспорта],[Клиент].[кем выдан],[Клиент].[когда выдан],[Клиент].[адрес],[Клиент].[телефон],[Клиент].[тип клиента],[Клиент].[реквизиты организ.]
FROM [Заявка],[Клиент]
WHERE ([Клиент].id_klienta=[Заявка].id_klienta)AND
          ([Заявка].id_zayavka=:param)
вот запрос для формирования таблицы из которой потом берутся данные для печати.
Параметр по которому происходит фильтрация:

Delphi
1
2
3
adoquery1.Active:=false;
adoquery1.Parameters.ParamByName('param').Value:=ADOQuery4id_zayavka.Value;
adoquery1.Active:=true;
текст запроса SQL для ADOQuery4:
SQL
1
2
3
SELECT * FROM Заявка
WHERE id_zayavka>0
ORDER BY   id_status, [дата заявки] DESC
Добавлено через 19 минут
А вот весь код кнопки печати:
Delphi
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)+'\docs\dogovor_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)+'\docs\dogovor_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;
Добавлено через 17 часов 9 минут
Интересно то что эта ошибка появляется через раз, т.е. я перезапущу программу и ее нет, пользуюсь мин 20-30 и потом неожиданно появляется, хотя до этого все те же действия делал и ошибки не было.

Добавлено через 16 минут
А вообще что означает эта ошибка? Объясните пожалуйста.
0
Айлурофил
432 / 367 / 106
Регистрация: 27.05.2017
Сообщений: 2,124
Записей в блоге: 1
22.06.2017, 14:10 4
Обычно это происходит при попытке изменения ключевых полей.
0
9 / 6 / 5
Регистрация: 12.05.2011
Сообщений: 282
22.06.2017, 14:22  [ТС] 5
ммм, ну у меня нигде не затрагиваются ключевые поля, только считывание. Хотел через дебаггер поймать место где ошибка выходит, но как на зло сейчас все хорошо без ошибок работает))) На форумах разных читал у кого такая же ошибка была, толком и не разобрались из-за чего, и решения нет никакого. Кто то советует переоткрывать таблицу (Active:=false,Active:=true), другие пересоздать БД полностью....
0
22.06.2017, 14:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2017, 14:22
Помогаю со студенческими работами здесь

Ошибка "Не удается найти строку для обновления" при выполнении триггера
Есть код триггера,( не судите строго если написано неправильно что то укажите если можно) ...

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

"Не удаётся найти указанный файл" после обновления
Ребята, подскажите, во первых не зею, туда ли я вопрос задал? Я приверженец ХР и ни когда ни чего...

Где скачать обновления для AVG Internet Security для обновления в оффлайн режиме?
Сабж.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru