2011. 12. 28. 11:26

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 :: AddNew() 데이터베이스에 새로운 레코드를 설정할 때
CRecordset :: Delete() 현재 설정된 레코드를 삭제할 때
CRecordset :: Edit() 현재 레코드를 수정할 수 있는 상태로 놓을 때
CRecordset :: Open() 데이터베이스를 연다.
CRecordset :: Close() 데이터베이스를 닫는다.
CRecordset :: m_strFilter  SQL문을 이용한 필터 만들기
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
Posted by Triany