1. 테이블이 같은 경우
-. 먼저 Data Module에 Table(Query도 상관없음)을 두개 생성
-. Data Source도 두개 생성
-. 각각의 TTable Component이름을 tblMater, tblDetail
TDataSource Component이름을 srcMaster, srcDetail
-. TTable Component의 TableName의 속성에 테이블명(여기서는
MY_DATA라고 하져.) 지정
-. 당연이 srcMater의 DataSet 속성을 tblMaster
srcDetail의 DataSet 속성을 tblDetail로 지정..
-. 여기서 가장 중요한 부분!!!
tblDetail의 TTable Component 속성중에 MasterSource를 srcMaster로
지정하세여.. 그리고 MasterFields속성을 ... 버턴을 누르면 Detail Fields,
Master Fields 두개의 리스트 중 Primary Key를 서로 선택한다음 Add를
누릅니다. 그럼 아래의 Joined Fields에 해당 내용이 나타나죠.. 그리고
OK.. 여기까지 기본적인 Data Access 컴포넌트 설정이 끝납니다..
-. 원하는 폼에 DB Grid를 두개를 생성합니다.
-. 첫번째 DB Grid의 DataSource속성을 srcMaster로 지정합니다.
-. 두번째 DB Grid의 DataSource속성을 srcDetail로 지정합니다.
-. 참고로 데이타 소스에서 원하는 필드만 표시하는 방법은 아시죠?
Master에는 기본정보만 표시되게 하고.. Detail에는 상세정보 필드만
표시되게하면 모든 작업이 끝!!
참고로 서로 다른 테이블인 경우(Master <-> Detail)에는 위에서 TTable 의 TableName 만 서로 다르게 지정하면 되겠죠!!
그럼 즐코~
Query2.Open; //질의 내용은 이미 작성되어져 있다고 가정하져..
// Query2.Locate("필드1;필드2", VarArrayOf([ls_Key1, ls_Key2]) , [loPartialKey]); //요것은 똑같은 Row를 찾을때 해당 구분필드가 2개일때
// Query2.Locate('필드1", ls_Key1, [loPartialKey]); 요건 1개일때
End;
요렇게 하면.. 똑같은 위치에 가지여..
아니면..
질의(Query)내용을 첫번째 폼의 key로 찾아서 1개만 보여주는게 어때여?
음.. 뭐 이렇게 하는게 안된다면.. 뭐 안되는거구..
하여간 위처럼 하면 될꺼에염..
테스트는 안해봤지만..
의미는 아시겠쪄?
Locate를 사용하라는 이야기입니다..
제가 많이 써본 것이라서.. 아마 맞을 것입니다..
Table, Query 모두 되는거니까여..
Locate라는 함수는 한번 눈여겨 보시길..
그냥 2개의 DBGrid에 한개의 데이타 소스만 연결 시키면
되겠네요
Data Control (DBGrid, DBEdit, DBMemo....)은 단지 보여주
는 역할만 할 뿐 실제적인 데이터의 내용및 현위치 등등의
정보는 DataSet에서 관장하죠
Data Control 과 DataSet 을 연결시켜주는 놈이
DataSource 이구요
그러니 1개의 DataSet (쿼리, 또는 테이블 또는 스토어드프로시져)
1개의 데이터소스로 하시고
나머지 디비그리드는 2개가 되었든 100개가 되었든
똑같은 데이타소스로 연결하시면
항상 같은 포지션을 유지합니다.
즉 100개중 1개의 디비그리드의 선택된 데이터를 변경해도
나머지 99개의 디비그리드도 같은 데이터(레코드)로 이동됩니다.
단 디비그리드에서 보여줄 컬럼만 조절하면 되겠네요
그럼 즐코하세요...