소스 입니다.
que1 := 'insert into users (user_no,user_name) ';
que1 := que1 + 'values(:user_no,:user_name)';
parambyname('user_no').paramtype := ptinput; // <-----------
parambyname('user_no').datatype := ftinteger;
parambyname('user_no').asinteger := max_no;
parambyname('user_name').paramtype := ptinput;
parambyname('user_name').datatype := ftstring;
parambyname('user_name').asstring := ename.text;
close;
sql.clear;
sql.add(que1);
try
execsql;
showmessage('성공');
except
showmessage(que1);
end;
위의 표시한 부분에서 'user_no'파라메타가 없다고 에러가 나오네요...
참고로 디자인시에는 파라메타 정의를 하지 않고 소스상에서 모두 처리할려고 합니다.
그럼 부탁 드리겠습니다.델파이 5 이고요... 감사 ^^
안녕하세요..
먼저 문제점부터 이야기하면 que1이란 변수안에 들어가있는 sql문은
ParamByName이라는 함수를 가지고 Tparams(여기서는 user_no)를 찾지못합니다..
TQuery안에 SQL문을 먼저 대입하여주고 하면 TParm을 찾을것같네요..
제가 쓰는방법입니다..
저는 SQL문을 주로 상수화시켜서.. 각자 편한방법으로 하면되죠..
좋은하루되세요~
Const
Insert_Users = 'insert into users (user_no,user_name) '+
' values(:user_no,:user_name) ';
...
...
with Query1 do
begin
close;
SQL.Text := Insert_Users;
// 사실 실행시에는 파람타입이나 데이타입을 주지않아도 상관없습니다..
parambyname('user_no').paramtype := ptinput;
parambyname('user_no').datatype := ftinteger;
parambyname('user_no').asinteger := max_no;
parambyname('user_name').paramtype := ptinput;
parambyname('user_name').datatype := ftstring;
parambyname('user_name').asstring := ename.text;
Prepare;
try
execsql;
showmessage('성공');
except
showmessage(que1);
end;
end;
정원혁 wrote:
> 소스 입니다.
> que1 := 'insert into users (user_no,user_name) ';
> que1 := que1 + 'values(:user_no,:user_name)';
> parambyname('user_no').paramtype := ptinput; // <-----------
> parambyname('user_no').datatype := ftinteger;
> parambyname('user_no').asinteger := max_no;
> parambyname('user_name').paramtype := ptinput;
> parambyname('user_name').datatype := ftstring;
> parambyname('user_name').asstring := ename.text;
> close;
> sql.clear;
> sql.add(que1);
> try
> execsql;
> showmessage('성공');
> except
> showmessage(que1);
> end;
>
> 위의 표시한 부분에서 'user_no'파라메타가 없다고 에러가 나오네요...
> 참고로 디자인시에는 파라메타 정의를 하지 않고 소스상에서 모두 처리할려고 합니다.
> 그럼 부탁 드리겠습니다.델파이 5 이고요... 감사 ^^
>