ورود

View Full Version : BatchUpdate رو نمیشه تو AdoDataSet استفاده کرد؟



Developer Programmer
دوشنبه 19 اسفند 1387, 18:14 عصر
واسه استفاده از قابلیت BatchUpdate در Ado ، من این کد رو نوشتم


procedure TForm1.btnSaveClick(Sender: TObject);
begin
ADODataSet1.UpdateBatch();
end;

procedure TForm1.btnRefuseClick(Sender: TObject);
begin
ADODataSet1.CancelBatch();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
with ADODataSet1 do
begin
CursorLocation := clUseClient;
CursorType := ctDynamic;
LockType := ltBatchOptimistic;
CommandType := cmdText;
CommandText := 'SELECT EmployeeID,FirstName,LastName,Title FROM Employees';
Open;
end;

DBGrid1.DataSource:=DataSource1;

end;


منتها با خطاهایی مثل


Row handle referred to a deleted row or a row marked for deletion

مواجه میشم... کجا رو دارم اشتباه میرم؟

ضمنا برای بررسی صحت مقادیر وارد شده از طرف کاربر، آیا باید در BeforePost مقادیر رو بخونم یا راه بهتری هم هست؟

vcldeveloper
سه شنبه 20 اسفند 1387, 00:28 صبح
CursorType := ctDynamic;
ctDynamic؟! چرا Dynamic؟ اصلا RDBMS مربوطه Dynamic را پشتیبانی میکنه؟ اگر پشتیبانی نکنه، خودش بطور خودکار CursorType را تغییر میده! توی Designer یک بار Dataset را Open کنید، و ببینید مقدار CursorType ثابت میمونه، یا تغییر میکنه.

Developer Programmer
سه شنبه 20 اسفند 1387, 10:22 صبح
خود بورلند که گفته :


{ To use batch updating, the CursorType property of the dataset component must be
either ctKeySet (the default) or ctStatic and the LockType property must be
ltBatchOptimistic.
ولی فقط static رو قبول میکنه.

حتی زمانی هم که static باشه خطای مذکور اتفاق می افته، اونم زمانیه که کاربر مثلا دو تا سطر جدید ایجاد کرده باشه و به جای ذخیره در جدول، CancelBatch کنه

Developer Programmer
چهارشنبه 21 اسفند 1387, 22:18 عصر
علی جان، هنوز خطا میده ها !

ببین، دو تا سطر جدید ایجاد میکنم ، بعد Cancel رو میزنم... خطا اتفاق میافته

vcldeveloper
چهارشنبه 21 اسفند 1387, 23:16 عصر
به نظر میاد که مشکل بیشتر از سمت بانک اطلاعاتی باشه، تا دلفی:

http://www.google.com/search?q=%22Row+handle+referred+to+a+deleted+row+o r+a+row+marked+for+deletion%22 (http://www.google.com/search?q=%22Row+handle+referred+to+a+deleted+row+o r+a+row+marked+for+deletion%22&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a)