最简单的数据库添加纪录问题!!!!????

gaoyoujun 2003-09-26 04:13:57
void CEmployee11View::OnRecordAdd()
{
// TODO: Add your command handler code here

m_pSet->AddNew();
m_bAdding=TRUE; //设置纪录添加标志
CEdit* pCtrl=(CEdit*)GetDlgItem(IDC_EMPLOYEE_ID);
int result=pCtrl->SetReadOnly(FALSE);//取消原来数据库中的第一个 段的只读属性,允许增加纪录
UpdateData(FALSE);

}

onmove函数如下:
BOOL CEmployee11View::OnMove(UINT nIDMoveCommand)
{
if(m_bAdding)
{
m_bAdding=FALSE;
UpdateData(TRUE); //将数据从控件中传送给纪录集
if(m_pSet->CanUpdate()) //确定对数据源的更新是否可行
m_pSet->Update();
m_pSet->Requery();//重建纪录集
UpdateData(FALSE);
CEdit* pCtrl=(CEdit *)GetDlgItem(IDC_EMPLOYEE_ID);
pCtrl->SetReadOnly(TRUE);
return TRUE;
}
else
return CRecordView::OnMove(nIDMoveCommand);
}
可是添加完纪录之后,在打开数据库,还是没有添加成功,请您指教!谢谢!
QQ: 16748096 EMAIL: gaoyoujun7777@sohu.com
...全文
23 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
postform999 2003-11-03
  • 打赏
  • 举报
回复
你的m_sTelNo的类型是什么?在插入的时候要把VC数据类型转换为com数据类型
比如当m_StemNo是整形的时候有_variant_t((Long)(m_sTelNo))
同时注意如果插入的不是字符型的话要把''去掉
tanzicputao 2003-11-03
  • 打赏
  • 举报
回复
弟我用vc的ado对数据库进行操作,在记录集中对记录的选择和删除都可以,但是不能往数据库里插入数据
sql_="insert into teller (tel_id,telnam,telgrp,telpwd) values ('"+m_sTelNo+"','"+m_sTelNm+"','"+m_sTelTyp+"','000000')";
m_pRs->Open(sql_, m_pLConn.GetInterfacePtr(),adOpenDynamic, adLockPessimistic,adCmdText);
跟踪调试发现
inline HRESULT Recordset15::Open ( const _variant_t & Source, const _variant_t & ActiveConnection, enum CursorTypeEnum CursorType, enum newLockTypeEnum LockType, long Options ) {
HRESULT _hr = raw_Open(Source, ActiveConnection, CursorType, LockType, Options);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _hr;
执行到此步时出错,_hr的值非零。我得connection的打开方式是adModeUnknown.我把打开方式改成adModeReadWrite,系统却提示“变量或者类型不对,或者不在可以接受的范围之内,要不就是与其他数据冲突”。请高手指教,我那里错了!!!
哈密尔 2003-09-26
  • 打赏
  • 举报
回复
我觉得你这种方式不好,我前不久也写了一个跟你一样程序,结果发现不好,现在我添了一个对话框及其对应的类CUpdateD,

CUpdateD add;
if(add.DoModal()==IDOK)
{

if(add.m_UCid==_T("")||add.m_UCname==_T("")||add.m_UCteacher==_T(""))
{
MessageBox("输入的内容不能为空,添加记录失败");
return ;
}
m_pSet->AddNew();
//更新记录集中的数据
m_pSet->m_c_=add.m_UCid;
m_pSet->m_cname=add.m_UCname;
m_pSet->m_teacher=add.m_UCteacher;
m_pSet->Update();
m_pSet->Requery();
m_pSet->MoveLast();
UpdateData(false);//将数据从纪录集中传送给控件
m_add=true;
}
gunyeah 2003-09-26
  • 打赏
  • 举报
回复
你用的这种方式我觉得不好啊,错误很难控制的,你用SQL语句的方式吧,
如果用你这种方式这样写吧
/m_pRecordset->AddNew();
//m_pRecordset->PutCollect("Name",_variant_t(m_Name));
//m_pRecordset->PutCollect("Age",atol(m_Age));
//convert string to long integer

4,011

社区成员

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

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