VS 2008버전으로 열심히 하다가 -_-;;
너무 오류가 많이 나서 다시 6.0으로 돌아왔다....;;
6.0에서 두개의 테이블을 이용하여 Access DB에 연결하는 방법을 정리해 보겠다.
(DB생성시 2개의 테이블을 조인하여 생성하게 되면, '변경할 수 없습니다' 뭐 이런 오류가 뜨더라 ...
어제 밤부터 거의 삽질함..;;)
먼저 일반적인 방법으로 MFC프로젝트를 생성한다.(생성과정 생략- ODBC는 아직 추가 안하고.)
StdAfx.h에
afxcmn밑에
#include <afxdb.h> 추가
View.h에 #include "OneSet.h"
추가
public에 COneSet m_oset;
보통 m_pSet의 경우
m_pSet->AddNew();
m_pSet->m_ID = 131231;
m_pSet->Update();
구조이다.
하지만 복수의 테이블을 다루기 위해 살짝 다르게 사용하니 문법절차가 살짝 다르다.
테이블에 접근하기 위해 만든 변수를 사용할때 가장먼저 Open() 을 써야 한다.
이부분이 없다면 "레코드셋은 읽기전용임" 혹은 에러가 날것이다.
스샷처럼
m_gSet.Open();
m_gSet.AddNew();
m_gSet.m_ID = 123123;
m_gSet.m_Name = "asdasd"
....
m_gSet.Update();
m_gSet.Close();
하면된다.
마찬가지로 다른 테이블에 접근할경우 이전에 설정해준 변수를 사용하면된다.
어떤가 정말쉽다. 나는 이걸로 5시간을 삽질했다만.. -_-
다음은 사용할수있는 펑션들이다.
CRecordset :: MoveFirst() 데이터베이스의 맨 처음 레코드로 이동
CRecordset :: MoveLast() 데이터베이스의 맨 마지막 레코드로 이동
CRecordset :: MoveNext() 데이터베이스의 다음 레코드로 이동
CRecordset :: MovePrev() 데이터베이스의 이전 래코드로 이동
CRecordset :: IsBOF() 데이터베이스의 처음인가를 알고자 할때
CRecordset :: IsEOF() 데이터베이스의 마지막인가를 알고자 할때
CRecordset :: IsEOF() 데이터베이스의 마지막인가를 알고자 할때
CRecordset :: AddNew() 데이터베이스에 새로운 레코드를 설정할 때
CRecordset :: Delete() 현재 설정된 레코드를 삭제할 때
CRecordset :: Edit() 현재 레코드를 수정할 수 있는 상태로 놓을 때
CRecordset :: Open() 데이터베이스를 연다.
CRecordset :: Close() 데이터베이스를 닫는다.
CRecordset :: Delete() 현재 설정된 레코드를 삭제할 때
CRecordset :: Edit() 현재 레코드를 수정할 수 있는 상태로 놓을 때
CRecordset :: Open() 데이터베이스를 연다.
CRecordset :: Close() 데이터베이스를 닫는다.
CRecordset :: m_strFilter SQL문을 이용한 필터 만들기
CRecordset :: m_strSort 데이터 레코드를 특정 방식으로 sorting
CRecordset :: Update() 현재 레코드를 데이터베이스에 업데이트한다
CRecordset :: m_strSort 데이터 레코드를 특정 방식으로 sorting
CRecordset :: Update() 현재 레코드를 데이터베이스에 업데이트한다
[출처] MFC + ODBC (복수의 테이블)|작성자 케이
'Windows Prog' 카테고리의 다른 글
프린트(버튼클릭시) (0) | 2012.01.01 |
---|---|
뷰 크기 지정 (0) | 2011.12.31 |
으아 =_= (0) | 2011.12.28 |
- (0) | 2011.12.24 |
[펌] 프린터 관련 함수 (0) | 2011.11.10 |