Q&A

  • 파라미터를 이용한 query를 하는데...
폼에 editbox,button,datasource,dbgrid,sql 컴포넌트를 하나씩 배치했습니다.



제가 구현하고자하는 것은 에디트박스에 만일 제 이름을 집어넣고 조회버튼을



누르면 최선기에 대한 데이타가 DBGrid에 보여지게 하는건데.. 기초가 너무



없어서 잘 않됩니다. 어디가 잘못되었는지 알려주세요.

다음은 저의 소스입니다.

procedure TForm1.Button1Click(Sender: TObject);

var

vcode : string;

begin

query1.close;

query1.sql.Clear;

query1.sql.add('select * from book.dbf');

query1.sql.Add('where code=:vcode');

edit1.text:=vcode;

query1.ParamByName('vcode').asstring;

query1.Open;

end;



end.



3  COMMENTS
  • Profile
    송기원 1999.07.15 00:32
    var

    vcode : string;

    begin

    with Query1 do Begin

    close;

    sql.Clear;

    sql.add('select * from book.dbf');

    sql.Add('where code=:vcode');

    Params[0].asstring := edit1.text;

    Open;

    end;

    이라고 하시면 될것 같은데...







    최선기 께서 말씀하시기를...

    > 폼에 editbox,button,datasource,dbgrid,sql 컴포넌트를 하나씩 배치했습니다.

    >

    > 제가 구현하고자하는 것은 에디트박스에 만일 제 이름을 집어넣고 조회버튼을

    >

    > 누르면 최선기에 대한 데이타가 DBGrid에 보여지게 하는건데.. 기초가 너무

    >

    > 없어서 잘 않됩니다. 어디가 잘못되었는지 알려주세요.

    > 다음은 저의 소스입니다.

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > vcode : string;

    > begin

    > query1.close;

    > query1.sql.Clear;

    > query1.sql.add('select * from book.dbf');

    > query1.sql.Add('where code=:vcode');

    > edit1.text:=vcode;

    > query1.ParamByName('vcode').asstring;

    > query1.Open;

    > end;

    >

    > end.

    >





  • Profile
    최선기 1999.07.15 01:22
    송기원 께서 말씀하시기를...

    > var

    > vcode : string;

    > begin

    > with Query1 do Begin

    > close;

    > sql.Clear;

    > sql.add('select * from book.dbf');

    > sql.Add('where code=:vcode');

    > Params[0].asstring := edit1.text;

    > Open;

    > end;

    > 이라고 하시면 될것 같은데...



    위와 같이 수정을 했는데.. 다음과 같은 메세지가 나옵니다. 에러는 아니고 Hint메세지입니다.

    variable ' vcode' is declared but never used in 'Tform1.button1 click'라고

    나옵니다.



    파라미터만 꽉 잡고 있어도 원이 없겠어요.. 내 머리가 돌머린가?

    >

    >

    >

    > 최선기 께서 말씀하시기를...

    > > 폼에 editbox,button,datasource,dbgrid,sql 컴포넌트를 하나씩 배치했습니다.

    > >

    > > 제가 구현하고자하는 것은 에디트박스에 만일 제 이름을 집어넣고 조회버튼을

    > >

    > > 누르면 최선기에 대한 데이타가 DBGrid에 보여지게 하는건데.. 기초가 너무

    > >

    > > 없어서 잘 않됩니다. 어디가 잘못되었는지 알려주세요.

    > > 다음은 저의 소스입니다.

    > > procedure TForm1.Button1Click(Sender: TObject);

    > > var

    > > vcode : string;

    > > begin

    > > query1.close;

    > > query1.sql.Clear;

    > > query1.sql.add('select * from book.dbf');

    > > query1.sql.Add('where code=:vcode');

    > > edit1.text:=vcode;

    > > query1.ParamByName('vcode').asstring;

    > > query1.Open;

    > > end;

    > >

    > > end.

    > >

    >

    >





  • Profile
    조복기 1999.07.15 02:12


    안녕하세요..조복기입니다.



    요즘에 파라미터 사용에 관해 질문이 상당히 많네요..

    분명 Q&A란을 자세히보심 많이 답변이 올라와있을텐데..



    Tquery에서 ':'를 만나면 그 뒤에오는 문장을 변수라고 인식을 합니다.

    자체적으로.. 이걸 파라미터라고 하죠..

    그러니까 따로 변수로 선언해줄 필요가 없습니다..

    그래서 사용도 하지않았기때문에 hint가 나왔구요..

    파라미터 변수는 따로 선언을 해줄 필요가 없습니다.



    > with Query1 do Begin

    > close;

    > sql.Clear;

    > sql.add('select * from book.dbf');

    > sql.Add('where code = :vcode');

    > Params[0].asstring := edit1.text;

    또는

    ParamByName(vcode).AsString := Trim(edit1.text);

    > Open;

    > > end;



    맨날 같은 질문에 같은대답을 하고 있네요..





    좋은하루되세요..