두개의 콤보박로 데이타를 조회하고자 합니다.
그런데 잘 안되거든요.
제가 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;
꼭 부탁드립니다...
맞네요 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;
>
> 꼭 부탁드립니다...