求解一个问题!关于ODBC连接数据库的。
mfc吧
全部回复
仅看楼主
level 3
ODBC连接的数据库只能在CMyView类中调用吗?
如果我想在我自己创建的对话框中调用数据库中的内容,应当怎么实现?
2014年07月09日 01点07分 1
level 3
这是CMyView类的界面,可以连接到数据库了。
2014年07月09日 01点07分 2
level 3
这是点击增加按钮之后显示的模态对话框,
我想实现的是输入数据,点击确定,然后数据导入数据库中。
确定按钮的函数内容如下:
void DLALOG1::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
m_pSet->AddNew(); // 在表的末尾增加新记录
//m_pSet->SetFieldNull(&(m_pSet->m_column1), FALSE);// 设定m_name字段值不为空(NULL)
m_pSet->m_column1=m_a;
m_pSet->m_column2=m_b;
m_pSet->m_column3=m_c;
m_pSet->m_column4=m_d;
m_pSet->Update();// 将新记录存入数据库
m_pSet->MoveLast();
m_pSet->Requery();// 刷新记录集,这在快照集方式下是必须的
MessageBox("添加成功!");
//CDialog::OnOK();
}
2014年07月09日 01点07分 3
level 3
然后运行结果!:编译连接都通过 ,但是 ,奔溃了!
2014年07月09日 01点07分 4
level 3
求大神指教 不胜感激!
2014年07月09日 01点07分 5
level 9
1、把你的记录集指针定义成全局的.
2、请用try catch,就不会挂了都不知道自己咋挂的.
2014年07月09日 02点07分 6
记录集指针是自动创建在CMyview类中的,那我怎么重定义成全局?
2014年07月09日 02点07分
回复 有毒有韵味 :还有个问题,就是,在CMyView类中添加编辑框变量,使用数据库中对应变量的话,左侧工作区为什么不显示变量啊? 下楼上图
2014年07月09日 02点07分
level 3
2014年07月09日 02点07分 7
直接使用下拉框中数据库对应的变量名。左侧工作区不出现变量名。 要是用别的变量名可以出现,为什么?
2014年07月09日 02点07分
level 3
我在这个类中,把记录集指针变量设置为外部变量 还是不行。那要怎么改啊?
2014年07月09日 02点07分 8
level 9
to:记录集指针是自动创建在CMyview类中的,那我怎么重定义成全局?
如果这样的话不用全局也行,把你那段操作移到你view类调这个添加记录对话框的地方:
DLALOG1 dlg;
if(dlg.Domodal==IDOK) //对话框里OnOK() 的CDialog::OnOK()的注释记得去掉
{
try{
m_pSet->AddNew(); // 在表的末尾增加新记
m_pSet->m_column1=dlg.m_a;
m_pSet->m_column2=dlg.m_b;
m_pSet->m_column3=dlg.m_c;
m_pSet->m_column4=dlg.m_d;
...........................
........................
}
Catch(.....)
{
......
}
}
2014年07月09日 03点07分 9
大神就是牛!,这样一改确实可以了,这句应该忘了对括号吧,if(dlg.DoModal()==IDOK) 。 但是又出现新问题了,就是输一次点确定,闪了一下编辑框清空了没有添加。然后再输一次点确定才添加成功了。这是为什么?
2014年07月09日 09点07分
回复 有毒有韵味 :是不是他既要响应一次void DLALOG1::OnOK() 部分,然后再响应if(dlg.DoModal()==IDOK) 。所以会这样?那这样怎么办?删掉OnOK()函数 部分也不行。
2014年07月09日 09点07分
回复 有毒有韵味 :反复搞了多次,解决了,是因为有原来的创建模态对话框语句,和if(dlg.DoModal()==IDOK) ,中的dlg.DoModal()重复了。所以会出来两次。非常感谢!
2014年07月09日 11点07分
1