Mojgan110
چهارشنبه 08 شهریور 1385, 13:18 عصر
با سلام خدمت بخش دلفی
میخواهم مطمئن شوم که با چنین ساختاری که من استفاده کرده ام ، اگر "" در میانه کار ، ارتباط به اینترنت قطع شود" ، مشکلی پیش نمیاد و تراکنشها صحیح عمل میکنند و ..
توضیح قبلی :: یک فایل بزرگ دارم ( حاصل خروجی BCP) ، که چون حجیمه ، دریک حلقه ی While ، به فایلهای کوچکتر آنرا میشکنم و آنها را انتقال میدهم تا کم کم ، همه فایل بزرگه منتقل شده باشد .
کانترهای مربوط به اینکه تا چندمین رکورد را خوانده ام و انتقال یافته و اینکه آیا خطایی رخ داده یا خیر را هم داخل رجیستری ثبت میکنم و از آنجا بازیابی میکنم :
اکنون ، نگرانی و عدم اطمینانم از این هست که آیا اگر در قسمت Try ، مشکلی پیش بیاد ( مثلا کانشکن به اینترنت قطع شود و نتیجتا" دستور Bulk Insert اجرا نشود ) آیا قشنگ میرود سراغ except و کارهایی که اونجا بهش گفته ام را انجام میدهد ؟ ( اینها همگی داخل حلقه While ی که گفتم مربوط به تکه تکه کردن فایل بزرگه هست ، قرار دارند ، یعنی هربار که یک فایل کوچک تشکیل میشود ، عملیات انتقال به سرور را انجام میدهم :: اینطور : )
If ( (RowPos = MoveCount) OR (S1='')) Then // A package is ready to Upload :
Begin
RowPos:= 0;
Inc(LevelCount); SetRegValue('LevelCount',LevelCount);
DM.TransferConnection.Open;
DM.TransferConnection.BeginTrans;
try
DM.Qry1.SQL.Clear;
CloseFile(DestFile);
DM.Qry1.SQL.Add('bulk insert MyDataBase.dbo.Main2 FROM ');
DM.Qry1.SQL.Add(QuotedStr('c:\ShortFile.txt'));
DM.Qry1.Prepared:= True;
DM.Qry1.ExecSQL;
ErrorOccured:= False; SetErrorStatus(ErrorOccured);
DM.TransferConnection.CommitTrans;
DM.TransferConnection.Close;
AssignFile(DestFile, 'C:\ShortFile.txt');
Rewrite(DestFile);
except
ErrorOccured:= True; SetErrorStatus(ErrorOccured);
DM.TransferConnection.RollbackTrans;
DM.TransferConnection.Close;
raise;
end;
End;
END; // End of while
پیشاپیش از صبر و حوصله شما ، تشکر میکنم.
میخواهم مطمئن شوم که با چنین ساختاری که من استفاده کرده ام ، اگر "" در میانه کار ، ارتباط به اینترنت قطع شود" ، مشکلی پیش نمیاد و تراکنشها صحیح عمل میکنند و ..
توضیح قبلی :: یک فایل بزرگ دارم ( حاصل خروجی BCP) ، که چون حجیمه ، دریک حلقه ی While ، به فایلهای کوچکتر آنرا میشکنم و آنها را انتقال میدهم تا کم کم ، همه فایل بزرگه منتقل شده باشد .
کانترهای مربوط به اینکه تا چندمین رکورد را خوانده ام و انتقال یافته و اینکه آیا خطایی رخ داده یا خیر را هم داخل رجیستری ثبت میکنم و از آنجا بازیابی میکنم :
اکنون ، نگرانی و عدم اطمینانم از این هست که آیا اگر در قسمت Try ، مشکلی پیش بیاد ( مثلا کانشکن به اینترنت قطع شود و نتیجتا" دستور Bulk Insert اجرا نشود ) آیا قشنگ میرود سراغ except و کارهایی که اونجا بهش گفته ام را انجام میدهد ؟ ( اینها همگی داخل حلقه While ی که گفتم مربوط به تکه تکه کردن فایل بزرگه هست ، قرار دارند ، یعنی هربار که یک فایل کوچک تشکیل میشود ، عملیات انتقال به سرور را انجام میدهم :: اینطور : )
If ( (RowPos = MoveCount) OR (S1='')) Then // A package is ready to Upload :
Begin
RowPos:= 0;
Inc(LevelCount); SetRegValue('LevelCount',LevelCount);
DM.TransferConnection.Open;
DM.TransferConnection.BeginTrans;
try
DM.Qry1.SQL.Clear;
CloseFile(DestFile);
DM.Qry1.SQL.Add('bulk insert MyDataBase.dbo.Main2 FROM ');
DM.Qry1.SQL.Add(QuotedStr('c:\ShortFile.txt'));
DM.Qry1.Prepared:= True;
DM.Qry1.ExecSQL;
ErrorOccured:= False; SetErrorStatus(ErrorOccured);
DM.TransferConnection.CommitTrans;
DM.TransferConnection.Close;
AssignFile(DestFile, 'C:\ShortFile.txt');
Rewrite(DestFile);
except
ErrorOccured:= True; SetErrorStatus(ErrorOccured);
DM.TransferConnection.RollbackTrans;
DM.TransferConnection.Close;
raise;
end;
End;
END; // End of while
پیشاپیش از صبر و حوصله شما ، تشکر میکنم.