khorsandreza
شنبه 19 شهریور 1390, 18:15 عصر
سلام دوستان
من با استفاده از SP حدود هفتصد هزار رکورد را از فایل اکسس می خوانم با استفاده از ADO Qurey و رکورد برکورد در دیتا بیس خود ذخیره می کنم ولی یک مشکل عمده برایم پیش آمده و آن این که در رکوردهای اول سرعت انتقال قابل توجه است حال وقتی به رکورد 350000 میرسد سرعت به نصف و در آواخر کاملا کند میشود شاید در هر دقیقه 100 رکورد منتقل مبیشود شکل دستورات
Procedure TConvertDataForm.InserAccessData
Var
ErrNum200,InsNum200:Integer;
Begin
ErrNum200 := 0;
InsNum200 := 0;
ProgressBar_in200.Max := ADO_IN200.RecordCount;
While Not ADO_IN200.Eof DO
Begin
Try
SP_IN200.Params[0].AsString := COPY(ADO_IN200CODP.AsString,1,11);
SP_IN200.Params[1].AsString := ADO_IN200CODC.AsString;
SP_IN200.Params[2].AsString := ADO_IN200CODP.AsString;
SP_IN200.Params[3].AsString := ADO_IN200SERL.AsString;
SP_IN200.Params[4].AsString := ADO_IN200TAR.AsString;
SP_IN200.Params[5].AsString := ADO_IN200CODV.AsString;
SP_IN200.Params[6].AsString := ADO_IN200SHOB.AsString;
SP_IN200.Params[7].AsString := ADO_IN200SHKH.AsString;
SP_IN200.Params[8].AsString := ADO_IN200TARB.AsString;
SP_IN200.Params[9].AsString := ADO_IN200TGHE.AsString;
SP_IN200.Params[10].AsString := ADO_IN200MABG.AsString;
SP_IN200.Params[11].AsString := ADO_IN200MKAS.AsString;
SP_IN200.Params[12].AsString := ADO_IN200KOLB.AsString;
SP_IN200.Params[13].AsString := ADO_IN200ALBV.AsString;
SP_IN200.Params[14].AsString := ADO_IN200CODB.AsString;
SP_IN200.Params[15].AsString := ADO_IN200SHOM.AsString;
SP_IN200.Params[16].AsString := ADO_IN200NKS.AsString;
SP_IN200.Params[17].AsString := ADO_IN200TKS.AsString;
SP_IN200.Params[18].AsString := ADO_IN200OLAV.AsString;
SP_IN200.Params[19].AsString := ADO_IN200VAZE.AsString;
SP_IN200.Params[20].AsString := ADO_IN200SAZM.AsString;
SP_IN200.Params[21].AsString := ADO_IN200CSAB.AsString;
SP_IN200.Params[22].AsString := COPY(ADO_IN200CSAB.AsString,1,2)+'00';
SP_IN200.ExecProc;
ADO_IN200.Next;
ProgressBar_in200.StepIt;
Application.ProcessMessages;
Inc(InsNum200);
Label1.Caption := IntToStr(InsNum200) ;
if ( Thread.Terminated ) then break;
Except
Inc(ErrNum200);
Label2.Caption := IntToStr(ErrNum200) ;
End;
End;
end;
در صورتی که در دستورات خطائی هستد و یا باید تغییراتی داده شود ممنون خواهم شد راهنمائی بفرمائید
من با استفاده از SP حدود هفتصد هزار رکورد را از فایل اکسس می خوانم با استفاده از ADO Qurey و رکورد برکورد در دیتا بیس خود ذخیره می کنم ولی یک مشکل عمده برایم پیش آمده و آن این که در رکوردهای اول سرعت انتقال قابل توجه است حال وقتی به رکورد 350000 میرسد سرعت به نصف و در آواخر کاملا کند میشود شاید در هر دقیقه 100 رکورد منتقل مبیشود شکل دستورات
Procedure TConvertDataForm.InserAccessData
Var
ErrNum200,InsNum200:Integer;
Begin
ErrNum200 := 0;
InsNum200 := 0;
ProgressBar_in200.Max := ADO_IN200.RecordCount;
While Not ADO_IN200.Eof DO
Begin
Try
SP_IN200.Params[0].AsString := COPY(ADO_IN200CODP.AsString,1,11);
SP_IN200.Params[1].AsString := ADO_IN200CODC.AsString;
SP_IN200.Params[2].AsString := ADO_IN200CODP.AsString;
SP_IN200.Params[3].AsString := ADO_IN200SERL.AsString;
SP_IN200.Params[4].AsString := ADO_IN200TAR.AsString;
SP_IN200.Params[5].AsString := ADO_IN200CODV.AsString;
SP_IN200.Params[6].AsString := ADO_IN200SHOB.AsString;
SP_IN200.Params[7].AsString := ADO_IN200SHKH.AsString;
SP_IN200.Params[8].AsString := ADO_IN200TARB.AsString;
SP_IN200.Params[9].AsString := ADO_IN200TGHE.AsString;
SP_IN200.Params[10].AsString := ADO_IN200MABG.AsString;
SP_IN200.Params[11].AsString := ADO_IN200MKAS.AsString;
SP_IN200.Params[12].AsString := ADO_IN200KOLB.AsString;
SP_IN200.Params[13].AsString := ADO_IN200ALBV.AsString;
SP_IN200.Params[14].AsString := ADO_IN200CODB.AsString;
SP_IN200.Params[15].AsString := ADO_IN200SHOM.AsString;
SP_IN200.Params[16].AsString := ADO_IN200NKS.AsString;
SP_IN200.Params[17].AsString := ADO_IN200TKS.AsString;
SP_IN200.Params[18].AsString := ADO_IN200OLAV.AsString;
SP_IN200.Params[19].AsString := ADO_IN200VAZE.AsString;
SP_IN200.Params[20].AsString := ADO_IN200SAZM.AsString;
SP_IN200.Params[21].AsString := ADO_IN200CSAB.AsString;
SP_IN200.Params[22].AsString := COPY(ADO_IN200CSAB.AsString,1,2)+'00';
SP_IN200.ExecProc;
ADO_IN200.Next;
ProgressBar_in200.StepIt;
Application.ProcessMessages;
Inc(InsNum200);
Label1.Caption := IntToStr(InsNum200) ;
if ( Thread.Terminated ) then break;
Except
Inc(ErrNum200);
Label2.Caption := IntToStr(ErrNum200) ;
End;
End;
end;
در صورتی که در دستورات خطائی هستد و یا باید تغییراتی داده شود ممنون خواهم شد راهنمائی بفرمائید