ODBC对ACCESS施行SELECT INTO碰到“不能更新,数据库或对象为只读”
ODBC对ACCESS执行SELECT INTO碰到“不能更新,数据库或对象为只读”
网上对这个的说法都是权限问题,但我给Everyone都加上所有权限了,还是不行,代码如下:
CDatabase db;
int iOpenDBRet = OpenMengDb(&db,MENGDSN);
if (iOpenDBRet == 0)
{
return ;
}
try
{
//CString sql = "select * into xx3 from [Paradox 5.X;database=d:\\test].[钢筋计算表.db]";
CString sql = "select * into xx3 from t";
db.ExecuteSQL(sql);
}
------解决方案--------------------
上面说错了,刚用ADO助手测试了在Access2003上是可以的,可以用Ado助手先测试下SQL。
"select * into xx3 from [Paradox 5.X;database=d:\\test].[钢筋计算表.db]"
这句在Access中不能执行。
------解决方案--------------------
ret=db->OpenEx(str,
CDatabase::openReadOnly
------解决方案--------------------
CDatabase::noOdbcDialog);
CDatabase::openReadOnly只读模式当然不能插入了.
去掉这个.
------解决方案--------------------
CDatabase::openReadOnly
楼主自己设置的只读啊。去掉即可。
------解决方案--------------------
网上对这个的说法都是权限问题,但我给Everyone都加上所有权限了,还是不行,代码如下:
CDatabase db;
int iOpenDBRet = OpenMengDb(&db,MENGDSN);
if (iOpenDBRet == 0)
{
return ;
}
try
{
//CString sql = "select * into xx3 from [Paradox 5.X;database=d:\\test].[钢筋计算表.db]";
CString sql = "select * into xx3 from t";
db.ExecuteSQL(sql);
}
#define DBOPENSTREX "DSN=mengTmpDsn;Uid=Administrator;Pwd=;"
int OpenMengDb(CDatabase *db,CString strDSN)
{
//
CString str = "DSN=";
str += strDSN;
int ret;
db->SetLoginTimeout(5000);
try
{
ret=db->OpenEx(str,
CDatabase::openReadOnly | CDatabase::noOdbcDialog);
}
catch(CDBException* e1)
{
CString err;
if(e1->m_nRetCode==-1)
{
// AfxMessageBox("数据库IP地址错,连接失败!");
return 0;
}
else
err.Format("数据库错误:代码%d 内容%s",e1->m_nRetCode,e1->m_strError);
// AfxMessageBox(err);
return 0;
}
return 1;
}
------解决方案--------------------
上面说错了,刚用ADO助手测试了在Access2003上是可以的,可以用Ado助手先测试下SQL。
"select * into xx3 from [Paradox 5.X;database=d:\\test].[钢筋计算表.db]"
这句在Access中不能执行。
------解决方案--------------------
ret=db->OpenEx(str,
CDatabase::openReadOnly
------解决方案--------------------
CDatabase::noOdbcDialog);
CDatabase::openReadOnly只读模式当然不能插入了.
去掉这个.
------解决方案--------------------
CDatabase::openReadOnly
楼主自己设置的只读啊。去掉即可。
------解决方案--------------------