오라클 데이타를 파이어버드로 옮길려고 하는데...
먼가 계속 에러를 띄우는 군요..
고수님님들의 조언을 바랍니다.
아래는 간략한 소스입니다.
Database1, IBDatabase1 설정함
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k: Integer;
cFid,cMarc,subj,pan ,indextext,abstext,contentsTEXT,LogFileName,ErrMsg: String;
ErrLogfile: TextFile;
sl: TStringList;
begin
try
try
//실제 프로세스 시작
IBTransaction1.Active := True;
if MessageDlg('업데이트하시겠습니까?', mtConfirmation,[mbYes, mbNo], 0) = mrYes then begin
cMarc:='';
//트랜잭션 시작
IBTransaction1.StartTransaction;
cFid := FormatDateTime('yymmddhhmmsszzz', Now);
k:=1;
memo1.Clear;
for i:=strtoint(Edit1.Text) to strtoint(Edit2.Text) do begin
cMarc :='';
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from Ttable where rownum = :crow');
Query1.ParamByName('crow').asstring := inttostr(i);
Query1.Open;
Query1.FetchAll;
cFid :='';
if Query1.RecordCount > 0 then begin
IBQuery1.Close;
IBQuery1.SQL.BeginUpdate;
IBQuery1.SQL.Add('Insert into test_MARC(FID, GG)');
IBQuery1.SQL.Add(' values (:FID, :GG)');
IBQuery1.SQL.EndUpdate;
IBQuery1.ParamByName('FID').asstring := trim(Query1.fieldbyname('FID').AsString);
IBQuery1.ParamByName('GG').AsBlob := trim(Query1.fieldbyname('GG').AsString);
IBQuery2.Close;
IBQuery2.SQL.BeginUpdate;
IBQuery2.SQL.Add('Insert into test_CONTROL(FID,RDATE');
IBQuery2.SQL.Add(' values (:FID,:RDATE)');
IBQuery2.SQL.EndUpdate;
IBQuery2.ParamByName('FID').asstring := trim(Query1.fieldbyname('FID').AsString);
IBQuery2.ParamByName('RDATE').AsDateTime := NOW;
IBQuery1.Prepare;
IBQuery2.Prepare;
IBQuery1.ExecSQL;
IBQuery2.ExecSQL;
label3.Caption:=inttostr(i);
label3.Refresh;
inc(k);
end; //if Query1.RecordCount > 0 then begin
end; // for i:=strtoint(trim(Edit1.Text))
//트랜잭션 끝
IBTransaction1.CommitRetaining;
exit;
end
else begin
showmessage('취소하셨습니다.!!');
exit; // if
end;
//실제 프로세스 종료
except
on err:exception do
begin
LogFileName := ExtractFilePath(Application.ExeName)
+ ExtractFileName(Application.ExeName) + '_' +FormatDateTime('yyyy"년"mm"월"dd"일"',Now) + '.log';
// 민약, 에러로그가 없으면 에러로그 파일을 생성
if Not FileExists(LogFileName) then FileClose(FileCreate(LogFileName));
ErrMsg := '[' + FormatDateTime('YYYY:MM:DD:HH:NN', Now) + ']['+ label3.Caption +'] /';
AssignFile(ErrLogfile, LogFileName);
Append(ErrLogfile);
Writeln(ErrLogfile, ErrMsg+ ' 데이타 저장오류 -'+err.message);
ShowMessage('작업이 중지되었습니다. Data확인요망-'+err.message);
CloseFile(ErrLogfile);
//IBTransaction1.Rollback;
exit;
Application.Terminate;
end;
end; //try
finally
Query1.Close;
IBQuery1.Close;
IBQuery2.Close;
Query1.Free;
IBQuery1.Close;
IBQuery2.Close;
Database1.Close;
IBDatabase1.Close;
IBTransaction1.Active := false;
end; //try
end;
|