Hi!
Подскажите новичку как в среде MS Visual C++ 6.0 наиболее просто добавить запись в уже существующую таблицу локальной базы данных .mdb.Таблица Employee состоит из 3х полей-счетчик,строка, число. В моем варианте происходит зависание системы при попытки сохранения в БД:
///////////////////////////////////
CString sPath("base.mdb");
CDaoDatabase db;
db.Open(sPath);
CDaoRecordset rs(&db);
CString SQLstr;
SQLstr.Format("SELECT * FROM Employee);
rs.Open(dbOpenDynaset,SQLstr);
{
rs.AddNew();
COleVariant vt;
vt.vt = VT_BSTR;
vt.bstrVal = (BSTR)((LPCSTR) myCStringValue);
recSet.SetFieldValue("EmpName",vt);
vt.vt = VT_I4;
vt.intVal = myIntValue;
rc.SetFieldValue("SubID",vt);
rs.Update();
}
rs.Close();
db.Close();
///////////////////////////////////////
Где может быть ошибка? Прав ли я в том,что пытаюсь работать через Dao?
Спасибо.
04.07.03 12:52: Перенесено модератором из 'C/C++' — ПК
Здравствуйте, Apach, Вы писали:
A>Hi!
A>Подскажите новичку как в среде MS Visual C++ 6.0 наиболее просто добавить запись в уже существующую таблицу локальной базы данных .mdb.Таблица Employee состоит из 3х полей-счетчик,строка, число. В моем варианте происходит зависание системы при попытки сохранения в БД:
[ skipped]
Правильный код такой (проверенный)
CString sPath("C:\\\\base.mdb");
CString myCStringValue("Vasja");
int myIntValue=5;
CDaoDatabase db;
db.Open((LPCTSTR)sPath);
CDaoRecordset rs(&db);
CString SQLstr;
SQLstr.Format("SELECT * FROM Employee");
rs.Open(dbOpenDynaset,SQLstr);
{
rs.AddNew();
COleVariant vt;
vt.vt = VT_BSTR;
vt.bstrVal = (BSTR)((LPCSTR) myCStringValue);
rs.SetFieldValue("EmpName",vt);
vt.vt = VT_I4;
vt.intVal = myIntValue;
rs.SetFieldValue("SubID",vt);
rs.Update();
}
rs.Close();
db.Close();
A>Где может быть ошибка? Прав ли я в том,что пытаюсь работать через Dao?
A> Спасибо.
В новых приложениях лучше использовать ADO (так рекомендует Microsoft

). Ну а для старых, где уже часть функциональности реализована на DAO, вполне можно. Надо отметить, что DAO MFC, входящая в состав VC++6 не умеет работать с форматом Access 2000. Может быть это откорректировано в VC++7, но я не проверяла.