Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

Ошибка при рефреше TADODataSet...   Найти похожие ветки 

 
AloneAli ©   (2005-05-04 07:37) [0]

Эта ошибка имеет вид: "Источник данных изменил или удалил значение ключа для данной строки в хранилище данных. Теперь удалена и локальная строка"...


 
AloneAli ©   (2005-05-04 07:41) [1]

Привожу dfm

object dmAutomat: TdmAutomat
 OldCreateOrder = False
 OnCreate = DataModuleCreate
 Left = 192
 Top = 81
 Height = 518
 Width = 597
 object adocAutomat: TADOConnection
   Attributes = [xaCommitRetaining]
   Connected = True
   ConnectionString =
     "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Differ\Diplom (P" +
     "OVTAS_Natasha)\Program\AvtBase.mdb;Persist Security Info=False"
   LoginPrompt = False
   Mode = cmShareDenyNone
   Provider = "Microsoft.Jet.OLEDB.4.0"
   Left = 88
   Top = 56
 end
 object adodsTypeDoc: TADODataSet
   Connection = adocAutomat
   CursorType = ctStatic
   ExecuteOptions = [eoAsyncExecute, eoAsyncFetch]
   CommandText = "select * from TypeDoc"
   Parameters = <>
   Left = 152
   Top = 200
   object adodsTypeDocID: TAutoIncField
     FieldName = "ID"
     ReadOnly = True
   end
   object adodsTypeDocName: TWideStringField
     FieldName = "Name"
     Size = 50
   end
 end
 object dsTypeDoc: TDataSource
   DataSet = adodsTypeDoc
   Left = 264
   Top = 200
 end
 object adodsConsuption: TADODataSet
   Connection = adocAutomat
   CursorType = ctStatic
   ExecuteOptions = [eoAsyncExecute, eoAsyncFetch]
   CommandText =
     "select Consuption.*, Firm_1.*, Firm_2.* from Consuption, Firm as" +
     " Firm_1, Firm as Firm_2 where (Consuption.fTypeDoc = :ID) and (C" +
     "onsuption.fBuyer = Firm_1.ID) and (Consuption.fOwner = Firm_2.ID" +
     ")"
   DataSource = dsTypeDoc
   IndexFieldNames = "Consuption.ID"
   MasterFields = "ID"
   Parameters = <
     item
       Name = "ID"
       Attributes = [paNullable]
       DataType = ftInteger
       NumericScale = 255
       Precision = 255
       Value = 1
     end>
   Left = 152
   Top = 256
   object adodsConsuptionConsuptionID: TAutoIncField
     FieldName = "Consuption.ID"
     ReadOnly = True
   end
   object adodsConsuptionNumDoc: TWideStringField
     FieldName = "NumDoc"
     Size = 10
   end
   object adodsConsuptionDateDoc: TDateTimeField
     FieldName = "DateDoc"
   end
   object adodsConsuptionBase: TWideStringField
     FieldName = "Base"
     Size = 50
   end
   object adodsConsuptionfBuyer: TIntegerField
     FieldName = "fBuyer"
   end
   object adodsConsuptionfOwner: TIntegerField
     FieldName = "fOwner"
   end
   object adodsConsuptionfTypeDoc: TIntegerField
     FieldName = "fTypeDoc"
   end
   object adodsConsuptionFirm_1ID: TAutoIncField
     FieldName = "Firm_1.ID"
     ReadOnly = True
   end
   object adodsConsuptionFirm_1Name: TWideStringField
     FieldName = "Firm_1.Name"
     Size = 50
   end
   object adodsConsuptionFirm_1INN: TWideStringField
     FieldName = "Firm_1.INN"
     Size = 10
   end
   object adodsConsuptionFirm_1KPP: TWideStringField
     FieldName = "Firm_1.KPP"
     Size = 10
   end
   object adodsConsuptionFirm_1fTypeFirm: TIntegerField
     FieldName = "Firm_1.fTypeFirm"
   end
   object adodsConsuptionFirm_1fAddress: TIntegerField
     FieldName = "Firm_1.fAddress"
   end
   object adodsConsuptionFirm_1fDirector: TIntegerField
     FieldName = "Firm_1.fDirector"
   end
   object adodsConsuptionFirm_2ID: TAutoIncField
     FieldName = "Firm_2.ID"
     ReadOnly = True
   end
   object adodsConsuptionFirm_2Name: TWideStringField
     FieldName = "Firm_2.Name"
     Size = 50
   end
   object adodsConsuptionFirm_2INN: TWideStringField
     FieldName = "Firm_2.INN"
     Size = 10
   end
   object adodsConsuptionFirm_2KPP: TWideStringField
     FieldName = "Firm_2.KPP"
     Size = 10
   end
   object adodsConsuptionFirm_2fTypeFirm: TIntegerField
     FieldName = "Firm_2.fTypeFirm"
   end
   object adodsConsuptionFirm_2fAddress: TIntegerField
     FieldName = "Firm_2.fAddress"
   end
   object adodsConsuptionFirm_2fDirector: TIntegerField
     FieldName = "Firm_2.fDirector"
   end
 end
 object dsConsuption: TDataSource
   DataSet = adodsConsuption
   Left = 264
   Top = 256
 end
 object adodsConsuptionCalc: TADODataSet
   Connection = adocAutomat
   CursorType = ctStatic
   ExecuteOptions = [eoAsyncExecute, eoAsyncFetch]
   CommandText =
     "select ConsuptionCalc.*, Calc.* from ConsuptionCalc, Calc where " +
     "(ConsuptionCalc.fConsuption = :Consuption.ID) and (ConsuptionCal" +
     "c.fCalc = Calc.ID)"
   DataSource = dsConsuption
   IndexFieldNames = "ConsuptionCalc.ID"
   MasterFields = "Consuption.ID"
   Parameters = <
     item
       Name = "Consuption.ID"
       Attributes = [paNullable]
       DataType = ftInteger
       NumericScale = 255
       Precision = 255
       Value = Null
     end>
   Left = 152
   Top = 312
 end
 object dsConsuptionCalc: TDataSource
   DataSet = adodsConsuptionCalc
   Left = 264
   Top = 312
 end
end


 
AloneAli ©   (2005-05-04 07:44) [2]

procedure TdmAutomat.DataModuleCreate(Sender: TObject);
begin
 adocAutomat.Connected := true;

 adodsTypeDoc.Open;
 adodsTypeDoc.Refresh;

 adodsConsuption.Open;
 adodsConsuption.Refresh;
end;


И на строчке adodsTypeDoc.Refresh выдает ошибку.


 
ЮЮ ©   (2005-05-04 08:05) [3]

Непонятно, зачем сразу после  Open нужен Refresh

Возможно, это из-за
ExecuteOptions = [eoAsyncExecute, eoAsyncFetch]


 
AloneAli ©   (2005-05-04 08:18) [4]


> ЮЮ ©   (04.05.05 08:05) [3]
> Непонятно, зачем сразу после  Open нужен Refresh

Сейчас поясню...
Когда, например, делаю добавление в TypeDoc и рефрешу adodsTypeDoc, то добавленная не отображается в DBGrid"е. Не помогает и сочетание Close...Open.
Я давно хотел обратиться по этому вопросу, но никак руки не доходили. И вот... Получается это второй вопрос.


 
AloneAli ©   (2005-05-04 08:20) [5]


> ЮЮ ©   (04.05.05 08:05) [3]
> Возможно, это из-за
> ExecuteOptions = [eoAsyncExecute, eoAsyncFetch]

В какой компоненте? adodsTypeDoc?


 
sniknik ©   (2005-05-04 08:40) [6]

однозначно, вот это вот "eoAsyncExecute, eoAsyncFetch" убери.
этим ты заставляеш ADO закачивать данные в фоне, паралельно с твоим основным потоком, т.е. Open выполнился и в твоей программе выполняется код далее, а ADO еще данные какоето время докачивает... а тут уже сразу Refresh который эти же данные обновлять должен, естественно ошибка, из двух потоков пытается одно и тоже менять.

> Когда, например, делаю добавление в TypeDoc и рефрешу adodsTypeDoc, то добавленная не отображается в DBGrid"е. Не помогает и сочетание
> Close...Open.
лучше сразу добавляй в adodsTypeDoc, рефреш станет не нужным.
или добавляеш не в программе, а гдето еще?
Close...Open должен помочь, чтото у тебя не то если не помогает. и это не то тоже может быть связано с настройкой на асинхронное получение данных.


 
sniknik ©   (2005-05-04 08:46) [7]

> В какой компоненте? adodsTypeDoc?
везде убери. пока во всяком случае, свойство то полезное зачастую но только если понимаеш зачем и что им делаеш, и желательно как это работает.

вот реально чего хотел добится когда его ставил?


 
AloneAli ©   (2005-05-04 08:53) [8]


> sniknik ©   (04.05.05 08:46) [7]
> вот реально чего хотел добится когда его ставил?

Честно говоря непомню! :)
Получилось, наверное, чисто машинально, а потом начала ставить везде...
И я незнаю для чего она... Просветишь?


 
sniknik ©   (2005-05-04 10:59) [9]

> Просветишь?
sniknik ©   (04.05.05 08:40) [6]
> этим ты заставляеш ADO закачивать данные в фоне...
+ F1



Страницы: 1 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.24 c
4-1114076923
murk2
2005-04-21 13:48
2005.06.14
Как убрать кнопку окна из панели задач?


3-1115280907
juice
2005-05-05 12:15
2005.06.14
Declared cursor already exists


14-1116901352
Mad
2005-05-24 06:22
2005.06.14
MMORPG


4-1114422458
ANB
2005-04-25 13:47
2005.06.14
Есть ли функция, позволяющая скопировать папку ?


14-1117161434
-[ HAWK ]-
2005-05-27 06:37
2005.06.14
Исходник взломщика для игр