Q&A

  • ParamByname 과 params[i]의 차이점
if Length(EDTPrizecd1.Text) > 0 then begin

S_.SQL.ADD(' AND PRIZECD >= :SQLPrizecd1 ');

S_.Params[i].AsString := EDTPrizecd1.Text ;

// S_.ParamByName('sqlprizecd1')asString := EDTPrizecd1.Text;

inc(i);

end;



if Length(EDTPrizecd2.Text) > 0 then begin

S_.SQL.ADD(' AND PRIZECD <= :SQLPrizecd2 ');

S_.Params[i].AsString := EDTPrizecd2.Text ;

// S_.ParamByName('sqlprizecd2')asString := EDTPrizecd2.Text ;

end;



S_.Open;



위 주석문 (Parambyname 사용)대로 하면 에러가 나는데 왜 그럴까요

고수님들의 가벼운 답변 부탁드립니다



2  COMMENTS
  • Profile
    김광섭 2001.03.16 03:44
    윤종진 wrote:

    > if Length(EDTPrizecd1.Text) > 0 then begin

    > S_.SQL.ADD(' AND PRIZECD >= :SQLPrizecd1 ');

    > S_.Params[i].AsString := EDTPrizecd1.Text ;

    > // S_.ParamByName('sqlprizecd1')asString := EDTPrizecd1.Text;

    > inc(i);

    > end;

    >

    > if Length(EDTPrizecd2.Text) > 0 then begin

    > S_.SQL.ADD(' AND PRIZECD <= :SQLPrizecd2 ');

    > S_.Params[i].AsString := EDTPrizecd2.Text ;

    > // S_.ParamByName('sqlprizecd2')asString := EDTPrizecd2.Text ;

    > end;

    >

    > S_.Open;

    >

    > 위 주석문 (Parambyname 사용)대로 하면 에러가 나는데 왜 그럴까요

    > 고수님들의 가벼운 답변 부탁드립니다

    >

    두개의 차이는 없다고 생각합니다만

    단지 용도의 차이겠죠. 상황에 따라 편한게 있을테니깐요.

    ParmaByName은 컬럼명을 쓰니깐 혼동의 여지가 없구요.

    Params[i] 은 구지 컬럼을 몰라두 Loop 돌 때 유용하게 쓸수 있잖아요.

    제가 아는정도는 여기가지 ^^

    위에서 .AsString 인데 . 이 없네요 --;; 타입을 모르때는 Value를 쓰면 되겠죠.

  • Profile
    하얀까마귀 2001.03.16 03:55
    안녕하세요 하얀까마귀 입니다.



    위의 김광석님 말씀대로 차이는 없구요..



    단지 이름 으로 참조를 하느냐 아니면 순서로 참조하느냐 차이뿐인걸로 알고 있습니다.



    음. 에러는 설마 이건 아닌것 같은데.



    S_.ParamByName('sqlprizecd1')asString := EDTPrizecd1.Text;

    . <-- 요게 빠져 있네요..



    그게아니라면 타입에러이든지 아니 그건 아니겠군요.. 아마 '.' 요놈



    빠져서 그런것 같네요. 그럼..



    Params는 김광섭님 말씀대로 루프나 순서등으로 참조할때 유용하죠..



    그럼. 즐거운시간 되세요.



    -하얀까마귀 -





    김광섭 wrote:

    > 윤종진 wrote:

    > > if Length(EDTPrizecd1.Text) > 0 then begin

    > > S_.SQL.ADD(' AND PRIZECD >= :SQLPrizecd1 ');

    > > S_.Params[i].AsString := EDTPrizecd1.Text ;

    > > // S_.ParamByName('sqlprizecd1')asString := EDTPrizecd1.Text;

    > > inc(i);

    > > end;

    > >

    > > if Length(EDTPrizecd2.Text) > 0 then begin

    > > S_.SQL.ADD(' AND PRIZECD <= :SQLPrizecd2 ');

    > > S_.Params[i].AsString := EDTPrizecd2.Text ;

    > > // S_.ParamByName('sqlprizecd2')asString := EDTPrizecd2.Text ;

    > > end;

    > >

    > > S_.Open;

    > >

    > > 위 주석문 (Parambyname 사용)대로 하면 에러가 나는데 왜 그럴까요

    > > 고수님들의 가벼운 답변 부탁드립니다

    > >

    > 두개의 차이는 없다고 생각합니다만

    > 단지 용도의 차이겠죠. 상황에 따라 편한게 있을테니깐요.

    > ParmaByName은 컬럼명을 쓰니깐 혼동의 여지가 없구요.

    > Params[i] 은 구지 컬럼을 몰라두 Loop 돌 때 유용하게 쓸수 있잖아요.

    > 제가 아는정도는 여기가지 ^^

    > 위에서 .AsString 인데 . 이 없네요 --;; 타입을 모르때는 Value를 쓰면 되겠죠.