C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[1287] [질문] 데이타베이스에 관한 중요한 질문/프포
mmiracle [ ] 3379 읽음    1999-04-28 08:35
안녕하세요?
프로그램 개발중에 잘 안되는 것이 있어
이렇게 질문을 드립니다.

현재 데이타베이스 관련 프로그램을 개발하고 있습니다.
제가 질문하고자 하는것은 마스터/디테일 관계입니다.

예를 들어 aa.db와 bb.db가 마스터/디테일 관계일때,
값의 입력시 문제가 발생합니다.

table 컴포넌트를 이용하여 화면에 각각 aa.db의 내용을
보여줄 수 있는 dbgrid1와 bb.db의 내용을 보여줄 수
있는 dbgrid2가 있으면 dbgrid1에 내용변화에 따라
dbgrid2의 내용이 변하겠지요..

근데, dbgrid1와 dbgrid2에 데이타를 추가 하려고 할때
문제가 발생합니다. aa.db에 append를 하고 dbgrid1에서
값을 넣고 , 마우스의 포커스를 dbgrid2로 옮겨 계속
값을 입력하려고 합니다.

이때 , aa.db에 post를 하지않은 상태에서 dbgrid2에
한 레코드가 아니고 여러줄의 레코드를 입력하려고 하면
key violation이 발생합니다. 제가 생각하기로는 dbgrid2,
즉 bb.db는 마스터테이블의 주키를 참조하여 값을
보여주고 하는데, 새로운 값 입력시 aa.db에 입력된
값은 아직 post가 안된 메모리상에 있는 값이라 bb.db에서
그 상태로 값을 입력하려고 하니 인식을 못하는것 같습니다.

그래서 dbgrid2에 포커스가 갈때 dbgrid1의 내용을 post하고
싶지만, 후에 값의 cancel시 값을 다시 지워야 하는 문제가
발생되네요.

다르게, dbaware컨트롤을 사용하지 않고 일반 edit같은
컨트롤을 사용하여 값이 확정될때 대입해보려고도 했지만,
필드라든가 여러가지 문제로 하지 못하게 되었습니다.

혹시라도 table컴포넌트를 이용하여, 마스터/디테일 구조에서
마스터테이블과 디테일테이블에 동시에 값을 추가하면서
그리고 디테일테이블에 연속적으로 값을 추가하고자 할때,
위와 같은 에러없이 post와 cancel를 수행할 수 있는
방법 좀 알려주세요...

/////////////////////////////////////////////////////////
그리고 두번째로, 이것도 table컴포넌트를 이용했는데......
여러개의 마스터/디테일로 이루어진 테이블들에서 필요한
필드만 추출해서 dbgrid에 보여줄 순 없는지요.
dbgrid는 특정 datasource와 연결되어서 여러 관련된
테이블의 특정 필드를 한번에 보여줄 수 없네요.....
dblookupcombobox를 쓰려고 하니 연관된 필드의 데이타가
너무 많아 너무 비효율적이라 dblookupcombox도 쓰지
못하겠고요...

query컴포넌트를 이용하지 않고 해결할 수 있는
방법 좀 부탁드립니다.


여러분들의 답변 부탁드립니다.

참, 그리고 혹시 dbgrid에서 dblookupcombobox를 쓸 때,
dblookupcomboboxdm의 값 변경시 값이 즉시 바뀌지 않고
다른 셀이나 다른 컴포넌트로 포커스가 변경되야만
값이 보여지던데, 이것의 해결 방법도 부탁드립니다.

그럼..행운이 있기를 빕니다.
해결 방법도 부탁드립니다.



+ -

관련 글 리스트
1287 [질문] 데이타베이스에 관한 중요한 질문/프포 mmiracle 3379 1999/04/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.