Q&A

  • [급질문]김영대님!!!! 제발좀 갈켜주세요..<어려운 filtering>
나름대로 될 법한 방법은 다 써봤는데 안되네요. 에러가 나지는 않고 버튼을 눌러도 반응이 없습니다.

우선 설명하자면

module.datamodule1.Query1에서 4개의 폼으로 파생됩니다.

(query1은 회원의 신상에 대한 모든 정보를 담고 있습니다.)

1.dbgrid를 사용한 폼

2.QR을 사용한 폼(신상명세리스트)

3.QR을 사용한 봉투발송

4.QR을 사용한 스티커발송



1번과 2번은 잘 작동되구요. (filtering을 시도하기 전엔 3,4번도 잘됐어요)

문제가 되는 것은 3번과 4번폼만 filtering이 되어야 되는거예요.

발송구분field가 '1'일때는 집주소가 '2'일때는 직장, '3'일때는 발송제외가 되어야 하거든요. 밑의 코딩은 3번 스티커발송의 버튼클릭이벤트의 일부분입니다.



procedure TSearch.Button5Click(Sender: TObject);

var

modal5: TLatter;

begin

datamodule1.Query1.Filtered := true;//발송구분이 '3'일 때만 제외

modal5 := TLatter.Create(application);

modal5.caption := '스티커 : ' + edit1.text;

if radiobutton1.Checked then

with module.DataModule1.Query1 do

begin

if (edit1.text <> '') then

Close;

sql.Clear;

sql.Add('select * from do_list');

sql.Add('where do_name like :Myname');

....



그리고 QRForm의 beforePrint이벤트와 onPreview이벤트에서 QRdbtext의 enabled속성을 이용해서 직장또는 집의 주소를 제어했습니다.(좋은 방법은 아니죠?)



해결방법이나, 다른 좋은 방법있으면 좀 가르쳐주십시요.

1  COMMENTS
  • Profile
    그냥 1999.07.06 02:03
    답이 아닌거 같긴한데...

    제가 아는한 TQuery는 filer를 하지 않아도 Sql문에 그냥 조건절(where)를

    사용할수 있습니다.

    filtered := True 라인을 삭제 하셔도 프로그램상 문제 없을 것으로 봅니다.