안녕하세요.
제발좀 도와주세요.
저는 델파이를 공부하는 학생인데 정말 초보거든요.
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;
먼저 아래의 소스에 대해선 언급하지 않고 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;