4개 정도의 radiogroupbox를 써서 선택되어진 항목을 포함하는 record만 뽑아내려면 어떤 식으로 코딩을 해야 하나요
예를 들면
첫번째 radiogroup은 미혼, 기혼
두번째 radiogroup은 남, 녀
그래서 dbgrid에 결과를 나타내고 싶은데요
조건이 하나씩은 되는데 4가지를 어떻게 연결해야 할지 잘 모르겠습니다.
radiogroup 4개중 1가지만 선택 될 수도 있고 모두 다 선택될 수도 있게 할려면요..
도와주세요..
procedure TForm7.BitBtn2Click(Sender: TObject);
var
wedding, SQL, andstr,wherestr : string;
begin
andstr := 'and';
if RG_WedingState.ItemIndex = 0 then
wedding := '1';
if RG_WedingState.ItemIndex = 1 then
wedding := '2';
if wherestr = '' then
wherestr := 'where' + wedding;
if Query1.Active = true then
begin
Query1.Active := False;
end;
SQL := SQL + wherestr;
Query1.SQL.Clear;
SQL := 'select * from "GSCUM00" where CUFLAG = "0"';
SQL := SQL + ' and CUKHGU = "' + wedding + '"';
Query1.SQL.Add(SQL);
Query1.Active := true;
if RadioGroup2.ItemIndex = 0 then
wedding := '1';
if RadioGroup2.ItemIndex = 1 then
wedding := '2';
if wherestr = ''then
wherestr := wherestr+'where'+wedding
else
wherestr := wherestr+andstr+wedding;
if Query1.Active = true then
begin
Query1.Active := False;
end;
SQL := SQL + wherestr;
Query1.SQL.Clear;
SQL := 'select * from "GSCUM00" where CUFLAG = "0"';
SQL := SQL + ' and CUBTGU = "' + wedding + '"';
Query1.SQL.Add(SQL);
Query1.Active := true;
if RadioGroup3.ItemIndex = 0 then
wedding := '1';
if RadioGroup3.ItemIndex = 1 then
wedding := '2';
if wherestr = '' then
wherestr := wherestr+'where'+wedding
else
wherestr:= wherestr+andstr+wedding;
if Query1.Active = true then
begin
Query1.Active := False;
end;
SQL := SQL + wherestr;
Query1.SQL.Clear;
SQL := 'select * from "GSCUM00" where CUFLAG = "0"';
SQL := SQL + ' and CUDMGU = "' + wedding + '"';
//ShowMessage(SQL);
Query1.SQL.Add(SQL);
Query1.Active := true;
if RadioGroup4.ItemIndex = 0 then
wedding := '1';
if RadioGroup4.ItemIndex = 1 then
wedding := '2';
if RadioGroup4.ItemIndex = 2 then
wedding := '3';
if RadioGroup4.ItemIndex = 3 then
wedding := '4';
if wherestr = '' then
wherestr := wherestr+'where'+wedding
else
wherestr:= wherestr+andstr+wedding;
if Query1.Active = true then
begin
Query1.Active := False;
end;
SQL := SQL + wherestr;
Query1.SQL.Clear;
SQL := 'select * from "GSCUM00" where CUFLAG = "0"';
SQL := SQL + ' and CUHMCO = "' + wedding + '"';
//ShowMessage(SQL);
Query1.SQL.Add(SQL);
Query1.Active := true;
end;
음... 솔직히 코드를 자세히 보지는 않았습니다. 그래서 답변에 약간이라도 무제가 있거든 제게 메일 주세요.. 죄송... 좀길어서.. ^^;
우선 라디오 그룹에 대해서
라디오 그룹에서 선택하지 않았을때는 itemindex = -1입니다.. 순서대로 0 부터 되지만
선택하지 않으면 -1의 값이 들어가게 됩니다. 이것 뿐만이 아니고 거의모든 TStrings형이 이런식으로 되어 있습니다.
그리고 소스를 조금은 봤는데 좀 이상하게 되어 있더라구요...
4개의 조건으로 검색하는거 아니에요????
select * from table
where (조건1 = 조건1)
and (저건2 = 조건2) and (조건3 = 조건3) and (조건4 = 조건4)
이렇게요... 저는 그렇게 알아들었는데 코딩은 좀 다르게 된것 같아서...
일단 4개의 조건에 모두 만족하는 데이타만 추출한다고 보구 말씀드릴께요...
일단 이건 좀 간단해요... 왜냐하면 그냥 SQL문만 만들어 주면 되거든요...
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add(' select * from GSCUM00 ');
SQL.Add(' where 1 = 1 '); <-- 요놈을 쓰는 이유는 조건이 없을수도 있느니까
코딩을 간단히 하기 위해서 쓴겁니다.
case 그룹1.itemindex of
0 : begin
SQL.Add(' AND 결혼 = 했다 ');
end;
1 : begin
SQL.Add(' AND 결혼 = 안했다 ');
end;
end;
case 그룹2.itemindex of
0 : begin
SQL.Add(' AND 성별 = 남자 ');
end;
1 : begin
SQL.Add(' AND 성별 = 여자 ');
end;
end;
case 그룹3.itemindex of
end;
case 그룹4.itemindex of
end;
OPEN;
end
이렇게 하시면 되죠.. 아닌가??? 좀 쉬운것 같은데.. 아니면 메일주세요.. 자세한 설명과 함께.. 코딩은 계속 여러번 오픈하게 되어 있는것 같아서.. 좀 이해가 안되요...
그렇게 만드셔야 하는가?????
아!! 그러고 선택되지 않았을때는 itemindex가 -1이니까 그냥 무시하니까 이대로 하시면 제가 말씀드린 결과는 얻을수 있을겁니다.
그럼 즐거운 시간 되세요..
- 하얀까마귀 -