급한 문제는 해결하셨는지 모르겠군요. 워낙 뜸하게 찾아와서리...
정확한 상황이 어떤지 잘 모르겠군요. 담에 글 쓰실 때는 정확한 상황을 올려주세요.
우선 파악한 상황을 적어 볼께요(맞는지는 장담 못하겠지만...)
프로그램 환경 : 비주얼 C++, MFC
사용 DB : MS_SQL 혹은 Access
////////////////////////////////////////////////////////////
우선 DB 설계시 AMPLAN, AMDONE, PMPLAN, PMDONE은 NULL을 허용해야겠군요.
그리고 가능하다면 필드명으로 DATE 같은 것은 쓰지 않는 것이 좋습니다. 시스템 예약어일 가능성이 많거든요(Access 같은 경우 INSERT 시 에러를 발생시킵니다)
TRY 부분의 코드를 다시 써서 올립니다.
CString strSQL;
strSQL.Format("SELECT * FROM PLAN WHERE P_DATE = '%s'", date);
recSet.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL);
if (recSet.GetRecordCount() < 1)
{
strSQL.Format("INSERT INTO PLAN (P_DATE) VALUES ('%s')", date);
g_dbDiary.ExecuteSQL(strSQL);
recSet.Close();
strSQL.Format("SELECT * FROM PLAN WHERE P_DATE = '%s'", date);
recSet.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL);
}
recSet.GetFieldValue(_T("AMPLAN"), m_strAmplan);
recSet.GetFieldValue(_T("AMDONE"), m_strAmdone);
recSet.GetFieldValue(_T("PMPLAN"), m_strPmplan);
recSet.GetFieldValue(_T("PMDONE"), m_strPmdone);
////////////////////////////////////////////////////////////
(1) DATE를 P_DATE라고 필드명을 바꾸었습니다.
(2) INSERT 문은 Record Set을 들고 오는 것이 아니라 실행하는 문이지요.
(3) Record Set이 열려있는지를 확인하는 것이 아니라 Record의 개수를 알아야 하겠지요.
그럼 수고하세요 ^^
|