Q&A

  • ADOQuery 로 Insert 시 에러가 ...
에러 : 매개변수 개체를 잘못 정의했습니다.

제공된 정보가 일치하지 않거나 완전하지 않습니다.



아래와 같이 파라미터를 쓸 때, 에러가 납니다.

물론, Field 'Name'은 Null을 허용합니다.



with ADOQuery1 do begin

Close;

Sql.Clear;

Sql.Add(' INSERT INTO Table '

+ ' ( ID, Name ) '

+ ' VALUES '

+ ' ( :ID, :Name ) ');

Parameters.ParamByName('ID').Value := i;

// 스페이스를 넣으면 정상적으로 수행

Parameters.ParamByName('Name').Value := '';

ExecSQL;

end;



어떤 설정을 해야 하나요?

아니면, 방법이 없나요...





2  COMMENTS
  • Profile
    김종언 2000.12.08 20:09
    그냥 테이블에서 입력하는 것과 같이 입력하셔도 됩니다...

    adoquery1.append;

    adoquery1.fieldbyname('field').asstring := edit1.text;

    adoquery1.post;

    이것도 가능하니깐요... 궂이 그렇게 sql문장을 사용하지 않으셔도 됩니다.







    석이 wrote:

    > 에러 : 매개변수 개체를 잘못 정의했습니다.

    > 제공된 정보가 일치하지 않거나 완전하지 않습니다.

    >

    > 아래와 같이 파라미터를 쓸 때, 에러가 납니다.

    > 물론, Field 'Name'은 Null을 허용합니다.

    >

    > with ADOQuery1 do begin

    > Close;

    > Sql.Clear;

    > Sql.Add(' INSERT INTO Table '

    > + ' ( ID, Name ) '

    > + ' VALUES '

    > + ' ( :ID, :Name ) ');

    > Parameters.ParamByName('ID').Value := i;

    > // 스페이스를 넣으면 정상적으로 수행

    > Parameters.ParamByName('Name').Value := '';

    > ExecSQL;

    > end;

    >

    > 어떤 설정을 해야 하나요?

    > 아니면, 방법이 없나요...

    >

    >

  • Profile
    석이 2000.12.09 01:49
    그런 방법이 있었네요 !...

    답변 정말 감사합니다.



    그런데, 속도나 효율성에서도 괜찮은 지도 좀 궁금한데요?







    김종언 wrote:

    > 그냥 테이블에서 입력하는 것과 같이 입력하셔도 됩니다...

    > adoquery1.append;

    > adoquery1.fieldbyname('field').asstring := edit1.text;

    > adoquery1.post;

    > 이것도 가능하니깐요... 궂이 그렇게 sql문장을 사용하지 않으셔도 됩니다.

    >

    >

    >

    > 석이 wrote:

    > > 에러 : 매개변수 개체를 잘못 정의했습니다.

    > > 제공된 정보가 일치하지 않거나 완전하지 않습니다.

    > >

    > > 아래와 같이 파라미터를 쓸 때, 에러가 납니다.

    > > 물론, Field 'Name'은 Null을 허용합니다.

    > >

    > > with ADOQuery1 do begin

    > > Close;

    > > Sql.Clear;

    > > Sql.Add(' INSERT INTO Table '

    > > + ' ( ID, Name ) '

    > > + ' VALUES '

    > > + ' ( :ID, :Name ) ');

    > > Parameters.ParamByName('ID').Value := i;

    > > // 스페이스를 넣으면 정상적으로 수행

    > > Parameters.ParamByName('Name').Value := '';

    > > ExecSQL;

    > > end;

    > >

    > > 어떤 설정을 해야 하나요?

    > > 아니면, 방법이 없나요...

    > >

    > >