Q&A

  • 콤보박스로 조회하기 문제
두개의 콤보박로 데이타를 조회하고자 합니다.

그런데 잘 안되거든요.

제가 IF문을 잘 못쓰는것 같습니다.

다음 소스좀 봐주세요.



with sch_qry do

begin

close;

sql.clear;

sql.text := ' select s.serial, s.buy_code, s.gbuy_code '+

' from stock s, buy b '+

' where s.buy_code = b.code ';



if gbuy_cbo.text <> '' then

begin

sql.Add('and gbuy_code = :gcode');

parambyname('gcode').AsString := copy(gbuy_cbo.text,1,2);

end



else if gbuy_cbo.text = ''then

begin

if buy_cbo.text <> '' then

begin

sql.Add('and buy_code = :buy_code');

parambyname('buy_code').AsString := copy(buy_cbo.text,1,3);

end;

end;



if buy_cbo.text <> '' then

begin

sql.Add('and buy_code = :buy_code');

parambyname('buy_code').AsString := copy(buy_cbo.text,1,3);

end

else

messagedlg('조회할 품명을 선택해 주십시요.', mtInformation,[mbYes, mbNo], 0);

end;



꼭 부탁드립니다...

1  COMMENTS
  • Profile
    하얀까마귀 2000.06.13 22:15
    안녕하세요 하얀까마귀 입니다..



    맞네요 if문이 잘못되었습니다..



    if 조건1 then

    begin

    실행1

    end else if 조건2 then

    begin

    실행2

    end else

    begin

    실행3

    end;

    실행4



    조건1에 만족할때 실행1을 실행하고 실행4로 넘어옵니다.



    조건1에 만족하지 않을때 조건2를 비교하죠.. 그래서 만족하면 실행2를 그렇지 않으면



    실행3를 실행하고 실행4로 넘어옵니다..



    결국 이렇게 하면 실행1,2,3중 하나만 실행하고 4로 넘어가게 되죠...



    따라서 님의 코드는 그냥 if문 하나로만 묶어 버리면 됩니다.



    if gbuy_cbo.text <> '' then

    begin

    sql.Add('and gbuy_code = :gcode');

    parambyname('gcode').AsString := copy(gbuy_cbo.text,1,2);

    if buy_cbo.text <> '' then

    begin

    sql.Add('and buy_code = :buy_code');

    parambyname('buy_code').AsString := copy(buy_cbo.text,1,3);

    sql.Add('and buy_code = :buy_code');

    parambyname('buy_code').AsString := copy(buy_cbo.text,1,3);

    end;

    end else

    messagedlg('조회할 품명을 선택해 주십시요.', mtInformation,[mbYes,No], 0);



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



    대충 고쳤는데.. 음..



    조건이 다를수 있으니 코드는 그냥 참고만 하세요..



    - 하얀까마귀 -





    초보에서벗어나자 wrote:

    > 두개의 콤보박로 데이타를 조회하고자 합니다.

    > 그런데 잘 안되거든요.

    > 제가 IF문을 잘 못쓰는것 같습니다.

    > 다음 소스좀 봐주세요.

    >

    > with sch_qry do

    > begin

    > close;

    > sql.clear;

    > sql.text := ' select s.serial, s.buy_code, s.gbuy_code '+

    > ' from stock s, buy b '+

    > ' where s.buy_code = b.code ';

    >

    > if gbuy_cbo.text <> '' then

    > begin

    > sql.Add('and gbuy_code = :gcode');

    > parambyname('gcode').AsString := copy(gbuy_cbo.text,1,2);

    > end

    >

    > else if gbuy_cbo.text = ''then

    > begin

    > if buy_cbo.text <> '' then

    > begin

    > sql.Add('and buy_code = :buy_code');

    > parambyname('buy_code').AsString := copy(buy_cbo.text,1,3);

    > end;

    > end;

    >

    > if buy_cbo.text <> '' then

    > begin

    > sql.Add('and buy_code = :buy_code');

    > parambyname('buy_code').AsString := copy(buy_cbo.text,1,3);

    > end

    > else

    > messagedlg('조회할 품명을 선택해 주십시요.', mtInformation,[mbYes, mbNo], 0);

    > end;

    >

    > 꼭 부탁드립니다...