void CJCZLDlg::OnOK()
{
CDWordArray copylist;//用于存拷贝记录的标号的数组,第一个元素copylist[0]用来存放数组中存放的元素个数
CKCDM dbS,dbD;//源记录集和目标记录集
dbS.SetConnect (GetSourceConn());
dbD.SetConnect(GetDestinationConn());
dbS.Open();
dbD.Open();
while(!dbS.IsEOF ()) dbS.MoveNext ();//得到记录总数
TRACE("%d,记录总数\n",dbS.GetRecordCount ());
copylist.SetSize (dbS.GetRecordCount ()+500,500);
copylist[0]=0;
//准备要复制的列表
int k=1;
dbS.MoveFirst ();
while(! dbS.IsEOF ())
{
if ((dbS.m_ckdm.Left (2)+dbS.m_dm ) > (dbD.m_ckdm.Left (2)+dbD.m_dm ) )
if(!dbD.IsEOF ())dbD.MoveNext ();
else break;
else if ((dbS.m_ckdm.Left (2)+dbS.m_dm ) == (dbD.m_ckdm.Left (2)+dbD.m_dm ) )
{
dbS.MoveNext ();
if(!dbD.IsEOF()) dbD.MoveNext ();
else break;
}
else
{
copylist[0]=copylist[0]+1;
copylist[copylist[0]]=k;
dbS.MoveNext();
}
k++;
}
while(! dbS.IsEOF ())
{
copylist[0]=copylist[0]+1;
copylist[copylist[0]]=k;
dbS.MoveNext();
k++;
}
//以上循环部分对磁盘的要求好象很高,不知是为什么
//开始进行复制
int abc=copylist[0];
m_pro.SetRange32 (0,(long)copylist[0]);//设置进度条
m_pro.SetPos (1); dbS.MoveFirst();
// dbD.MoveLast ();
long i=1;
long m=copylist[0];
long j=1;
while(!dbS.IsEOF()&& (j<=m))
{
if(i==(long)copylist[j])
{
dbD.AddNew ();
dbD.SetFieldNull (NULL);
dbD.m_ckdm =dbS.m_ckdm;
dbD.m_dm =dbS.m_dm;
dbD.m_mc = dbS.m_mc;
dbD.m_islb =dbS.m_islb ;
dbD.m_chlb =dbS.m_chlb ;
dbD.m_ffid =dbS.m_ffid ;
dbD.m_dw = dbS.m_dw;
dbD.m_gg = dbS.m_gg;
dbD.m_txm = dbS.m_txm; dbD.SetFieldDirty (NULL);
// try{
dbD.Update ();
// }catch(...){}
m_pro.SetPos(j++);
}
i++;
dbS.MoveNext();
}
CString s;
s.Format ("数据转移已完成!共%d条记录被加入",(long)copylist[0]);
AfxMessageBox(s);
m_pro.SetPos(0);
}
我要转移的数据只有1000多条,但确用了100多M的磁盘空间,这是什么原因???
时间还很长。
我这个程序是用来进行30000条记录的转出的,那就是要用几吉的空间作缓冲,这怎么可能?Why,Why,Why?
解决方案 »
- 如何用按钮禁用主菜单项
- windows最顶层绘图问题
- MapX控件的问题
- 本人现在参与一项目工程,需要实现图形处理,请给予帮助,查看以下我的问题
- pomelowu(羽战士)和kugou123(酷狗)(http://www.xiaozhou.net)请2位大哥进来拿分 谢谢你们的帮忙。
- 怎样使自己的SOCKET支持通过代理连接上INTERNET上的服务器
- 拖动 scrollview 的滚动条 时重绘窗口
- 请教高手在vb.net中如何取得相对路径?急急急!!
- 关于cfiledialog在VC2010中的问题
- 急需新版MSDN!!!!!!!!!!!!!!!!URGENT。。。。。。。
- 如何改变工具栏的背景色?
- 请问如何能够设置SDI应用程序框架的背景图,如:在菜单,框架边框等的背景图
默认的记录集类型是静态的快照集,使用动态记录集就没有这个问题了
大概是静态记录集想提高效率使用了文件缓冲的结果.
不过我的程序运行对于29000条的表要花20分钟才能完成,却不知何故
是不是要使用批处理模式才行呢
请问kneek(friend):
你是用什么工具转的,速度快不快?