Bde탭의 TQuery를 Ado탭의 AdoQuery에서 사용하던 방법되로 했는데 자료가 삭제되지 않내요.
var scnt : string;
if length(trim(cnt.text) = 1 then
scnt := '00'+trim(cnt.text)
else if length(trim(cnt.text) = 2 then
scnt := '0'+trim(cnt.text)
else if length(trim(cnt.text) = 3 then
scnt := trim(cnt.text);
==>AdoQueyr 문장
label_sql.close;
label_sql.sql.clear;
label_sql.sql.add('delete * from label where ');
label_sql.sql.add('code = :vcode and cnt = :vcnt');
label_sql.Parameters.ParamByName('vcode').Value := 'Label';
label_sql.Parameters.ParamByName('vcnt').Value := scnt';
label_sql.ExecSql;
위 문장을 TQuery 문장으로
label_sql.close;
label_sql.sql.clear;
label_sql.sql.add('delete from label where ');
label_sql.sql.add('code = :vcode and cnt = :vcnt');
label_sql.ParamByName('vcode').Value := 'Label';
label_sql.ParamByName('vcnt').Value := scnt';
label_sql.ExecSql;
이렇게 하고 실행하면 여전히 자료가 있읍니다.
뭐가 잘못되어서 그런건지 모르겠네요.
안녕하세요~
위의 문장은 그리 틀린 것은 없는 것으로 보이네요~
단, DB가 어느 것인지에 따라 틀릴 수 있을 것 같습니다.
만약, access DB 를 사용하시는 것이라면 parambyname 문장이
제대로 동작하지 않을 수 있습니다.
두가지 방법이 있는데 편한걸로 해보시기 바랍니다.
<1번째>
<2번째>
/* 설명 */
<> 1번째는 Query 컴포넌트의 속성중 Text 속성이 있는데 여기에 쿼리문을 Text 방식으로
입력하는 방법 입니다.
<> 2번째는 동일한 내용에서 ParambyName을 사용하는 것이 아니라 Params 라는 속성을
사용하여 값을 전달하는 방식입니다. ParambyName 과 Params 는 거의 동일하다고
볼 수 있는데 차이는 이름으로 Parameter를 찾는 것이냐 Index로 찾는 것이냐에 따라
다른 것입니다.
위의 두가지 내용으로 하셨는데도 지워지지 않는 것이라면 where 절이 틀리지 않았나 싶네요 ^^
그럼, 즐프하세요 ^^