Q&A

  • 빈번하게 발생되는 폼에 다중 디비 컨트롤..
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Form2.ShowModal;
Form2.DataSource1.DataSet := form2.DBISAMQuery1;
Form2.DBISAMQuery1.DatabaseName := ExtractFilePath(Application.ExeName) + 'LocalDB';
Form2.DBNavigator1.DataSource := form2.DataSource1;
Form2.DBISAMDBGrid1.DataSource := form2.DataSource1;

with Form2.DBISAMQuery1 do begin
Form2.DBISAMQuery1.Close;
Form2.DBISAMQuery1.SQL.Clear;
Form2.DBISAMQuery1.SQL.Text := 'Select Code, SubCodeName, bigo, Money  from Is_Code ' +
                               'where Gubun=:A and CodeName is Null';
       ParamByName('A').AsString:= '001';
      try                    
       Form2.DBISAMQuery1.Active := True;
       Except On E:EDataBaseError do
       ShowMessage('에러발생' + E.Message);
       end;
Form2.DBISAMQuery1.FieldByName('Code').DisplayLabel:= '코드';
Form2.DBISAMQuery1.FieldByName('SubCodeName').DisplayLabel:= '코드명';
Form2.DBISAMQuery1.FieldByName('bigo').DisplayLabel:= '비고';
Form2.DBISAMQuery1.FieldByName('Money').DisplayLabel:= '금액';
Form2.DBISAMQuery1.FieldByName('Code').DisplayWidth:=14;
Form2.DBISAMQuery1.FieldByName('SubCodeName').DisplayWidth:=17;
Form2.DBISAMQuery1.FieldByName('bigo').DisplayWidth:=13;
Form2.DBISAMQuery1.FieldByName('Money').DisplayWidth:=13;
end;
end;  //버튼1 클릭 이벤트 내용입니다.
=====================================================================
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Form2.ShowModal;
Form2.DataSource1.DataSet := form2.DBISAMQuery1;
Form2.DBISAMQuery1.DatabaseName := ExtractFilePath(Application.ExeName) + 'LocalDB';
Form2.DBNavigator1.DataSource := form2.DataSource1;
Form2.DBISAMDBGrid1.DataSource := form2.DataSource1;

with Form2.DBISAMQuery1 do begin
Form2.DBISAMQuery1.Close;
Form2.DBISAMQuery1.SQL.Clear;
Form2.DBISAMQuery1.SQL.Text := 'Select Code, SubCodeName, bigo, Money  from Is_Code ' +
                               'where Gubun=:A and CodeName is Null';
       ParamByName('A').AsString:= '002';
      try                    
       Form2.DBISAMQuery1.Active := True;
       Except On E:EDataBaseError do
       ShowMessage('에러발생' + E.Message);
       end;
Form2.DBISAMQuery1.FieldByName('Code').DisplayLabel:= '코드';
Form2.DBISAMQuery1.FieldByName('SubCodeName').DisplayLabel:= '코드명';
Form2.DBISAMQuery1.FieldByName('bigo').DisplayLabel:= '비고';
Form2.DBISAMQuery1.FieldByName('Money').DisplayLabel:= '금액';
Form2.DBISAMQuery1.FieldByName('Code').DisplayWidth:=14;
Form2.DBISAMQuery1.FieldByName('SubCodeName').DisplayWidth:=17;
Form2.DBISAMQuery1.FieldByName('bigo').DisplayWidth:=13;
Form2.DBISAMQuery1.FieldByName('Money').DisplayWidth:=13;
end;
end;//이건 버튼2 클릭 이벤트입니다.
=====================================================================
이렇게 해서 동일한폼에 다른 쿼리만 다르게 날려줘서 검색합니다.

에러없이 컴파일 되서 안도의 한숨을 쉬면서 각버튼들에 대한 확인 작업을 실

시하였답니다. BitBtn1 클릭하게되면 그리드안에 아무것도 나타나지 않습니다.

그래서 취소 버튼을 누르고 다시 BitBtn1을 누르게 되면 내용이 제대로 보여

주게되는데요. 이제 BitBtn2을 클릭하게 되면 BitBtn1에 데이터들이 그대로

다시 보여 주게 됩니다. 취소을 누르고 다시 BitBtn2을 누르면 정상적으로

BitBtn2에 대한 데이터들이 보여주구요.

이러한 문제을 해결해볼려구 DBISAMQueyr2개을 가지구 각각 다르게 해서

해보았는데 똑같은 결과들이 나타나게 됩니다.

정상적으로 보이게 하고 싶은데..어떻게 해야 잘나올지 모르겠습니다ㅠ.ㅠ

p.s==================================================================
첨부 파일에 보시면 캡쳐한 이미지들이 있습니다. BitBtn1 처음 실행한 폼2에

그림, BitBtn1에 두번째 실행한 폼2에 그림, BitBtn2에 처음 실행한 폼2에 그림,

BitBtn2에 두번째 실행한 폼2에 그림들입니다.
1  COMMENTS
  • Profile
    이승현 2004.12.02 00:58
    킁 문제점을 찾았는데..아 정말 허무하기도 하고 한편으론? 기분이 좋네요.

    문제점은 Form2.ShowModal; 이문장의 위치였네요.

    Query가 돌아 가기두 전에 폼이 먼저 보여주기 때문에 맨처음 실행시에

    암것두 안나타났던것 같구요 다른 버튼 실행시 Query가 전에 돌아갔던게

    누적이 되서 Form2.ShowModal을 앞에다가 해주기 때문에 그전에 돌아갔던

    Query가 보여 졌네요. 음 지금은 아무 문제없이 잘돌아가네요.

    그런데 다른문제점이 생겨서 또 그문제점 해결하러 가야겠네요.

    해결하고 나니 묻고 답하기에 글올려서 물어본게 부끄럽네요.

    감기조심들하시구. 건강하시구. 즐프하세요~

    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    //Form2.ShowModal;
    Form2.DataSource1.DataSet := form2.DBISAMQuery1;
    Form2.DBISAMQuery1.DatabaseName := ExtractFilePath(Application.ExeName) + 'LocalDB';
    Form2.DBNavigator1.DataSource := form2.DataSource1;
    Form2.DBISAMDBGrid1.DataSource := form2.DataSource1;

    with Form2.DBISAMQuery1 do begin
    Form2.DBISAMQuery1.Close;
    Form2.DBISAMQuery1.SQL.Clear;
    Form2.DBISAMQuery1.SQL.Text := 'Select Code, SubCodeName, bigo, Money  from Is_Code ' +
                                   'where Gubun=:A and CodeName is Null';
           ParamByName('A').AsString:= '001';
          try                    
           Form2.DBISAMQuery1.Active := True;
           Except On E:EDataBaseError do
          ShowMessage('에러발생' + E.Message);
           end;
    Form2.DBISAMQuery1.FieldByName('Code').DisplayLabel:= '코드';
    Form2.DBISAMQuery1.FieldByName('SubCodeName').DisplayLabel:= '코드명';
    Form2.DBISAMQuery1.FieldByName('bigo').DisplayLabel:= '비고';
    Form2.DBISAMQuery1.FieldByName('Money').DisplayLabel:= '금액';
    Form2.DBISAMQuery1.FieldByName('Code').DisplayWidth:=14;
    Form2.DBISAMQuery1.FieldByName('SubCodeName').DisplayWidth:=17;
    Form2.DBISAMQuery1.FieldByName('bigo').DisplayWidth:=13;
    Form2.DBISAMQuery1.FieldByName('Money').DisplayWidth:=13;
    Form2.ShowModal;
    end;
    end;  //버튼1 클릭 이벤트 내용입니다.