Q&A

  • sql문으로 입력이 안되요...
소스 입니다.

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 이고요... 감사 ^^



1  COMMENTS
  • Profile
    조복기 2000.05.28 03:16


    안녕하세요..

    먼저 문제점부터 이야기하면 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 이고요... 감사 ^^

    >