Q&A

  • 데이터저장할때...... 제발 도와주세요~
sql문이...

UPDATE KORMAP03

SET LAYER_ITEM = :S1, ITEM_NAME = :S2, ITEM_TEL = :S3,

ITEM_ADDRESS = :S4, ITEM_TOUR = :S5, ITEM_PARKING= :S6,

ITEM_OPEN_MSSG_1 = :S7, ITEM_OPEN_MSSG_2 = :S8,ITEM_OPEN_MSSG_3 = :S9,

ITEM_OPEN_MSSG_4 = :S10, ITEM_REMARK_1 = :S11, ITEM_REMARK_2 = :S12,

ITEM_REMARK_3 = :S13, ITEM_REMARK_4 = :S14, ITEM_URL = :S15

WHERE LAYER_ITEM = :F1



이고 소스에서 아래와 같이 작성하면 db에 데이타가 저장이 안되나요??

update하면 데이타들이 바로 저장이 되어야 할텐데 저장이 안되요~

어떻게 해야 하죠??



With UPDATE_QRY Do

Begin

close;

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;



2  COMMENTS
  • Profile
    강호규 2001.06.26 01:41
    데이타를 갱신할 경우에는

    with Query do begin

    SQL.Text := 'update .....' //또는 SQL.CLear; SQL.Add('update....');

    ParamByName('파람1').AsString := 파람1;

    ExecSql;

    end;

    와 같은 순서로 되어야 하는데요



    아래의 소스를 보니 close 메쏘드가 중간에 삽입되었는데요

    이러면 이전에 할당한 SQL 문장이 그대로 있진 않겠죠!



    > With UPDATE_QRY Do

    > Begin

    > close;

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

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

    > ..........

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

    > ExecSql;

    > END;







    짱아 wrote:

    > sql문이...

    > UPDATE KORMAP03

    > SET LAYER_ITEM = :S1, ITEM_NAME = :S2, ITEM_TEL = :S3,

    > ITEM_ADDRESS = :S4, ITEM_TOUR = :S5, ITEM_PARKING= :S6,

    > ITEM_OPEN_MSSG_1 = :S7, ITEM_OPEN_MSSG_2 = :S8,ITEM_OPEN_MSSG_3 = :S9,

    > ITEM_OPEN_MSSG_4 = :S10, ITEM_REMARK_1 = :S11, ITEM_REMARK_2 = :S12,

    > ITEM_REMARK_3 = :S13, ITEM_REMARK_4 = :S14, ITEM_URL = :S15

    > WHERE LAYER_ITEM = :F1

    >

    > 이고 소스에서 아래와 같이 작성하면 db에 데이타가 저장이 안되나요??

    > update하면 데이타들이 바로 저장이 되어야 할텐데 저장이 안되요~

    > 어떻게 해야 하죠??

    >

    > With UPDATE_QRY Do

    > Begin

    > close;

    > 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;

    >

  • Profile
    강호규 2001.06.23 04:05
    글쎄요.....

    저장이 않되면 그때 발생하는 에러 메시지를 올려 주셔야

    정확한 진단이 될 것 같구요.

    아래의 내용은 정확히 확인하기가 힘들군요.

    팁을 하나 알려드려면

    SQL을 실행했는데 에러가 난다면

    SQL.Text 즉 할당한 쿼리문장에서 에러가 나는 경우가 많습니다.

    에러메시지를 보고도 정확한 진단이 되지 않을 때는

    SQL.SaveToFile('않되네.txt') 메쏘드를 이용해서

    사용자가 할당한 문장이

    사용자의 의도에 맞게 DB에 전달되었는가를 확인하시면

    좀 더 빠르게 에러의 원인을 찾을 수 있습니다.



    아래의 내용에



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

    SQL.SaveToFile('않되네.txt'); 메쏘드를 이용해서

    ExecSql; <---- 이곳에서 에러가 발생하면

    탐색기를 열어 않되네.txt 를 오픈하여

    쿼리문장이 사용자의 의도대로 할당되었는지를 확인.



    짱아 wrote:

    > sql문이...

    > UPDATE KORMAP03

    > SET LAYER_ITEM = :S1, ITEM_NAME = :S2, ITEM_TEL = :S3,

    > ITEM_ADDRESS = :S4, ITEM_TOUR = :S5, ITEM_PARKING= :S6,

    > ITEM_OPEN_MSSG_1 = :S7, ITEM_OPEN_MSSG_2 = :S8,ITEM_OPEN_MSSG_3 = :S9,

    > ITEM_OPEN_MSSG_4 = :S10, ITEM_REMARK_1 = :S11, ITEM_REMARK_2 = :S12,

    > ITEM_REMARK_3 = :S13, ITEM_REMARK_4 = :S14, ITEM_URL = :S15

    > WHERE LAYER_ITEM = :F1

    >

    > 이고 소스에서 아래와 같이 작성하면 db에 데이타가 저장이 안되나요??

    > update하면 데이타들이 바로 저장이 되어야 할텐데 저장이 안되요~

    > 어떻게 해야 하죠??

    >

    > With UPDATE_QRY Do

    > Begin

    > close;

    > 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;

    >