Server에는 Oracle에 Table이 있고 Client는 조금 멀리 떨어져있습니다.
회선은 사내Lan으로 연결되어 있구 속도는 최대 64kbps이지만 여러부서로 분기
되므로 속도가 많이 떨어 집니다.
현업에서 본사의 Table에 3000여건의 자료를 읽어올때는 2분 정도가 소요되구
이것을 기록할때는 거의 Down되듯 합니다.
본사에서 등록할때 2분정도 소요시간되더라구요.(속도 10Mbps는 나옴)
현업에서의 등록처리시 다른 방법은 없는지 혹시 하시면 한수 부탁드립니다. T.T
Logic은 대강 다음과 같이 구현했구요(초보라서...^^)
//////////////////////////////////////////////////////////////////////////
sSQL : String;
i : Integer;
Database1.StartTransaction;
try
for i := 1 to Cnt do begin
sSQL := 'Insert into DB (Gbn, Sosok, Dat, OrderNo, Sabun, Saup ' +
'Values (:Gbn, :Sosok, :Dat, :OrderNo, :Sabun, :Saup)';
ParamByName('Gbn').Asinteger := i;
ParamByName('Sosok').AsString := '1234';
(기타등등...)
Qry.sql.Text := sSQL;
Qry.Execsql;
end;
Database1.Commit;
execpt
Database1.Rollback;
Showmessage('기록에 실패했습니다!...');
end;
//////////////////////////////////////////////////////////////////////////
sSQL : String;
i : Integer;
bError: boolean;
Database1.StartTransaction;
try
for i := 1 to Cnt do begin
sSQL := 'Insert into DB (Gbn, Sosok, Dat, OrderNo, Sabun, Saup ' +
'Values (:Gbn, :Sosok, :Dat, :OrderNo, :Sabun, :Saup)';
ParamByName('Gbn').Asinteger := i;
ParamByName('Sosok').AsString := '1234';
(기타등등...)
Qry.sql.Text := sSQL;
Qry.Execsql;
if (i > 0) and (i mod 100 = 0) then // 100개단위로 Commit
begin
if Database1.InTransaction then
begin
bError := False;
try
Database1.Commit;
execpt
Database1.Rollback;
bError := True;
end;
if bError then break;
end;
if not Database1.InTransaction then
Database1.StartTransaction;
end;
application.ProcessMessages; // 기타 Message처리
end; // for i := 1 to Cnt do begin
if Database1.InTransaction then
Database1.Commit;
execpt
if Database1.InTransaction then
Database1.Rollback;
Showmessage('기록에 실패했습니다!...');
end;