Форум: "Базы";
Текущий архив: 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.048 c