脑袋被卡住了

polyval01 2010-03-26 10:01:57
如下两个基本上相同的函数
//first 能够实现添加功能 CPage1的成员函数
void CPage1::Add(void)
{
this->UpdateData();
CString sql_;
//m_pRs.CreateInstance(__uuidof(Recordset));
sql_.Format(_T("INSERT INTO tb_mat_code(code,name)VALUES('%s','%s')"),m_code,m_name);
_bstr_t sql=sql_;
try
{
m_pCon->Execute(sql,NULL,adCmdText);
RefData();
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
}
/*catch(const _com_error& that)
{
if(that.ErrorMessage==(TCHAR *)(3092))
MessageBox(_T("编号已经存在"),0,MB_OK);
}*/
m_log->AddLog("添加物料记录");
m_code=_T("");
m_name=_T("");
this->UpdateData(false);

}

//second 不能向表中添加功能 CPage2的成员函数
void CPage2::Add(void)
{
this->UpdateData();
CString sql_,c_indate;
//m_pRs.CreateInstance(__uuidof(Recordset));
m_indate.GetWindowText(c_indate);
sql_.Format(_T("INSERT INTO tb_mat_in(code,indate,provider,telephone,innum,price,buyer)VALUES('%s','%s','%s','%s',%f,%f,'%s')"),m_code,c_indate,m_provider,m_phone,m_innum,m_inprice,m_buyer);
_bstr_t sql=sql_;
try
{
m_pRs->Open(sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
RefData();
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
long errorCode=e.WCode();
if(3127==errorCode) AfxMessageBox(_T("表不存在"));
if(3092==errorCode) AfxMessageBox(_T("表已经存在"));
}
m_log->AddLog("添加物料记录");
this->UpdateData(false);

}


麻烦大家帮我看下,是不是这个下面的sql语句出了问题.....因为调试时,进入了红色的代码....想不通,两个相似类的相同成员函数.真的是脑袋被卡住了.
...全文
80 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
polyval01 2010-03-28
  • 打赏
  • 举报
回复
换了控件的数据类型.OK了....
我发现了一个重大的问题.就是一出现问题的时候不要急着发问.先看MSDN,再看CSDN.呵呵..不能忘了结账..

thanks all you!!!
精锐掷矛手 2010-03-27
  • 打赏
  • 举报
回复
有没有可能是RefData();的问题。
polyval01 2010-03-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bilaopao 的回复:]
使劲拔出来
[/Quote]
呵呵,我也想快点拔出来,卡了很久了,数据类型应该不会有问题.
polyval01 2010-03-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 rebort_q 的回复:]
你的m_pRs在Open之前是否Close?数据类型是否正确?
[/Quote]
我在m_pRs->Open()之前也试了m_Rps->raw_Close()
polyval01 2010-03-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happyparrot 的回复:]
m_pRs->Open(sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
第二段为什么用Open呢?明明是INSERT语句啊,也应该像第一段一样,用m_pCon->Execute
[/Quote]
我两个都试了.试了很多.估计是SQL语句或者是ADO对象出了问题,没关闭的原因.
polyval01 2010-03-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 rebort_q 的回复:]
有没有可能是RefData();的问题。
[/Quote]

我找到可能是引起问题的关键了.问题处我用红线标出吧.

void CPage2::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)
{
// 这是单击列表控件时,将选中的记录,分别在对应的控件中显示.
UpdateData(true);
int i=m_list.GetSelectionMark();
m_code=m_list.GetItemText(i,0);
CString c_indate,c_innum,c_inprice;
c_indate=m_list.GetItemText(i,1);
m_indate.SetWindowTextW((LPCTSTR)c_indate);
m_provider=m_list.GetItemText(i,2);
m_phone=m_list.GetItemText(i,3);
c_innum=m_list.GetItemText(i,4);
m_innum=atof((const char*)(LPCTSTR)c_innum);
c_inprice=m_list.GetItemText(i,5);
m_inprice=atof((const char*)(LPCTSTR)c_inprice);
m_buyer=m_list.GetItemText(i,6);
UpdateData(false);
*pResult = 0;
}

红色的时间字段值并没有赋值上去,其它的都赋了.
我将头文件发下://.h
public:
CListCtrl m_list;
CString m_code;
CString m_phone;
CString m_provider;
CString m_buyer;
afx_msg void OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult);
double m_innum;
double m_inprice;
CDateTimeCtrl m_indate;
bilaopao 2010-03-26
  • 打赏
  • 举报
回复
使劲拔出来
精锐掷矛手 2010-03-26
  • 打赏
  • 举报
回复
你的m_pRs在Open之前是否Close?数据类型是否正确?
快乐鹦鹉 2010-03-26
  • 打赏
  • 举报
回复
m_pRs->Open(sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
第二段为什么用Open呢?明明是INSERT语句啊,也应该像第一段一样,用m_pCon->Execute

4,011

社区成员

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

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