Q&A

  • 하나의 Query로 두개의 Qreport폼에 값을 넣어 줄 수 있나요?
안녕하세요! 황정래 입니다...

하나의 Query로 두개의 Qreport폼에 값을 넣어 줄 수 있나요?

procedure Tneuk_print_f.Button1Click(Sender: TObject);
var
gongjung,watt,thick,hogi:Integer;
p_name,watt_value:String;
begin
            gongjung :=Combobox1.ItemIndex;
            watt :=Combobox2.ItemIndex;
            thick := Combobox3.ItemIndex;
            hogi := Combobox4.ItemIndex;

  if(gongjung = 0)then begin
            MessageDlg('공정을 선택해 주십시요!', mtError, [mbOK], 0);
            Combobox1.SetFocus;
  end;

  if(gongjung >0)then
     begin
        case Combobox1.ItemIndex of
        1:begin
            with label_QfE.Query1 do
            begin
                 Close;
                 SQL.Clear;
                 SQl.Add('SELECT * From TJAWMG01');
                 SQL.Add('Where input_time=:input_time');
                 ParamByName('input_time').AsString:=DateEdit1.Text;

                 if(gongjung >0)then
                 begin
                     case Combobox1.ItemIndex of
                        1:begin
                                p_name:='E';
                          end;
                        2:begin
                                p_name:='F';
                          end;
                     end;
                     SQL.Add(Format('and Lot_No like ''%s%%''',[p_name]));
                 end;
                 if(watt >0)then
                 begin
                     case Combobox2.ItemIndex of
                        1:begin
                                watt_value:='H';
                          end;
                        2:begin
                                watt_value:='M';
                          end;
                        3:begin
                                watt_value:='L';
                          end;
                     end;
                     SQL.Add(Format('and Lot_No like ''_%s%%''',[watt_value]));
                 end;

                 if(thick >0)then begin
                     SQL.Add(Format('and Lot_No like ''__%s%%''',[Combobox3.Text]));
                 end;

                 if(hogi >0)then begin
                     SQL.Add(Format('and Lot_No like ''_______%s%%''',[Combobox4.Text]));
                 end;
            end;  
        end;
        2:begin
            with label_Qf.Query1 do
            begin  // <------ 요기두 begin
                 Close;
                 SQL.Clear;
                 SQl.Add('SELECT * From TJAWMG01');
                 SQL.Add('Where input_time=:input_time');
                 ParamByName('input_time').AsString:=DateEdit1.Text;

                 if(gongjung >0)then
                 begin
                     case Combobox1.ItemIndex of
                        1:begin
                                p_name:='E';
                          end;
                        2:begin
                                p_name:='F';
                          end;
                     end;
                     SQL.Add(Format('and Lot_No like ''%s%%''',[p_name]));
                 end;
                 if(watt >0)then
                 begin
                     case Combobox2.ItemIndex of
                        1:begin
                                watt_value:='H';
                          end;
                        2:begin
                                watt_value:='M';
                          end;
                        3:begin
                                watt_value:='L';
                          end;
                     end;
                     SQL.Add(Format('and Lot_No like ''_%s%%''',[watt_value]));
                 end;

                 if(thick >0)then begin
                     SQL.Add(Format('and Lot_No like ''__%s%%''',[Combobox3.Text]));
                 end;

                 if(hogi >0)then begin
                     SQL.Add(Format('and Lot_No like ''_______%s%%''',[Combobox4.Text]));
                 end;
            end;  
        end;
                 Open;
                 If (P_name = 'E') Then Begin
                       Lable_QfE.QuickRep1.preview;
                       DateEdit1.SetFocus;
                 end
                 Else if (P_name = 'F') Then begin
                       Label_Qf.QuickRep1.preview;
                       DateEdit1.SetFocus;
                 end;
  end;
end;

이렇게 현재는 Qruery를 두개를 썼는데요?

코딩도 넘 길어지구.. 또. 왜그런지 Lable_QfE.Query1이 정의가 되지 않았다고 에러가 발생합니다.

혹시 Query를 하나로 해서
두개의 폼중에 하나를 선택해서 인쇄를 할 수 있나요?

고수님들의 조언 부탁드립니다.
1  COMMENTS
  • Profile
    권대웅 2002.02.22 23:32
    안녕하세요!

    저는 TQuery, TTable등을 관리 하기위서..
    Datamodule을 사용합니다.

    Datamodule에 쿼리를 몇개 두고..
    여러 폼에서 공유해서 사용 합니다.

    물론 퀵리포트에서 쿼리 사용도
    Datamodule에있는 쿼리를 이용 합니다.

    간단히 설명하면..

    Datamodule에 Query를 두고

    출력폼(출력을 위해 조건을 받는폼)
    use Datamodule해서

    with Datamodule.Query do
    begin
      close;
      Sql.Clear;
      Sql.Add('여기에 쿼리 넣고.');
      Open;
    end;

    case Combobox1.ItemIndex of
            1:begin
                quickreport1 := Tquickreport1.Create(Application);
                quickreport1.preview;
                quickreport1.free;
              end;

            2:begin
                quickreport2 := Tquickreport1.Create(Application);
                quickreport2.preview;
                quickreport2.free;
              end;
    end;

    대충 이렇게 하구..요..
    리포트는
      use Datamodule;

    각 리포트의 리포트와, QDBLabel등의
      Dataset 을 Datamodule.Query 로 연결하면

    어떨까요!...

    이런..
    머리속에만  맴도네요..
    글로 설명하기가 넘 힘드어요 ㅠㅠ..!

    즐프 하세요!