m_pSet->AddNew();
UpdateData(false);
我想问的是m_pSet->AddNew();具体功能是什么啊?我在运行程序时发现,它好象就是
要清空当前对话框中各个编辑框的数据,并不能实现增加一个记录啊.(我已经将各个编辑框映射到数据表中相应的字段了).请问,到底如何实现增加一个记录啊?
12 个解决方案
#1
拜托了,各位大虾!
#2
我狂晕.这样一个简单问题,怎么就没人来帮帮解答了.难道是我分数给少了还是对这个问题不屑讲啊?小弟很急啊.
#3
我算是服了,这样一个问题都没人来答复我.遗憾啊!
#4
m_pSet->AddNew();
在输入框中输入添加的内容
m_pSet->Update();
在输入框中输入添加的内容
m_pSet->Update();
#5
还要看你有没有把输入框中的东西与数据库中的绑定
所以正确的应该是这样.
m_pSet->AddNew();
然后给m_pSet->column1什么的数据付名,看你那个派生类里是怎么给数据库字段命名的
改好后就m_pSet->Update();
然后最好m_pSet->requery();重新取得数据
如果你将m_pSet->column1什么的帮定到对话框中的编辑控件的话
那么就是
m_pSet->AddNew();
在输入框中输入添加的内容
UpdateData(false);将对话框中的数据传给m_pSet->column1什么的(因为你帮定了)
然后
m_pSet->Update();
m_pSet->requary
所以正确的应该是这样.
m_pSet->AddNew();
然后给m_pSet->column1什么的数据付名,看你那个派生类里是怎么给数据库字段命名的
改好后就m_pSet->Update();
然后最好m_pSet->requery();重新取得数据
如果你将m_pSet->column1什么的帮定到对话框中的编辑控件的话
那么就是
m_pSet->AddNew();
在输入框中输入添加的内容
UpdateData(false);将对话框中的数据传给m_pSet->column1什么的(因为你帮定了)
然后
m_pSet->Update();
m_pSet->requary
#6
我已经将m_pSet->column1什么的帮定到对话框中的编辑控件.照楼上的所说,仅靠一个按钮,
并不能实现添加一个记录.而应该使用两个:一个按钮执行代码m_pSet->AddNew();然后手工
输入数据记录,再使用另一个按钮执行代码:
UpdateData(false);
m_pSet->Update();
m_pSet->Requary();
不知道我说的是不是对的.如果是对的,我就可以结贴了.
并不能实现添加一个记录.而应该使用两个:一个按钮执行代码m_pSet->AddNew();然后手工
输入数据记录,再使用另一个按钮执行代码:
UpdateData(false);
m_pSet->Update();
m_pSet->Requary();
不知道我说的是不是对的.如果是对的,我就可以结贴了.
#7
照我上面说的去做,发现还是不行啊.就是打开数据库时,里面根本就没有我添加的那条记录,
是不是一定要用SQL语句才能实现向数据表添加记录呢?
是不是一定要用SQL语句才能实现向数据表添加记录呢?
#8
快来人啊!
#9
我用的方法比较复杂,照书做的,帮不上你了。
用的是
Fields * fields = NULL;
Field* field = NULL;
感觉用起来很不好用。不知道又没有简单好用的方法。
用的是
Fields * fields = NULL;
Field* field = NULL;
感觉用起来很不好用。不知道又没有简单好用的方法。
#10
那我再问一下:m_pSet->方式能否通过SQL语句对数据表进行操作呢?
#11
不明白为什么我行你不行?这是以前我写的个程序,你自己分析一下吧。
void COicqView::OnDel()
{
// TODO: Add your control notification handler code here
if(AfxMessageBox("真的要删除"+m_pSet->m_column1+"吗?",MB_OKCANCEL)==IDCANCEL)return;
if(m_pSet->IsEOF())
{
AfxMessageBox("没有号码可删除?");
return;
}
m_pSet->Delete();
if(m_pSet->IsEOF())
m_pSet->MoveLast();
else m_pSet->MoveNext();
m_pSet->Requery();
UpdateData(false);
AfxMessageBox("已经删除了该号码");
OnShowall();
}
void COicqView::OnAlldel()
{
// TODO: Add your control notification handler code here
if(AfxMessageBox("真的要删除全部号码吗?",MB_OKCANCEL)==IDCANCEL)return;
int i=0;
CString str;
if(m_pSet->IsEOF())
{
AfxMessageBox("没有号码可删除?");
return;
}
m_pSet->MoveFirst();
while(!m_pSet->IsEOF())
{
m_pSet->Delete();
m_pSet->MoveNext();
m_pSet->Requery();
UpdateData(false);
i++;
}
str.Format("已经删除了%d条号码",i);
AfxMessageBox(str);
OnShowall();
}
void COicqView::OnAdd()
{
// TODO: Add your control notification handler code here
CAddDialog dlg;
if(dlg.DoModal()==IDOK)
{
if(dlg.m_addnum.IsEmpty()||dlg.m_addpsw.IsEmpty())
{
AfxMessageBox("号码或密码为空,不能添加!");
return;
}
m_pSet->AddNew();
m_pSet->m_column1 = dlg.m_addnum;
m_pSet->m_column2 = dlg.m_addpsw;
m_pSet->Update();
m_pSet->Requery();
AfxMessageBox("已经添加"+dlg.m_addnum+"密码为"+dlg.m_addpsw);
UpdateData(false);
}
OnShowall();
}
void COicqView::OnShowall()
{
// TODO: Add your control notification handler code here
m_list.DeleteAllItems();
while(m_list.DeleteColumn(0));
m_pSet->Requery();
if(m_pSet->IsEOF())
{
AfxMessageBox("由于在数据库底或者数据库没有数据");
return;
}
m_pSet->MoveFirst();
m_list.InsertColumn(0,"号码",LVCFMT_LEFT,84);
m_list.InsertColumn(1,"密码",LVCFMT_LEFT,84);
int i=0;
while(!m_pSet->IsEOF())
{
int j=0;
j=m_list.InsertItem(i,m_pSet->m_column1);
m_list.SetItemText(j,1,m_pSet->m_column2);
i++;
m_pSet->MoveNext();
}
m_pSet->MoveFirst();
UpdateData(false);
}
void COicqView::OnXiugai()
{
// TODO: Add your control notification handler code here
CAddDialog dlg;
if(dlg.DoModal()==IDOK)
{
if(dlg.m_addnum.IsEmpty()||dlg.m_addpsw.IsEmpty())
{
AfxMessageBox("号码或密码为空,不能修改!");
return;
}
m_pSet->Edit();
m_pSet->m_column1 = dlg.m_addnum;
m_pSet->m_column2 = dlg.m_addpsw;
m_pSet->Update();
m_pSet->Requery();
AfxMessageBox("已经修改"+dlg.m_addnum+"密码为"+dlg.m_addpsw);
UpdateData(false);
OnShowall();
}
}
能直接用sql不过是cdatabase::executesql(大概就这个名字吧,还像错了,你查查,自己电脑不在我身边在网吧搞的)
void COicqView::OnDel()
{
// TODO: Add your control notification handler code here
if(AfxMessageBox("真的要删除"+m_pSet->m_column1+"吗?",MB_OKCANCEL)==IDCANCEL)return;
if(m_pSet->IsEOF())
{
AfxMessageBox("没有号码可删除?");
return;
}
m_pSet->Delete();
if(m_pSet->IsEOF())
m_pSet->MoveLast();
else m_pSet->MoveNext();
m_pSet->Requery();
UpdateData(false);
AfxMessageBox("已经删除了该号码");
OnShowall();
}
void COicqView::OnAlldel()
{
// TODO: Add your control notification handler code here
if(AfxMessageBox("真的要删除全部号码吗?",MB_OKCANCEL)==IDCANCEL)return;
int i=0;
CString str;
if(m_pSet->IsEOF())
{
AfxMessageBox("没有号码可删除?");
return;
}
m_pSet->MoveFirst();
while(!m_pSet->IsEOF())
{
m_pSet->Delete();
m_pSet->MoveNext();
m_pSet->Requery();
UpdateData(false);
i++;
}
str.Format("已经删除了%d条号码",i);
AfxMessageBox(str);
OnShowall();
}
void COicqView::OnAdd()
{
// TODO: Add your control notification handler code here
CAddDialog dlg;
if(dlg.DoModal()==IDOK)
{
if(dlg.m_addnum.IsEmpty()||dlg.m_addpsw.IsEmpty())
{
AfxMessageBox("号码或密码为空,不能添加!");
return;
}
m_pSet->AddNew();
m_pSet->m_column1 = dlg.m_addnum;
m_pSet->m_column2 = dlg.m_addpsw;
m_pSet->Update();
m_pSet->Requery();
AfxMessageBox("已经添加"+dlg.m_addnum+"密码为"+dlg.m_addpsw);
UpdateData(false);
}
OnShowall();
}
void COicqView::OnShowall()
{
// TODO: Add your control notification handler code here
m_list.DeleteAllItems();
while(m_list.DeleteColumn(0));
m_pSet->Requery();
if(m_pSet->IsEOF())
{
AfxMessageBox("由于在数据库底或者数据库没有数据");
return;
}
m_pSet->MoveFirst();
m_list.InsertColumn(0,"号码",LVCFMT_LEFT,84);
m_list.InsertColumn(1,"密码",LVCFMT_LEFT,84);
int i=0;
while(!m_pSet->IsEOF())
{
int j=0;
j=m_list.InsertItem(i,m_pSet->m_column1);
m_list.SetItemText(j,1,m_pSet->m_column2);
i++;
m_pSet->MoveNext();
}
m_pSet->MoveFirst();
UpdateData(false);
}
void COicqView::OnXiugai()
{
// TODO: Add your control notification handler code here
CAddDialog dlg;
if(dlg.DoModal()==IDOK)
{
if(dlg.m_addnum.IsEmpty()||dlg.m_addpsw.IsEmpty())
{
AfxMessageBox("号码或密码为空,不能修改!");
return;
}
m_pSet->Edit();
m_pSet->m_column1 = dlg.m_addnum;
m_pSet->m_column2 = dlg.m_addpsw;
m_pSet->Update();
m_pSet->Requery();
AfxMessageBox("已经修改"+dlg.m_addnum+"密码为"+dlg.m_addpsw);
UpdateData(false);
OnShowall();
}
}
能直接用sql不过是cdatabase::executesql(大概就这个名字吧,还像错了,你查查,自己电脑不在我身边在网吧搞的)
#12
是这样的,我要做一个消息处理函数,比如点击"增加记录",就清空当前编辑框的信息,
然后手动对每个编辑框输入数据,再点击另一个按钮"确定",就将相应的数据添加到数据库
中的数据表中.请问:"增加记录"和"确定"这两个按钮的消息处理函数怎么写?
我是这样写的:
增加记录代码:m_name=_T("");
//先清空,有多少条都要写
UpdateData(FALSE);
"确定"的代码为:
UpdateData(TRUE);
m_pSet->AddNew();
m_pSet->Update();
现在又出现的新问题是按照m_name=_T("")这种方式清空没有成功,程序毫无反应.
我给数据库中各个字段定义的成员变量形如:m_name;
我给各个编辑框控件添加的变量为:形如m_pSet->m_name(注意,这样的变量是在下拉列表中
直接找到的,因为在我定义了数据库中各个字段的成员变量后,它就自动产生了),最后显示在列表中,各个编辑框控件对应的成员变量为形如->m_name,我就不明白对编辑框进行清空到底是使用哪个变量.m_name,m_pSet->m_name,->m_name这三种方式似乎都不行啊.
楼上的能不能帮我再解答一下呢?
然后手动对每个编辑框输入数据,再点击另一个按钮"确定",就将相应的数据添加到数据库
中的数据表中.请问:"增加记录"和"确定"这两个按钮的消息处理函数怎么写?
我是这样写的:
增加记录代码:m_name=_T("");
//先清空,有多少条都要写
UpdateData(FALSE);
"确定"的代码为:
UpdateData(TRUE);
m_pSet->AddNew();
m_pSet->Update();
现在又出现的新问题是按照m_name=_T("")这种方式清空没有成功,程序毫无反应.
我给数据库中各个字段定义的成员变量形如:m_name;
我给各个编辑框控件添加的变量为:形如m_pSet->m_name(注意,这样的变量是在下拉列表中
直接找到的,因为在我定义了数据库中各个字段的成员变量后,它就自动产生了),最后显示在列表中,各个编辑框控件对应的成员变量为形如->m_name,我就不明白对编辑框进行清空到底是使用哪个变量.m_name,m_pSet->m_name,->m_name这三种方式似乎都不行啊.
楼上的能不能帮我再解答一下呢?
#1
拜托了,各位大虾!
#2
我狂晕.这样一个简单问题,怎么就没人来帮帮解答了.难道是我分数给少了还是对这个问题不屑讲啊?小弟很急啊.
#3
我算是服了,这样一个问题都没人来答复我.遗憾啊!
#4
m_pSet->AddNew();
在输入框中输入添加的内容
m_pSet->Update();
在输入框中输入添加的内容
m_pSet->Update();
#5
还要看你有没有把输入框中的东西与数据库中的绑定
所以正确的应该是这样.
m_pSet->AddNew();
然后给m_pSet->column1什么的数据付名,看你那个派生类里是怎么给数据库字段命名的
改好后就m_pSet->Update();
然后最好m_pSet->requery();重新取得数据
如果你将m_pSet->column1什么的帮定到对话框中的编辑控件的话
那么就是
m_pSet->AddNew();
在输入框中输入添加的内容
UpdateData(false);将对话框中的数据传给m_pSet->column1什么的(因为你帮定了)
然后
m_pSet->Update();
m_pSet->requary
所以正确的应该是这样.
m_pSet->AddNew();
然后给m_pSet->column1什么的数据付名,看你那个派生类里是怎么给数据库字段命名的
改好后就m_pSet->Update();
然后最好m_pSet->requery();重新取得数据
如果你将m_pSet->column1什么的帮定到对话框中的编辑控件的话
那么就是
m_pSet->AddNew();
在输入框中输入添加的内容
UpdateData(false);将对话框中的数据传给m_pSet->column1什么的(因为你帮定了)
然后
m_pSet->Update();
m_pSet->requary
#6
我已经将m_pSet->column1什么的帮定到对话框中的编辑控件.照楼上的所说,仅靠一个按钮,
并不能实现添加一个记录.而应该使用两个:一个按钮执行代码m_pSet->AddNew();然后手工
输入数据记录,再使用另一个按钮执行代码:
UpdateData(false);
m_pSet->Update();
m_pSet->Requary();
不知道我说的是不是对的.如果是对的,我就可以结贴了.
并不能实现添加一个记录.而应该使用两个:一个按钮执行代码m_pSet->AddNew();然后手工
输入数据记录,再使用另一个按钮执行代码:
UpdateData(false);
m_pSet->Update();
m_pSet->Requary();
不知道我说的是不是对的.如果是对的,我就可以结贴了.
#7
照我上面说的去做,发现还是不行啊.就是打开数据库时,里面根本就没有我添加的那条记录,
是不是一定要用SQL语句才能实现向数据表添加记录呢?
是不是一定要用SQL语句才能实现向数据表添加记录呢?
#8
快来人啊!
#9
我用的方法比较复杂,照书做的,帮不上你了。
用的是
Fields * fields = NULL;
Field* field = NULL;
感觉用起来很不好用。不知道又没有简单好用的方法。
用的是
Fields * fields = NULL;
Field* field = NULL;
感觉用起来很不好用。不知道又没有简单好用的方法。
#10
那我再问一下:m_pSet->方式能否通过SQL语句对数据表进行操作呢?
#11
不明白为什么我行你不行?这是以前我写的个程序,你自己分析一下吧。
void COicqView::OnDel()
{
// TODO: Add your control notification handler code here
if(AfxMessageBox("真的要删除"+m_pSet->m_column1+"吗?",MB_OKCANCEL)==IDCANCEL)return;
if(m_pSet->IsEOF())
{
AfxMessageBox("没有号码可删除?");
return;
}
m_pSet->Delete();
if(m_pSet->IsEOF())
m_pSet->MoveLast();
else m_pSet->MoveNext();
m_pSet->Requery();
UpdateData(false);
AfxMessageBox("已经删除了该号码");
OnShowall();
}
void COicqView::OnAlldel()
{
// TODO: Add your control notification handler code here
if(AfxMessageBox("真的要删除全部号码吗?",MB_OKCANCEL)==IDCANCEL)return;
int i=0;
CString str;
if(m_pSet->IsEOF())
{
AfxMessageBox("没有号码可删除?");
return;
}
m_pSet->MoveFirst();
while(!m_pSet->IsEOF())
{
m_pSet->Delete();
m_pSet->MoveNext();
m_pSet->Requery();
UpdateData(false);
i++;
}
str.Format("已经删除了%d条号码",i);
AfxMessageBox(str);
OnShowall();
}
void COicqView::OnAdd()
{
// TODO: Add your control notification handler code here
CAddDialog dlg;
if(dlg.DoModal()==IDOK)
{
if(dlg.m_addnum.IsEmpty()||dlg.m_addpsw.IsEmpty())
{
AfxMessageBox("号码或密码为空,不能添加!");
return;
}
m_pSet->AddNew();
m_pSet->m_column1 = dlg.m_addnum;
m_pSet->m_column2 = dlg.m_addpsw;
m_pSet->Update();
m_pSet->Requery();
AfxMessageBox("已经添加"+dlg.m_addnum+"密码为"+dlg.m_addpsw);
UpdateData(false);
}
OnShowall();
}
void COicqView::OnShowall()
{
// TODO: Add your control notification handler code here
m_list.DeleteAllItems();
while(m_list.DeleteColumn(0));
m_pSet->Requery();
if(m_pSet->IsEOF())
{
AfxMessageBox("由于在数据库底或者数据库没有数据");
return;
}
m_pSet->MoveFirst();
m_list.InsertColumn(0,"号码",LVCFMT_LEFT,84);
m_list.InsertColumn(1,"密码",LVCFMT_LEFT,84);
int i=0;
while(!m_pSet->IsEOF())
{
int j=0;
j=m_list.InsertItem(i,m_pSet->m_column1);
m_list.SetItemText(j,1,m_pSet->m_column2);
i++;
m_pSet->MoveNext();
}
m_pSet->MoveFirst();
UpdateData(false);
}
void COicqView::OnXiugai()
{
// TODO: Add your control notification handler code here
CAddDialog dlg;
if(dlg.DoModal()==IDOK)
{
if(dlg.m_addnum.IsEmpty()||dlg.m_addpsw.IsEmpty())
{
AfxMessageBox("号码或密码为空,不能修改!");
return;
}
m_pSet->Edit();
m_pSet->m_column1 = dlg.m_addnum;
m_pSet->m_column2 = dlg.m_addpsw;
m_pSet->Update();
m_pSet->Requery();
AfxMessageBox("已经修改"+dlg.m_addnum+"密码为"+dlg.m_addpsw);
UpdateData(false);
OnShowall();
}
}
能直接用sql不过是cdatabase::executesql(大概就这个名字吧,还像错了,你查查,自己电脑不在我身边在网吧搞的)
void COicqView::OnDel()
{
// TODO: Add your control notification handler code here
if(AfxMessageBox("真的要删除"+m_pSet->m_column1+"吗?",MB_OKCANCEL)==IDCANCEL)return;
if(m_pSet->IsEOF())
{
AfxMessageBox("没有号码可删除?");
return;
}
m_pSet->Delete();
if(m_pSet->IsEOF())
m_pSet->MoveLast();
else m_pSet->MoveNext();
m_pSet->Requery();
UpdateData(false);
AfxMessageBox("已经删除了该号码");
OnShowall();
}
void COicqView::OnAlldel()
{
// TODO: Add your control notification handler code here
if(AfxMessageBox("真的要删除全部号码吗?",MB_OKCANCEL)==IDCANCEL)return;
int i=0;
CString str;
if(m_pSet->IsEOF())
{
AfxMessageBox("没有号码可删除?");
return;
}
m_pSet->MoveFirst();
while(!m_pSet->IsEOF())
{
m_pSet->Delete();
m_pSet->MoveNext();
m_pSet->Requery();
UpdateData(false);
i++;
}
str.Format("已经删除了%d条号码",i);
AfxMessageBox(str);
OnShowall();
}
void COicqView::OnAdd()
{
// TODO: Add your control notification handler code here
CAddDialog dlg;
if(dlg.DoModal()==IDOK)
{
if(dlg.m_addnum.IsEmpty()||dlg.m_addpsw.IsEmpty())
{
AfxMessageBox("号码或密码为空,不能添加!");
return;
}
m_pSet->AddNew();
m_pSet->m_column1 = dlg.m_addnum;
m_pSet->m_column2 = dlg.m_addpsw;
m_pSet->Update();
m_pSet->Requery();
AfxMessageBox("已经添加"+dlg.m_addnum+"密码为"+dlg.m_addpsw);
UpdateData(false);
}
OnShowall();
}
void COicqView::OnShowall()
{
// TODO: Add your control notification handler code here
m_list.DeleteAllItems();
while(m_list.DeleteColumn(0));
m_pSet->Requery();
if(m_pSet->IsEOF())
{
AfxMessageBox("由于在数据库底或者数据库没有数据");
return;
}
m_pSet->MoveFirst();
m_list.InsertColumn(0,"号码",LVCFMT_LEFT,84);
m_list.InsertColumn(1,"密码",LVCFMT_LEFT,84);
int i=0;
while(!m_pSet->IsEOF())
{
int j=0;
j=m_list.InsertItem(i,m_pSet->m_column1);
m_list.SetItemText(j,1,m_pSet->m_column2);
i++;
m_pSet->MoveNext();
}
m_pSet->MoveFirst();
UpdateData(false);
}
void COicqView::OnXiugai()
{
// TODO: Add your control notification handler code here
CAddDialog dlg;
if(dlg.DoModal()==IDOK)
{
if(dlg.m_addnum.IsEmpty()||dlg.m_addpsw.IsEmpty())
{
AfxMessageBox("号码或密码为空,不能修改!");
return;
}
m_pSet->Edit();
m_pSet->m_column1 = dlg.m_addnum;
m_pSet->m_column2 = dlg.m_addpsw;
m_pSet->Update();
m_pSet->Requery();
AfxMessageBox("已经修改"+dlg.m_addnum+"密码为"+dlg.m_addpsw);
UpdateData(false);
OnShowall();
}
}
能直接用sql不过是cdatabase::executesql(大概就这个名字吧,还像错了,你查查,自己电脑不在我身边在网吧搞的)
#12
是这样的,我要做一个消息处理函数,比如点击"增加记录",就清空当前编辑框的信息,
然后手动对每个编辑框输入数据,再点击另一个按钮"确定",就将相应的数据添加到数据库
中的数据表中.请问:"增加记录"和"确定"这两个按钮的消息处理函数怎么写?
我是这样写的:
增加记录代码:m_name=_T("");
//先清空,有多少条都要写
UpdateData(FALSE);
"确定"的代码为:
UpdateData(TRUE);
m_pSet->AddNew();
m_pSet->Update();
现在又出现的新问题是按照m_name=_T("")这种方式清空没有成功,程序毫无反应.
我给数据库中各个字段定义的成员变量形如:m_name;
我给各个编辑框控件添加的变量为:形如m_pSet->m_name(注意,这样的变量是在下拉列表中
直接找到的,因为在我定义了数据库中各个字段的成员变量后,它就自动产生了),最后显示在列表中,各个编辑框控件对应的成员变量为形如->m_name,我就不明白对编辑框进行清空到底是使用哪个变量.m_name,m_pSet->m_name,->m_name这三种方式似乎都不行啊.
楼上的能不能帮我再解答一下呢?
然后手动对每个编辑框输入数据,再点击另一个按钮"确定",就将相应的数据添加到数据库
中的数据表中.请问:"增加记录"和"确定"这两个按钮的消息处理函数怎么写?
我是这样写的:
增加记录代码:m_name=_T("");
//先清空,有多少条都要写
UpdateData(FALSE);
"确定"的代码为:
UpdateData(TRUE);
m_pSet->AddNew();
m_pSet->Update();
现在又出现的新问题是按照m_name=_T("")这种方式清空没有成功,程序毫无反应.
我给数据库中各个字段定义的成员变量形如:m_name;
我给各个编辑框控件添加的变量为:形如m_pSet->m_name(注意,这样的变量是在下拉列表中
直接找到的,因为在我定义了数据库中各个字段的成员变量后,它就自动产生了),最后显示在列表中,各个编辑框控件对应的成员变量为形如->m_name,我就不明白对编辑框进行清空到底是使用哪个变量.m_name,m_pSet->m_name,->m_name这三种方式似乎都不行啊.
楼上的能不能帮我再解答一下呢?