안냐세요...
델의 불모지 경남 통영입니다.
그러다보니 지금 혼자서 독학을 하고 있는 학생입니다.
책과 싸움을 하다가 이렇게 통신으로 질문을 드립니다.
넓은 아량으로 이해를...
제가 만드는 인명관린데, 영 안 됩니다.
먼저 DB형식은 파라독스7/Table형식의 DB입니다.
DB로 만든 주민등록번호필드에서 번호로 'dd'라는 calculate필드를 만들어 Edit에 나타내었습니다. 임시필드라서 그런가요?
그러다보니 더 궁금한것은 DBGrid와 ComboBox에 연결에 연결을 한번 해 보려고 했습니다.
방법은 ComboBox에서 남자/여자를 선택하면 Table을 통해서 DBGrid에 해당 조건만 뿌려주는 방식이죠... 그런데 문제는 여깁니다.
제가 손수 무식한 머리를 굴러 코딩을 해 보았지만, 꿈쩍도 안하는 DBGrid... 미워 죽겠어요...
제가 아직도 초보라서 쉽게 아주 쉽게 좀 가르쳐 주세요
그리고, 선택된 남자/여자의 수가 Edit에 나왔는데 선택한 조건의 전체 데이타에서 %(비율)을 나타내고 싶은데 그런 방법도...
그럼 오늘도 즐거운 하루가 되시길
1. calculate 필드 : 이 필드는 계산을 위한 용도입니다. 그러니 DBEdit 등에 연결해도 입력이나 변경 등을 할 수 없습니다.
2. ComboBox에 남자, 여자를 입력하고 위 값을 선택하면 DBGrid 내용을 변경 :
Combobox OnChange 이벤트에 코딩을 하시면 됩니다. 범위를 주는 가장 쉬운 방법은 Filter를 사용하는 것인데 Table의 Filtered을 True로 두시고 Filter에 sex='1' 이런 식으로 필드명과 비교식을 써주시면 됩니다.
예제
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if combobox1.itemindex= 0 then
table1.filter:='sex=''1'''
else
table1.filter:='sex=''2''';
table1.filtered:=true;
end;
3. 비율을 나타내기 : 먼저 전체 카운트를 TABLE1.RECORDCOUNT 라는 식으로 알아내고 후에 FILTER를 건후 위와 같이 TAEBL1.RECORDCOUNT로 후의 레코드수(즉 남성이든, 여성이든)를 알아 그 후엔 적절히 계산하시면 됩니다.
예제
procedure TForm1.ComboBox1Change(Sender: TObject);
var
i, total : integer;
begin
table1.filtered:=false;
total:=table1.recordcount;
if combobox1.itemindex= 0 then
table1.filter:='code=''1'''
else
table1.filter:='code=''2''';
table1.filtered:=true;
i:=table1.RecordCount;
edit1.text:=i div total * 100; // 비율
end;
조금은 답변이 되셨는지....