ورود

View Full Version : یا همه رکوردها فرستاده شود یا هیچکدام!؟



p_ooya
چهارشنبه 03 تیر 1388, 10:23 صبح
سلام به همه.
من باید بانک mysql برنامه ام رو روی هاست قرار بدم. مسئله اینجاست که بانک قبلاً local بوده و insert هایی که انجام میشد معمولاً در یک حلقه و تعداد زیاد رکورد انجام میشد. مثلاً :

While not(eof somthing) do
begin
DataModule1.ADOTableArchive.Append;
DataModule1.ADOTableArchive['serial']:=serial;
DataModule1.ADOTableArchive['archive']:=i;
DataModule1.ADOTableArchive['_date']:=date;
DataModule1.ADOTableArchive['avail']:=1;
DataModule1.ADOTableArchive['_date2']:='';
DataModule1.ADOTableArchive['source']:=0; //line
DataModule1.ADOTableArchive.Post;
end;البته این کد برای زمانیه که از ms sql server استفاده می کردم و الان برای mysql تغییر داده شده ولی در اصل مطلب تغییری ایجاد نمیشه. سوال من اینجاست که وقتی قراره مثلاً 200 رکورد، در یک لوپ، و به شکلی که در بالا دیدی وارد بانکی بشه که روی اینترنته، آیا راهی هست تا بشه کاری کرد که یا همه 200 رکورد insert بشوند یا هیچکدام. به بیان دیگه، نگرانی من از اینه که در زمان ارسال این رکورد ها وقتی تعدادیشون رو برنامه به بانک فرستاده اختلالی در ارتباط اینترنت بوجود بیاد یا برق بره و تعدادی از رکورد ها ارسال نشه. نوع پروژه به گونه ایست که نمیشه برسی کرد که چه رکوردهایی ارسال نشه تا اقدام به ارسال مجددشون کرد. آیا راهی هست برای این "یا همه یا هیچ"؟

vcldeveloper
چهارشنبه 03 تیر 1388, 16:29 عصر
باید از Transaction استفاده کنید. درباره چگونگی استفاده از آن در همین تالار توضیح داده شده.

p_ooya
جمعه 05 تیر 1388, 16:57 عصر
باید از Transaction استفاده کنید. درباره چگونگی استفاده از آن در همین تالار توضیح داده شده.
سپاس. من رفتم روی مطلب مطالعه کردم و حالا یه سوال برام پیش اومده. اگه به دلیل قطع ارتباط یا هر دلیل دیگه، برنامه commit رو نفرسته، خوب rollback رو هم نمی تونه بفرسته دیگه. حالا چه اتفاقی میفته؟

merced
جمعه 05 تیر 1388, 22:10 عصر
خوب احتمالاً سرور اينو بفهمه و بعد از مدتي چون Commit رو نديده ... خودش RollBack كنه. :چشمک:

stringer
یک شنبه 07 تیر 1388, 16:10 عصر
نه خود سرور مشخص نمی کنه می تونی دو وضعیت برای Uploadadt انتخاب کنی که اگر Send نشد تئپوی Draft یا جایی که بتوانی نگهداری کنی مشخص بشه برای این کار اول باید prossess یی بنویسی که اگه 100% شد از لیست ارسالهات خارج بشه