Q&A

  • Re: sql을 사용한 수정 부분입니다...실행은 되는데 수정이 되지않아요..조언좀...
안녕하세요

청개구리 남기석입니다.



제가 볼때.... 이대로 실행하면 Error가 날 것 같은데요...

항목들 사이에 ','가 안보여서요...

음..옮겨 적으면서 빼먹으신 거겠죠?

실행이 된다고 하신걸 보면요..



암튼...이렇게 해 보세요..



with query1 do

begin

close;

sql.clear;

sql.Add(' update dlp4 set');

sql.add(' name=:name,');

sql.add(' code=:code,');

sql.add(' teachar=:teachar,');

sql.add(' old=:old');

sql.Add(' where name=:name');

sql.add(' and teachar='''+teachar+'''');

sql.add(' and old='''+old+'''');

parambyname('name').asstring:=edit1.text;

parambyname('code').asstring:=edit2.text;

parambyname('teachar').asstring:=combobox2.text;

parambyname('old').asstring:=combobox1.text;

execsql;

end;



제가 볼땐...

Where 문장의 name 때문에 저장이 안된 것 같네요...



파라미터 넘길때... 'edit1.text' 라고 하면...

edit1 이라는 콘트롤의 text 값이 넘어가는게 아니고...

'edit1.text' 라는 스트링이 넘어가니까요...



Update 문장은 조건과 같은게 없으면...

실행만되고 아무것도 바뀌는게 없거든요...



행복하세요...



========================================================================================

델파이 초보자 wrote:

> with query1 do

> begin

> close;

> sql.clear;

> sql.Add('update dlp4 set');

> sql.add('name=:name');

> sql.add('code=:code');

> sql.add('teachar=:teachar');

> sql.add('old=:old');

> sql.Add('where name =:name ');

> sql.add('and teachar='''+teachar+'''');

> sql.add('and old='''+old+'''');

> prepare;

> parambyname('name').asstring:='edit1.text';

> parambyname('code').asstring:='edit2.text';

> parambyname('teachar').asstring:='combobox2.text';

> parambyname('old').asstring:='combobox1.text';

> execsql;

> showmessage('선택항목을 수정하였습니다');

>

5  COMMENTS
  • Profile
    한미르 2000.10.19 14:38
    어~수정 코딩 부분에서요..checkbox는 어떻게 처리하는지...!!

    다른 컴포넌트들을 다했는데...checkbox땜에..잘안돼네여..빨리 고쳐서...

    언능언능 해야하는데....

    청개구리님...알려주세요..

    남기석 wrote:

    > 안녕하세요

    > 청개구리 남기석입니다.

    >

    > 제가 볼때.... 이대로 실행하면 Error가 날 것 같은데요...

    > 항목들 사이에 ','가 안보여서요...

    > 음..옮겨 적으면서 빼먹으신 거겠죠?

    > 실행이 된다고 하신걸 보면요..

    >

    > 암튼...이렇게 해 보세요..

    >

    > with query1 do

    > begin

    > close;

    > sql.clear;

    > sql.Add(' update dlp4 set');

    > sql.add(' name=:name,');

    > sql.add(' code=:code,');

    > sql.add(' teachar=:teachar,');

    > sql.add(' old=:old');

    > sql.Add(' where name=:name');

    > sql.add(' and teachar='''+teachar+'''');

    > sql.add(' and old='''+old+'''');

    > parambyname('name').asstring:=edit1.text;

    > parambyname('code').asstring:=edit2.text;

    > parambyname('teachar').asstring:=combobox2.text;

    > parambyname('old').asstring:=combobox1.text;

    > execsql;

    > end;

    >

    > 제가 볼땐...

    > Where 문장의 name 때문에 저장이 안된 것 같네요...

    >

    > 파라미터 넘길때... 'edit1.text' 라고 하면...

    > edit1 이라는 콘트롤의 text 값이 넘어가는게 아니고...

    > 'edit1.text' 라는 스트링이 넘어가니까요...

    >

    > Update 문장은 조건과 같은게 없으면...

    > 실행만되고 아무것도 바뀌는게 없거든요...

    >

    > 행복하세요...

    >

    > ========================================================================================

    > 델파이 초보자 wrote:

    > > with query1 do

    > > begin

    > > close;

    > > sql.clear;

    > > sql.Add('update dlp4 set');

    > > sql.add('name=:name');

    > > sql.add('code=:code');

    > > sql.add('teachar=:teachar');

    > > sql.add('old=:old');

    > > sql.Add('where name =:name ');

    > > sql.add('and teachar='''+teachar+'''');

    > > sql.add('and old='''+old+'''');

    > > prepare;

    > > parambyname('name').asstring:='edit1.text';

    > > parambyname('code').asstring:='edit2.text';

    > > parambyname('teachar').asstring:='combobox2.text';

    > > parambyname('old').asstring:='combobox1.text';

    > > execsql;

    > > showmessage('선택항목을 수정하였습니다');

    > >

  • Profile
    남기석 2000.10.20 10:11
    안녕하세요

    청개구리 남기석입니다.



    체크박스로 체크해야 하는 필드가 Boolean 형이라면...



    sql.add( ' where 어쩌구 저쩌구 ');

    sql.add( ' and CheckField1 = :pCheck1 ');

    parambyname('pCheck1').asBoolean := checkbox1.checked;



    체크박스로 체크해야 하는 필드가 String 형이라면...



    sql.add( ' where 어쩌구 저쩌구 ');

    sql.add( ' and CheckString1 = :pCheckString ');

    if CheckBox1.Checked then

    parambyname('pCheckString').asString := '1'

    else

    parambyname('pCheckString').asString := '0';



    이렇게 하세요...



    ==============================================================================



    한미르 wrote:

    > 어~수정 코딩 부분에서요..checkbox는 어떻게 처리하는지...!!

    > 다른 컴포넌트들을 다했는데...checkbox땜에..잘안돼네여..빨리 고쳐서...

    > 언능언능 해야하는데....

    > 청개구리님...알려주세요..

    > 남기석 wrote:

    > > 안녕하세요

    > > 청개구리 남기석입니다.

    > >

    > > 제가 볼때.... 이대로 실행하면 Error가 날 것 같은데요...

    > > 항목들 사이에 ','가 안보여서요...

    > > 음..옮겨 적으면서 빼먹으신 거겠죠?

    > > 실행이 된다고 하신걸 보면요..

    > >

    > > 암튼...이렇게 해 보세요..

    > >

    > > with query1 do

    > > begin

    > > close;

    > > sql.clear;

    > > sql.Add(' update dlp4 set');

    > > sql.add(' name=:name,');

    > > sql.add(' code=:code,');

    > > sql.add(' teachar=:teachar,');

    > > sql.add(' old=:old');

    > > sql.Add(' where name=:name');

    > > sql.add(' and teachar='''+teachar+'''');

    > > sql.add(' and old='''+old+'''');

    > > parambyname('name').asstring:=edit1.text;

    > > parambyname('code').asstring:=edit2.text;

    > > parambyname('teachar').asstring:=combobox2.text;

    > > parambyname('old').asstring:=combobox1.text;

    > > execsql;

    > > end;

    > >

    > > 제가 볼땐...

    > > Where 문장의 name 때문에 저장이 안된 것 같네요...

    > >

    > > 파라미터 넘길때... 'edit1.text' 라고 하면...

    > > edit1 이라는 콘트롤의 text 값이 넘어가는게 아니고...

    > > 'edit1.text' 라는 스트링이 넘어가니까요...

    > >

    > > Update 문장은 조건과 같은게 없으면...

    > > 실행만되고 아무것도 바뀌는게 없거든요...

    > >

    > > 행복하세요...

    > >

    > > ========================================================================================

    > > 델파이 초보자 wrote:

    > > > with query1 do

    > > > begin

    > > > close;

    > > > sql.clear;

    > > > sql.Add('update dlp4 set');

    > > > sql.add('name=:name');

    > > > sql.add('code=:code');

    > > > sql.add('teachar=:teachar');

    > > > sql.add('old=:old');

    > > > sql.Add('where name =:name ');

    > > > sql.add('and teachar='''+teachar+'''');

    > > > sql.add('and old='''+old+'''');

    > > > prepare;

    > > > parambyname('name').asstring:='edit1.text';

    > > > parambyname('code').asstring:='edit2.text';

    > > > parambyname('teachar').asstring:='combobox2.text';

    > > > parambyname('old').asstring:='combobox1.text';

    > > > execsql;

    > > > showmessage('선택항목을 수정하였습니다');

    > > >

  • Profile
    델파이 초보자 2000.10.19 13:31
    감사합니다...

    정말루 고마워요..

    정말루 급했는데 이렇게 빨리 답변을 받을지는 몰랐어요..

    고맙다는 말뿐만 생각이나내요..

    저는 진짜 왕초보로 잘모르거든요..아무튼 정말루 감사합니다

    남기석 wrote:

    > 안녕하세요

    > 청개구리 남기석입니다.

    >

    > 제가 볼때.... 이대로 실행하면 Error가 날 것 같은데요...

    > 항목들 사이에 ','가 안보여서요...

    > 음..옮겨 적으면서 빼먹으신 거겠죠?

    > 실행이 된다고 하신걸 보면요..

    >

    > 암튼...이렇게 해 보세요..

    >

    > with query1 do

    > begin

    > close;

    > sql.clear;

    > sql.Add(' update dlp4 set');

    > sql.add(' name=:name,');

    > sql.add(' code=:code,');

    > sql.add(' teachar=:teachar,');

    > sql.add(' old=:old');

    > sql.Add(' where name=:name');

    > sql.add(' and teachar='''+teachar+'''');

    > sql.add(' and old='''+old+'''');

    > parambyname('name').asstring:=edit1.text;

    > parambyname('code').asstring:=edit2.text;

    > parambyname('teachar').asstring:=combobox2.text;

    > parambyname('old').asstring:=combobox1.text;

    > execsql;

    > end;

    >

    > 제가 볼땐...

    > Where 문장의 name 때문에 저장이 안된 것 같네요...

    >

    > 파라미터 넘길때... 'edit1.text' 라고 하면...

    > edit1 이라는 콘트롤의 text 값이 넘어가는게 아니고...

    > 'edit1.text' 라는 스트링이 넘어가니까요...

    >

    > Update 문장은 조건과 같은게 없으면...

    > 실행만되고 아무것도 바뀌는게 없거든요...

    >

    > 행복하세요...

    >

    > ========================================================================================

    > 델파이 초보자 wrote:

    > > with query1 do

    > > begin

    > > close;

    > > sql.clear;

    > > sql.Add('update dlp4 set');

    > > sql.add('name=:name');

    > > sql.add('code=:code');

    > > sql.add('teachar=:teachar');

    > > sql.add('old=:old');

    > > sql.Add('where name =:name ');

    > > sql.add('and teachar='''+teachar+'''');

    > > sql.add('and old='''+old+'''');

    > > prepare;

    > > parambyname('name').asstring:='edit1.text';

    > > parambyname('code').asstring:='edit2.text';

    > > parambyname('teachar').asstring:='combobox2.text';

    > > parambyname('old').asstring:='combobox1.text';

    > > execsql;

    > > showmessage('선택항목을 수정하였습니다');

    > >

  • Profile
    델파이 초보자 2000.10.19 13:27


    > >

    정말루 감사합니다..

    사실은 제대로 실행이 안되었거든요...

    근데 저도 모르게 된다고 쓰고 말았어요..

    아무튼 정말루 고마습니다..

    다음에 의문점이 생기면 또 질문을 할께요..

    그때도 친절하게 가르쳐 주시면 감사해요..

    ~~실행은 되느데 결과값이 바뀌지 않아요..

    뭐가 잘못된건지...다시 한번만 더 조언좀 부탁해요.

    이런식으로 변수도 선언해주었는데..

    뭔가 이상한거 같아요..

    에러는 없는데 결과가 변하지 않아요..



    var

    Form3: TForm3;

    code_div:string;

    teachar_div:string;

    old_div:string;





    implementation



    uses Unit1;

    procedure TForm3.ToolButton1Click(Sender: TObject);

    begin



    with query1 do

    begin

    close;

    sql.clear;

    sql.Add(' update dlp4 set');

    sql.add(' name=:name,');

    sql.add(' code=:code,');

    sql.add(' teachar=:teachar,');

    sql.add(' old=:old');

    sql.Add(' where name=:name');

    sql.add(' and teachar='''+teachar_div+'''');

    sql.add(' and old='''+old_div+'''');

    parambyname('name').asstring:=edit1.text;

    parambyname('code').asstring:=edit2.text;

    parambyname('teachar').asstring:=combobox2.text;

    parambyname('old').asstring:=combobox1.text;

    execsql;

    showmessage('선택항목을 수정하였습니다');

    form1.query1.close;

    form1.query1.open;

    close;



  • Profile
    이광형 2000.10.19 21:13
    안녕하세요...

    코딩을 보니 update 문에 수정하고자 하는 필드가 code 밖에 없는것 같은데...

    이렇게 코딩해 보시죠^^

    with query1 do

    begin

    close;

    sql.clear;

    sql.Add(' update dlp4 set code=:code');

    sql.Add(' where name=:name and teachar=:teachar and old= :old');

    parambyname('name').asstring:=trim(edit1.text);

    parambyname('code').asstring:=trim(edit2.text);

    parambyname('teachar').asstring:=trim(combobox2.text);

    parambyname('old').asstring:=trim(combobox1.text);

    execsql;

    showmessage('선택항목을 수정하였습니다');







    > var

    > Form3: TForm3;

    > code_div:string;

    > teachar_div:string;

    > old_div:string;

    >

    >

    > implementation

    >

    > uses Unit1;

    > procedure TForm3.ToolButton1Click(Sender: TObject);

    > begin

    >

    > with query1 do

    > begin

    > close;

    > sql.clear;

    > sql.Add(' update dlp4 set');

    > sql.add(' name=:name,');

    > sql.add(' code=:code,');

    > sql.add(' teachar=:teachar,');

    > sql.add(' old=:old');

    > sql.Add(' where name=:name');

    > sql.add(' and teachar='''+teachar_div+'''');

    > sql.add(' and old='''+old_div+'''');

    > parambyname('name').asstring:=edit1.text;

    > parambyname('code').asstring:=edit2.text;

    > parambyname('teachar').asstring:=combobox2.text;

    > parambyname('old').asstring:=combobox1.text;

    > execsql;

    > showmessage('선택항목을 수정하였습니다');

    > form1.query1.close;

    > form1.query1.open;

    > close;

    >