고수님들 안녕하세요.. 건강들 하시죠..
간단한 문제인 것 같은데 잘 몰라 고수님의 고견을 듣고자 글을 올립니다.
두개의 DB가 존재하고 1번 DB는 “edit1의 값”에 의해 필터 된 내용을 DBGrid에 의해
표시되고 2번 DB도 edit1의 값에 맞는 조건의 항목들을 다른 여러 Edit창에 표시하게 할려고 하는데 잘 않네요..
1번 DB는 DBGrid에는 잘 표현 되는데 2번 DB는 Edit창에 표시가 잘 안되네요..
참고로 부끄럽지만 무식한 방법으로 했는데 좀 보아 주시와요..
// edit의 조건에 따라 DBGrid의 내용이 표시된는 이벤트
procedure TForm1.Button1Click(Sender: TObject);
var
SNfilter : string;
begin
// 관리번호 edit란에 아무것도 입력되지 않을 시 경고메세지
if (edit1.text ='') then
ShowMessage('관리번호를 입력 하세요')
else begin
Query1.Open;
SNfilter := 'SuperNo=''' + edit1.text +'''';
Query1.Filter := SNfilter;
// 아래부분을 어떻게 처리해야 할지 모르겠네요....
// DB(2번 DB)에 있는 장비내역을 edit창에 표시
Query2.Open;
if edit1.text= Query2.FieldByName('SuperNo').Asstring then
// 참고로 Query2프라퍼티에 있는 SQL에는
// Select * from ListTable.db로 되어 있음
//표시될 Edit창
Edit3.text := Query2.FieldByName('NAME').AsString;
Edit4.text := Query2.FieldByName('MODEL').AsString;
Edit5.text := Query2.FieldByName('SERIALNO').AsString;
Edit6.text := Query2.FieldByName('MANUFACTURE').AsString;
Edit7.text := Query2.FieldByName('DATEMANU').AsString;
Edit8.text := Query2.FieldByName('OFFER').AsString;
Edit9.text := Query2.FieldByName('CONTACT').AsString;
Edit10.text := Query2.FieldByName('DATEOFFER').AsString;
Edit11.text := Query2.FieldByName('PERIOD').AsString;
Edit12.text := Query2.FieldByName('PRICE').AsString;
Edit13.text := Query2.FieldByName('VALUE').AsString;
Edit14.text := Query2.FieldByName('POINT').AsString;
Edit15.text := Query2.FieldByName('A').AsString;
Edit16.text := Query2.FieldByName('B').AsString;
Edit17.text := Query2.FieldByName('C').AsString;
end;
end;
> 고수님들 안녕하세요.. 건강들 하시죠..
> 간단한 문제인 것 같은데 잘 몰라 고수님의 고견을 듣고자 글을 올립니다.
>
> 두개의 DB가 존재하고 1번 DB는 “edit1의 값”에 의해 필터 된 내용을 DBGrid에 의해
> 표시되고 2번 DB도 edit1의 값에 맞는 조건의 항목들을 다른 여러 Edit창에 표시하게 할려고 하는데 잘 않네요..
>
> 1번 DB는 DBGrid에는 잘 표현 되는데 2번 DB는 Edit창에 표시가 잘 안되네요..
>
> 참고로 부끄럽지만 무식한 방법으로 했는데 좀 보아 주시와요..
>
> // edit의 조건에 따라 DBGrid의 내용이 표시된는 이벤트
> procedure TForm1.Button1Click(Sender: TObject);
> var
> SNfilter : string;
> begin
> // 관리번호 edit란에 아무것도 입력되지 않을 시 경고메세지
> if (edit1.text ='') then
> ShowMessage('관리번호를 입력 하세요')
> else begin
> Query1.Open;
> SNfilter := 'SuperNo=''' + edit1.text +'''';
> Query1.Filter := SNfilter;
>
> // 아래부분을 어떻게 처리해야 할지 모르겠네요....
>
> // DB(2번 DB)에 있는 장비내역을 edit창에 표시
> Query2.Open;
> if edit1.text= Query2.FieldByName('SuperNo').Asstring then
>
> // 참고로 Query2프라퍼티에 있는 SQL에는
> // Select * from ListTable.db로 되어 있음
>
> //표시될 Edit창
> Edit3.text := Query2.FieldByName('NAME').AsString;
> Edit4.text := Query2.FieldByName('MODEL').AsString;
> Edit5.text := Query2.FieldByName('SERIALNO').AsString;
> Edit6.text := Query2.FieldByName('MANUFACTURE').AsString;
> Edit7.text := Query2.FieldByName('DATEMANU').AsString;
> Edit8.text := Query2.FieldByName('OFFER').AsString;
> Edit9.text := Query2.FieldByName('CONTACT').AsString;
> Edit10.text := Query2.FieldByName('DATEOFFER').AsString;
> Edit11.text := Query2.FieldByName('PERIOD').AsString;
> Edit12.text := Query2.FieldByName('PRICE').AsString;
> Edit13.text := Query2.FieldByName('VALUE').AsString;
> Edit14.text := Query2.FieldByName('POINT').AsString;
> Edit15.text := Query2.FieldByName('A').AsString;
> Edit16.text := Query2.FieldByName('B').AsString;
> Edit17.text := Query2.FieldByName('C').AsString;
> end;
> end;
_______________________________________________________________________________
Query2가 여러건 조회된 건 같은데
while 문이나 For문을 사용해서 처음부터 하나씩 검색해야 될거같네요..
대충
Query2.First; //처음레코드로 이동
While Not Query2.Eof Do
begin
if edit1.text= Query2.FieldByName('SuperNo').Asstring then
edit3.text = .....
//맨마지막에
Query2.Next //다음레코으로이동
end;
그리고 이 방식보다 Query2의 select문에 조건을 줘어서
해당 조건에 일치하는 한건만 select해서 if문 없이 바로 edit 하는 게
더 좋은것 같네요
>