主题:求助!如何将计算结果写入Access数据库?
本人是编程菜鸟!这几天要用VC编制程序,并且要用到数据库!要把VC里一个函数计算出来的结果写到数据库里,但是怎么也实现不了,程序如下:
计算数据的函数:
void CImageNView::OnSeach1()
{
。。。
int n,i,m,c;
。。。
n=SearchAreaKernel(pImg[1]); //计算结果
N+=n; //计算结果
c=presetnum1-n; //计算结果
。。。
m_sbacst.m_show=n;
m_sbacst.m_stract=c;
m_sbacst.m_allnum=N;
}
其中 N是在CImageNview类里定义的static int N;变量m_sbacst是CDaoSBACST类的变量,即数据库变量;
我编的写入函数为:
void CImageNView::OnWrite()
{
// TODO: Add your command handler code here
CDaoDatabase db;
try
{
db.Open("SBACST.mdb",FALSE,FALSE,_T(""));
}
catch (CDaoException* e)
{
m_sbacst.DispDaoException(e);
e->Delete();
return;
}
if(!db.IsOpen()) return;
CDaoTableDef td(&db);
try
{
td.Open("数据记录");
}
catch (CDaoException* e)
{
m_sbacst.DispDaoException(e);
e->Delete();
return;
}
CDaoRecordset rs(&db);
try
{
rs.Open(&td,dbOpenTable,dbAppendOnly|dbConsistent);
}
catch (CDaoException* e)
{
m_sbacst.DispDaoException(e);
e->Delete();
return;
}
if(!td.IsOpen()) return;
m_sbacst.m_date=COleDateTime::GetCurrentTime();
m_sbacst.m_num+=1;
m_sbacst.m_prenum=presetnum1;//presetnum1是static int 变量
rs.AddNew();
COleVariant num=COleVariant(m_sbacst.m_num);
COleVariant prenum=COleVariant(m_sbacst.m_prenum);
COleVariant show=COleVariant(m_sbacst.m_show);
COleVariant stract=COleVariant(m_sbacst.m_stract);
COleVariant allnum=COleVariant(m_sbacst.m_allnum);
COleVariant mdate=COleVariant(m_sbacst.m_date);
rs.SetFieldValue("序号",num);
rs.SetFieldValue("打捆根数",prenum);
rs.SetFieldValue("当前根数",show);
rs.SetFieldValue("打捆差值",stract);
rs.SetFieldValue("累计总数",allnum);
rs.SetFieldValue("存储时间",mdate);
try
{
rs.Update();
}
catch (CDaoException* e)
{
m_sbacst.DispDaoException(e);
e->Delete();
return;
}
if(rs.IsOpen()) rs.Close();
if(td.IsOpen()) td.Close();
if(db.IsOpen()) db.Close();
MessageBox("添加记录成功!");
}
简单地说就是,我如何把OnSearch1函数计算出来的结果通过OnWrite函数里存到数据库?
如果不加入m_sbacst.m_show; m_sbacst.m_stract;m_sbacst.m_allnum这三项,数据库可以写入,但是加上这三项就不能,整了好几天也没明白!
如果哪位大侠知道,能不能给解答一下!
在此谢过了!
计算数据的函数:
void CImageNView::OnSeach1()
{
。。。
int n,i,m,c;
。。。
n=SearchAreaKernel(pImg[1]); //计算结果
N+=n; //计算结果
c=presetnum1-n; //计算结果
。。。
m_sbacst.m_show=n;
m_sbacst.m_stract=c;
m_sbacst.m_allnum=N;
}
其中 N是在CImageNview类里定义的static int N;变量m_sbacst是CDaoSBACST类的变量,即数据库变量;
我编的写入函数为:
void CImageNView::OnWrite()
{
// TODO: Add your command handler code here
CDaoDatabase db;
try
{
db.Open("SBACST.mdb",FALSE,FALSE,_T(""));
}
catch (CDaoException* e)
{
m_sbacst.DispDaoException(e);
e->Delete();
return;
}
if(!db.IsOpen()) return;
CDaoTableDef td(&db);
try
{
td.Open("数据记录");
}
catch (CDaoException* e)
{
m_sbacst.DispDaoException(e);
e->Delete();
return;
}
CDaoRecordset rs(&db);
try
{
rs.Open(&td,dbOpenTable,dbAppendOnly|dbConsistent);
}
catch (CDaoException* e)
{
m_sbacst.DispDaoException(e);
e->Delete();
return;
}
if(!td.IsOpen()) return;
m_sbacst.m_date=COleDateTime::GetCurrentTime();
m_sbacst.m_num+=1;
m_sbacst.m_prenum=presetnum1;//presetnum1是static int 变量
rs.AddNew();
COleVariant num=COleVariant(m_sbacst.m_num);
COleVariant prenum=COleVariant(m_sbacst.m_prenum);
COleVariant show=COleVariant(m_sbacst.m_show);
COleVariant stract=COleVariant(m_sbacst.m_stract);
COleVariant allnum=COleVariant(m_sbacst.m_allnum);
COleVariant mdate=COleVariant(m_sbacst.m_date);
rs.SetFieldValue("序号",num);
rs.SetFieldValue("打捆根数",prenum);
rs.SetFieldValue("当前根数",show);
rs.SetFieldValue("打捆差值",stract);
rs.SetFieldValue("累计总数",allnum);
rs.SetFieldValue("存储时间",mdate);
try
{
rs.Update();
}
catch (CDaoException* e)
{
m_sbacst.DispDaoException(e);
e->Delete();
return;
}
if(rs.IsOpen()) rs.Close();
if(td.IsOpen()) td.Close();
if(db.IsOpen()) db.Close();
MessageBox("添加记录成功!");
}
简单地说就是,我如何把OnSearch1函数计算出来的结果通过OnWrite函数里存到数据库?
如果不加入m_sbacst.m_show; m_sbacst.m_stract;m_sbacst.m_allnum这三项,数据库可以写入,但是加上这三项就不能,整了好几天也没明白!
如果哪位大侠知道,能不能给解答一下!
在此谢过了!