Q&A

  • Query로 수정하는 방법좀...
안녕하세요.

제발좀 도와주세요.

저는 델파이를 공부하는 학생인데 정말 초보거든요.

Query로 레코드를 삽입, 수정, 삭제를 하려고 하는데 수정에서 꽉막혀서요...



Query에서의 UpDate 때문에 한 5일은 해메고 있습니다.

수정을 하려고하는데 이러게하면 수정이 될때가 있고 않될때가 있고 만약에 되더라도 레코드 전부 바뀌는 수가 허다하니....

조건에서 정말 이해가 않가는군요...

제발좀 도와주세요...



테이블명 : test

필드명 : test1, test2, test3



procedure TForm1.Button2Click(Sender: TObject);

begin

with Query1 Do

begin

Close;

Sql.Clear;

Sql.Add('UpDate test'); //테이블명//

Sql.Add('Set test1 = :name, test2 = :tel, test3 = :addres'); //필드선정//

Sql.Add('Where test1 = :name'); //조건설정//

ParambyName('name').AsString := Edit1.Text; //받는 곳 설정//

ParambyName('tel').AsString := Edit2.Text;

ParambyName('addres').AsString := Edit3.Text;

ExecSQL;

end;



with Query1 Do

begin

close();

sql.Clear();

sql.add('select * from test');

open();

end;

end;

1  COMMENTS
  • Profile
    김상면 1999.11.25 00:56
    안녕하세요...

    먼저 아래의 소스에 대해선 언급하지 않고 Update 문에 대해서 말씁드리 겠습니다...



    Update Table_Name1 Set Column_Name1 = '777';

    -> 위의 SQL 문장은 Table_Name1의

    Column_Name1을 전부다 '777'로 바꿔버립니다..



    Update Table_Name1 Set Column_Name1 = '777' Where Column_Name1 = '888';

    -> 위의 SQL 문장은 Table_Name1의

    Column_Name1의 값이 '888'인 것만 '777'로 바꿉니다..



    Update Table_Name1 Set Column_Name1 = '777' Where Column_Name2 = '888';

    -> 위의 SQL 문장은 Table_Name1의

    Column_Name2의 값이 '888'인 것만

    Column_Name1의 값을 '777'로 바꿉니다..



    Update Table_Name1 Set Column_Name1 = '777' Where Column_Name2 = '888'

    and Column_Name3 = '999';

    -> 위의 SQL 문장은 Table_Name1의

    Column_Name2의 값이 '888'이고 Column_Name3의 값이 '999'인 것만

    Column_Name1의 값을 '777'로 바꿉니다..



    Update Table_Name1 Set Column_Name1 = '777' Where Column_Name2 = '888'

    or Column_Name3 = '999';

    -> 위의 SQL 문장은 Table_Name1의

    Column_Name2의 값이 '888'이거나 Column_Name3의 값이 '999'인 것만

    Column_Name1의 값을 '777'로 바꿉니다..



    Update Table_Name1 Set Column_Name1 = '777'

    Where Column_Name1 = '333' and (Column_Name2 = '888' or Column_Name3 = '999');

    -> 위의 SQL 문장은 Table_Name1의

    Column_Name1의 값이 '333'이고

    (Column_Name2의 값이 '888'이거나 Column_Name3의 값이 '999')인 것만

    Column_Name1의 값을 '777'로 바꿉니다..



    원하지 않는 값이 변경되는 것은 아마 Update 문을 잘못 쓰셔서 그런 거 같네요..



    열시미 하세요...

    그리고 행복하세요...



    조성윤 wrote:

    > 안녕하세요.

    > 제발좀 도와주세요.

    > 저는 델파이를 공부하는 학생인데 정말 초보거든요.

    > Query로 레코드를 삽입, 수정, 삭제를 하려고 하는데 수정에서 꽉막혀서요...

    >

    > Query에서의 UpDate 때문에 한 5일은 해메고 있습니다.

    > 수정을 하려고하는데 이러게하면 수정이 될때가 있고 않될때가 있고 만약에 되더라도 레코드 전부 바뀌는 수가 허다하니....

    > 조건에서 정말 이해가 않가는군요...

    > 제발좀 도와주세요...

    >

    > 테이블명 : test

    > 필드명 : test1, test2, test3

    >

    > procedure TForm1.Button2Click(Sender: TObject);

    > begin

    > with Query1 Do

    > begin

    > Close;

    > Sql.Clear;

    > Sql.Add('UpDate test'); //테이블명//

    > Sql.Add('Set test1 = :name, test2 = :tel, test3 = :addres'); //필드선정//

    > Sql.Add('Where test1 = :name'); //조건설정//

    > ParambyName('name').AsString := Edit1.Text; //받는 곳 설정//

    > ParambyName('tel').AsString := Edit2.Text;

    > ParambyName('addres').AsString := Edit3.Text;

    > ExecSQL;

    > end;

    >

    > with Query1 Do

    > begin

    > close();

    > sql.Clear();

    > sql.add('select * from test');

    > open();

    > end;

    > end;