recordset的复制问题

spoonyman 2008-11-29 03:04:43
主要是想把远端SQL Server中的数据复制到本地的Access中,表的结构相同
不要提用openrowset,因为Access文件和SQL Server不在一台机器上
初步的想法是用两个recordset,一个从SQL取数据,一个往Access里面插入数据
因为表的字段比较多,所以只好用一个循环


if (!m_pRecordset_Sql->adoEOF)
{
m_pRecordset_Access->AddNew();
for (int i = 1; i <= m_pRecordset_Sql->Fields->Count; i++)
{
vValue = m_pRecordset_Sql->GetCollect(i);
m_pRecordset_Access->PutCollect(i, vValue);
}
m_pRecordset_Access->Update();
m_pRecordset_Sql->MoveNext();
}


想知道上面这个段代码的问题出在哪?
...全文
93 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
spoonyman 2008-11-29
  • 打赏
  • 举报
回复
我已经搞清楚了
把修改过后的代码贴上来,让有需要的人看一下

while (!m_pRecordset_sql->adoEOF)
{
m_pRecordset_access->AddNew();
for (int i = 0; i < m_pRecordset_sql->Fields->Count; i++)
{
vValue = m_pRecordset_sql->GetCollect(_variant_t((long)i));
m_pRecordset_access->PutCollect(_variant_t((long)i), vValue);
}
m_pRecordset_access->Update();
m_pRecordset_sql->MoveNext();
}
一条晚起的虫 2008-11-29
  • 打赏
  • 举报
回复
i从0开始
一条晚起的虫 2008-11-29
  • 打赏
  • 举报
回复
vValue = m_pRecordset_Sql->GetCollect(i);
//GetCollect(i),是取当前记录的第i列的数据,知道怎么改了吧?
//至于记录的移动,是在MoveNext了
spoonyman 2008-11-29
  • 打赏
  • 举报
回复
呵呵,这个地方是个错误,但是这段代码的问题不在这个地方,而是

vValue = m_pRecordset_sql->GetCollect(i);


AfxMessageBox(e.ErrorMessage());输出结果为
unknown error 0x800A0CC1

[Quote=引用 1 楼 zaodt 的回复:]

if (!m_pRecordset_Sql->adoEOF)


if 改为 while
[/Quote]
一条晚起的虫 2008-11-29
  • 打赏
  • 举报
回复
if -> while
xqls_xqls 2008-11-29
  • 打赏
  • 举报
回复
if 改为 while
数据库操作一般用while循环,个人浅见。
qap22 2008-11-29
  • 打赏
  • 举报
回复
帮顶
zaodt 2008-11-29
  • 打赏
  • 举报
回复

if (!m_pRecordset_Sql->adoEOF)


if 改为 while

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧