Q&A

  • Edatabaseerror.... ?? 가 왜나는지... (소스같이 올려요~)
Project Korm03pe.exe raised exception class EDatabaseError with message'Query2:

Cannot perform this operation on a closed dataset'. Porcess stopped. Use Step or

Run to continue.



위와 같은 에러가 나는데요..

무슨문제가 있는것인지... 여러 텍스트박스에 데이타들을 채워넣고 저장버튼을 눌러 데이터를 update시켜주는데서 이런 에러가 나는데요...

소스가.... 아래와 같은데요....

뭐가문제인지... ㅜ.ㅜ 아시는분 도움좀 주세요~ 감사함다~



procedure TForm1.BtnPostClick(Sender: TObject);

Var L1 : String;

begin

If

MessageDlg('☞ 수정된 내용을 저장하시겠습니까?...',mtConfirmation, [mbYes, mbNo], 0) = mrYes Then

begin

With UPDATE_QRY Do

Begin

ParamByName('S1').AsString := eITEM.Text;

ParamByName('S2').AsString := eNAME.Text;

ParamByName('S3').AsString := eTEL.Text;

ParamByName('S4').AsString := eADDR.Text;

ParamByName('S5').AsString := eTOUR.Text;

ParamByName('S6').AsString := ePARK.Text;

ParamByName('S7').AsString := eOPEN_MSSG1.Text;

ParamByName('S8').AsString := eOPEN_MSSG2.Text;

ParamByName('S9').AsString := eOPEN_MSSG3.Text;

ParamByName('S10').AsString := eOPEN_MSSG4.Text;

ParamByName('S11').AsString := eREMARK1.Text;

ParamByName('S12').AsString := eREMARK2.Text;

ParamByName('S13').AsString := eREMARK3.Text;

ParamByName('S14').AsString := eREMARK4.Text;

ParamByName('S15').AsString := eURL.Text;

ParamByName('F1').AsString := Query2.FieldByName('LAYER_ITEM').AsString;

ExecSql;

END;

// PostTable.Refresh;

L1 := Query2.FieldByName('LAYER_ITEM').AsString;

{ L2 := Query2.FieldByName('LAYER_ITEM').AsString; }

//@@@

// L3 := Query2.FieldByName('CDNAME1').AsString;

User_MOpen(11);



With Query2 Do

Locate('LAYER_ITEM', VarArrayOf([L1]), [loPartialKey]);

panel3.enabled := true;

panel4.enabled := False;

BtnPost.Enabled := False;

BtnCancel.Enabled := False;

Dbgrid1.SetFocus;

end

else

With UPDATE_QRY Do

Begin

ParamByName('S1').AsString := Query2.FieldByName('LAYER_ITEM').AsString;

ParamByName('S2').AsString := Query2.FieldByName('ITEM_NAME').AsString;

ParamByName('S3').AsString := Query2.FieldByName('ITEM_TEL').AsString;

ParamByName('S4').AsString := Query2.FieldByName('ITEM_ADDRESS').AsString;

ParamByName('S5').AsString := Query2.FieldByName('ITEM_TOUR').AsString;

ParamByName('S6').AsString := Query2.FieldByName('ITEM_PARKING').AsString;

ParamByName('S7').AsString := Query2.FieldByName('ITEM_OPEN_MSSG_1').AsString;

ParamByName('S8').AsString := Query2.FieldByName('ITEM_OPEN_MSSG_2').AsString;

ParamByName('S9').AsString := Query2.FieldByName('ITEM_OPEN_MSSG_3').AsString;

ParamByName('S10').AsString := Query2.FieldByName('ITEM_OPEN_MSSG_4').AsString;

ParamByName('S11').AsString := Query2.FieldByName('ITEM_REMARK_1').AsString;

ParamByName('S12').AsString := Query2.FieldByName('ITEM_REMARK_2').AsString;

ParamByName('S13').AsString := Query2.FieldByName('ITEM_REMARK_3').AsString;

ParamByName('S14').AsString := Query2.FieldByName('ITEM_REMARK_4').AsString;

ParamByName('S15').AsString := Query2.FieldByName('ITEM_URL').AsString;

ParamByName('F1').AsString := Query2.FieldByName('LAYER_ITEM').AsString;

// ParamByName('F2').AsString := Query2.FieldByName('LAYER_ITEM').AsString;

ExecSql;

L1 := Query2.FieldByName('LAYER_ITEM').AsString;

// L2 := Query2.FieldByName('LAYER_ITEM').AsString;

// L3 := Query2.FieldByName('CDNAME1').AsString;

User_MOpen(11);



With Query2 Do

Locate('LAYER_ITEM', VarArrayOf([L1]), [loPartialKey]);

panel3.enabled := true;

panel4.enabled := false;

BtnPost.Enabled := false;

BtnCancel.Enabled := false;

Dbgrid1.SetFocus;

end;

end;



2  COMMENTS
  • Profile
    블랙봉 2001.06.22 20:24
    Query2가 오픈되지 않은 상태에서 사용하시는 것 같은데요.



    짱아 wrote:

    > Project Korm03pe.exe raised exception class EDatabaseError with message'Query2:

    > Cannot perform this operation on a closed dataset'. Porcess stopped. Use Step or

    > Run to continue.

    >

    > 위와 같은 에러가 나는데요..

    > 무슨문제가 있는것인지... 여러 텍스트박스에 데이타들을 채워넣고 저장버튼을 눌러 데이터를 update시켜주는데서 이런 에러가 나는데요...

    > 소스가.... 아래와 같은데요....

    > 뭐가문제인지... ㅜ.ㅜ 아시는분 도움좀 주세요~ 감사함다~

    >

    > procedure TForm1.BtnPostClick(Sender: TObject);

    > Var L1 : String;

    > begin

    > If

    > MessageDlg('☞ 수정된 내용을 저장하시겠습니까?...',mtConfirmation, [mbYes, mbNo], 0) = mrYes Then

    > begin

    > With UPDATE_QRY Do

    > Begin

    > ParamByName('S1').AsString := eITEM.Text;

    > ParamByName('S2').AsString := eNAME.Text;

    > ParamByName('S3').AsString := eTEL.Text;

    > ParamByName('S4').AsString := eADDR.Text;

    > ParamByName('S5').AsString := eTOUR.Text;

    > ParamByName('S6').AsString := ePARK.Text;

    > ParamByName('S7').AsString := eOPEN_MSSG1.Text;

    > ParamByName('S8').AsString := eOPEN_MSSG2.Text;

    > ParamByName('S9').AsString := eOPEN_MSSG3.Text;

    > ParamByName('S10').AsString := eOPEN_MSSG4.Text;

    > ParamByName('S11').AsString := eREMARK1.Text;

    > ParamByName('S12').AsString := eREMARK2.Text;

    > ParamByName('S13').AsString := eREMARK3.Text;

    > ParamByName('S14').AsString := eREMARK4.Text;

    > ParamByName('S15').AsString := eURL.Text;

    > ParamByName('F1').AsString := Query2.FieldByName('LAYER_ITEM').AsString;

    > ExecSql;

    > END;

    > // PostTable.Refresh;

    > L1 := Query2.FieldByName('LAYER_ITEM').AsString;

    > { L2 := Query2.FieldByName('LAYER_ITEM').AsString; }

    > //@@@

    > // L3 := Query2.FieldByName('CDNAME1').AsString;

    > User_MOpen(11);

    >

    > With Query2 Do

    > Locate('LAYER_ITEM', VarArrayOf([L1]), [loPartialKey]);

    > panel3.enabled := true;

    > panel4.enabled := False;

    > BtnPost.Enabled := False;

    > BtnCancel.Enabled := False;

    > Dbgrid1.SetFocus;

    > end

    > else

    > With UPDATE_QRY Do

    > Begin

    > ParamByName('S1').AsString := Query2.FieldByName('LAYER_ITEM').AsString;

    > ParamByName('S2').AsString := Query2.FieldByName('ITEM_NAME').AsString;

    > ParamByName('S3').AsString := Query2.FieldByName('ITEM_TEL').AsString;

    > ParamByName('S4').AsString := Query2.FieldByName('ITEM_ADDRESS').AsString;

    > ParamByName('S5').AsString := Query2.FieldByName('ITEM_TOUR').AsString;

    > ParamByName('S6').AsString := Query2.FieldByName('ITEM_PARKING').AsString;

    > ParamByName('S7').AsString := Query2.FieldByName('ITEM_OPEN_MSSG_1').AsString;

    > ParamByName('S8').AsString := Query2.FieldByName('ITEM_OPEN_MSSG_2').AsString;

    > ParamByName('S9').AsString := Query2.FieldByName('ITEM_OPEN_MSSG_3').AsString;

    > ParamByName('S10').AsString := Query2.FieldByName('ITEM_OPEN_MSSG_4').AsString;

    > ParamByName('S11').AsString := Query2.FieldByName('ITEM_REMARK_1').AsString;

    > ParamByName('S12').AsString := Query2.FieldByName('ITEM_REMARK_2').AsString;

    > ParamByName('S13').AsString := Query2.FieldByName('ITEM_REMARK_3').AsString;

    > ParamByName('S14').AsString := Query2.FieldByName('ITEM_REMARK_4').AsString;

    > ParamByName('S15').AsString := Query2.FieldByName('ITEM_URL').AsString;

    > ParamByName('F1').AsString := Query2.FieldByName('LAYER_ITEM').AsString;

    > // ParamByName('F2').AsString := Query2.FieldByName('LAYER_ITEM').AsString;

    > ExecSql;

    > L1 := Query2.FieldByName('LAYER_ITEM').AsString;

    > // L2 := Query2.FieldByName('LAYER_ITEM').AsString;

    > // L3 := Query2.FieldByName('CDNAME1').AsString;

    > User_MOpen(11);

    >

    > With Query2 Do

    > Locate('LAYER_ITEM', VarArrayOf([L1]), [loPartialKey]);

    > panel3.enabled := true;

    > panel4.enabled := false;

    > BtnPost.Enabled := false;

    > BtnCancel.Enabled := false;

    > Dbgrid1.SetFocus;

    > end;

    > end;

    >

  • Profile
    Larson 2001.06.22 20:23
    쿼리들을 close 한 후에 수행해 보세요.



    query.close;

    query.parambyname('...').asstring := '....';

    query.execsql;



    이렇게요..