무작정 전체 소스를 몽땅 올려놓고는, '어디서 에러가 나는지부터 시작해서 원인까지 다 찾아봐라..' 라는 뜻 맞습니까?
급하신 사정도 있을 수 있겠지만, 질문하실 때도 에티켓이 있고, 굳이 에티켓을 따지지 않더라도 적어도 어느 부분에서 어떻게 했더니 어떤 문제가 발생하더라, 라고 써주셔야 문제에 접근할 수 있지 않겠습니까. 답변을 쓰시는 분들이 다른 할 일도 없이 오직 하루종일 답변만 하는 것도 아니고 말이죠. 게다가 보는 입장에서는 님과 달리 해당 데이터베이스를 가진 것도 아니니 당면한 님보다 더 문제를 찾기 힘듭니다. 이렇게 소스만 올려놓고 수정해달라고 하면 답변해드리려고 보던 분들도 막막해집니다.
구체적인 상황을 설명해주세요.
초보 델파이어 님이 쓰신 글 :
: 오라클 데이타를 파이어버드로 옮길려고 하는데...
: 먼가 계속 에러를 띄우는 군요..
: 고수님님들의 조언을 바랍니다.
:
: 아래는 간략한 소스입니다.
:
: 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;
|