Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Вниз

Ошибка при рефреше 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.038 c
1-1117282425
PIF
2005-05-28 16:13
2005.06.14
Компиляция res файла при старте приложения


1-1117467430
Dezo
2005-05-30 19:37
2005.06.14
Массив array of variant


3-1114831865
magician
2005-04-30 07:31
2005.06.14
Сформировать запрос


14-1117000277
Бугага
2005-05-25 09:51
2005.06.14
Справка о внедрении


1-1117512723
Layner
2005-05-31 08:12
2005.06.14
Интересная особенность MonthCalendar, если стоит Multiselect=True





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский