나름대로 될 법한 방법은 다 써봤는데 안되네요. 에러가 나지는 않고 버튼을 눌러도 반응이 없습니다.
우선 설명하자면
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속성을 이용해서 직장또는 집의 주소를 제어했습니다.(좋은 방법은 아니죠?)
해결방법이나, 다른 좋은 방법있으면 좀 가르쳐주십시요.
제가 아는한 TQuery는 filer를 하지 않아도 Sql문에 그냥 조건절(where)를
사용할수 있습니다.
filtered := True 라인을 삭제 하셔도 프로그램상 문제 없을 것으로 봅니다.