Mojgan110
چهارشنبه 12 مهر 1385, 09:38 صبح
با سلام و خسته نباشید خدمت اساتید بخش دلفی :
هیچ ایده ای برای حل مشکلم ندارم :عصبانی++:. خیلی ممنون میشم اگر چند دقیقه ای حوصله کنید و این تاپیک را بررسی کنید.
من قسمته انتقال رکوردها از یک دیتابیس به یک دیتابیس دیگر ( هردو البته SQL Server ) را داخل یک حلقه While و بلوک Try Except نوشته ام ... شبیه به این :
شرطه پایان حلقه While را این گذاشته ام که تعداد رکوردهای انتقال داده شده تا کنون ، با تعداد کل رکوردهایی که باید انتقال داده میشده ، برابر باشه ...
حالا داخل این حلقه ، بلاک Try Except را هم نوشته ام که وظیفه انتقال رکوردها را انجام میده
WHILE (StrToInt(EdtTotal.Text) <> StrToInt(EdtTransfered.Text)) do
BEGIN
if ErrorHasOccured then
begin
// my error recovery codes in here
end;
try
DM.ADODataSet1.Active:= True;
DM.ADODataSet1.UpdateBatch();
DM.ServerConnection.CommitTrans;
ErrorIndicator.Brush.Color:= clLime;// no Error Occured
DM.ServerConnection.Connected:= False;
DM.ADODataSet1.Connection:= nil;
EdtTransfered.Text:= IntToStr(PackageNumber*MoveCount);
except
DM.ServerConnection.RollbackTrans;
ErrorIndicator.Brush.Color:= clRed;// Error has occured
raise;
end;
END; // of while
... حالا مثلا وقتی درحاله انتقاله رکودها هست و من سرویس SQL Server را خاموش یا پاز میکنم ، وارد قسمت Raise هم میشه و پرچم خطا را هم ست میکنه، ولی دیگه کاری انجام نمیده ! یعنی مثلا وقتی دوباره سرویسه SQL Server را اجرا میکنم و روشن میکنم ، خب انتظار دارم که وارد اون قسمتی که برای ریکاوری خطا نوشته بودم بشود ، ولی هیچ اتفاقی نمی افتد ...
اگر راه حلی به نظرتان میرسد ، کمک کنید لطفا
متشکرم
هیچ ایده ای برای حل مشکلم ندارم :عصبانی++:. خیلی ممنون میشم اگر چند دقیقه ای حوصله کنید و این تاپیک را بررسی کنید.
من قسمته انتقال رکوردها از یک دیتابیس به یک دیتابیس دیگر ( هردو البته SQL Server ) را داخل یک حلقه While و بلوک Try Except نوشته ام ... شبیه به این :
شرطه پایان حلقه While را این گذاشته ام که تعداد رکوردهای انتقال داده شده تا کنون ، با تعداد کل رکوردهایی که باید انتقال داده میشده ، برابر باشه ...
حالا داخل این حلقه ، بلاک Try Except را هم نوشته ام که وظیفه انتقال رکوردها را انجام میده
WHILE (StrToInt(EdtTotal.Text) <> StrToInt(EdtTransfered.Text)) do
BEGIN
if ErrorHasOccured then
begin
// my error recovery codes in here
end;
try
DM.ADODataSet1.Active:= True;
DM.ADODataSet1.UpdateBatch();
DM.ServerConnection.CommitTrans;
ErrorIndicator.Brush.Color:= clLime;// no Error Occured
DM.ServerConnection.Connected:= False;
DM.ADODataSet1.Connection:= nil;
EdtTransfered.Text:= IntToStr(PackageNumber*MoveCount);
except
DM.ServerConnection.RollbackTrans;
ErrorIndicator.Brush.Color:= clRed;// Error has occured
raise;
end;
END; // of while
... حالا مثلا وقتی درحاله انتقاله رکودها هست و من سرویس SQL Server را خاموش یا پاز میکنم ، وارد قسمت Raise هم میشه و پرچم خطا را هم ست میکنه، ولی دیگه کاری انجام نمیده ! یعنی مثلا وقتی دوباره سرویسه SQL Server را اجرا میکنم و روشن میکنم ، خب انتظار دارم که وارد اون قسمتی که برای ریکاوری خطا نوشته بودم بشود ، ولی هیچ اتفاقی نمی افتد ...
اگر راه حلی به نظرتان میرسد ، کمک کنید لطفا
متشکرم