mfc数据库控件
⑴ 我想做一个mfc的数据库(odbc) 如何根据用户在登录对话框的选择 在主窗口显示不同的控件
如果控件不多的话,可以根据需要显示或隐臧控件的方法来实现。
⑵ MFC中数据库的数据无法插入到list control控件中
list
control大数据量调用setitemtext确实比较耗时,一般多于2000条就能明细感觉慢,你可以使用list
control的虚表方式,可以秒杀。
⑶ 怎样将数据库中数据表显示在MFC中的列表控件上,并对其进行删除,修改
列表显示只是一个表象,二者没有设定好的关联。实际的删除操作应该在数据库中进行,也就是执行删除工作后,你得把列表数据刷新一下,重新显示。
具体的函数实现,如果需要我再贴上来。
void CMCTTView::ListItem()//刷新列表
{
int i = 0;
if(!m_pSet->IsOpen())
AfxMessageBox("数据源未打开");
m_Item.SetExtendedStyle(m_Item.GetExtendedStyle()|LVS_EX_FULLROWSELECT);
m_Item.DeleteAllItems();
m_Item.SetRedraw(FALSE);
if (!m_pSet->GetRecordCount() == 0)
{
m_pSet->MoveFirst();
}
while(!m_pSet->IsEOF())
{
m_Item.InsertItem(i,"");
m_Item.SetItemText(i,0,m_pSet->m_column1);
m_Item.SetItemText(i,1,m_pSet->m_column2);
m_Item.SetItemText(i,2,m_pSet->m_column3);
m_Item.SetItemText(i,3,m_pSet->m_column4);
i+=1;
m_pSet->MoveNext();
}
m_Item.SetRedraw(TRUE);
}
void CMCTTView::OnItemDel() //在view类中删除条目
{
// TODO: Add your control notification handler code here
int listIndex; //当前选中项的索引
//首先得到点击的位置
POSITION pos=m_Item.GetFirstSelectedItemPosition(); //0 based m_item是指代列表控件
if(pos==NULL)
return;
//得索引,通过POSITION转化
listIndex=m_Item.GetNextSelectedItem(pos)+1; //1 based,so 1 added
m_pSet->SetAbsolutePosition(listIndex);
if ( MessageBox( _T( "你确定要删除当前单词信息吗?" ),
_T( "删除确认?" ), MB_OKCANCEL | MB_ICONQUESTION ) == IDOK )
{
m_pSet->Delete();
MessageBox( _T( "该单词信息已经被成功删除!" ),
_T( "删除成功!" ), MB_OK | MB_ICONASTERISK );
OnNext();
}
m_pSet->Requery();
//if(!m_pSet->GetRecordCount() == 0)
ListItem();
}
void CMCTTView::OnNext()
{
m_pSet->MoveNext();
if ( m_pSet->IsEOF() )
m_pSet->MoveFirst();
}
int CMCTTDoc::AddToAcc()//在doc类中添加数据
{
m_mCTTSet.AddNew();
CString str1,str2,str3,str4;
str1.Format("%s",m_Index);
str2.Format("%f",m_UseHs);
str3.Format("%f",m_UseHj);
switch (m_HJStyle)
{
case 0:
str4 = CString("类型1");
break;
case 1:
str4 = CString("类型2");
break;
case 2:
str4 = CString("类型3");
break;
}
m_mCTTSet.m_column1 = str1; //Index
m_mCTTSet.m_column2 = str2; //the use of hansi
m_mCTTSet.m_column3 = str3; //the use of hanji
m_mCTTSet.m_column4 = str4; //the style of hanjie
m_mCTTSet.Update();
m_mCTTSet.Requery();
MessageBeep(MB_OK);
CMainFrame* pframe = (CMainFrame*)AfxGetMainWnd();
CMCTTView* pInterfaceView = (CMCTTView*)pframe->GetActiveView();
pInterfaceView->ListItem();
return 0;
}
⑷ MFC中用Combo Box 控件连接数据库,想在下拉菜单中显示相应内容,但是失败了
要写UpdateData(FALSE); 把数据传给控件
⑸ 求大神指点怎么在mfc中通过按钮控件查找数据库中某个数据并在list control控件中显示 求代码及解释
分两个部分:
1.
连接数据库读出表
中数据
:可以用ADO中的_RecordsetPtr
2.
对读出的数据进行判断,符合的用
CListCtrl
::
InsertItem
等函数插入.然后
Updatedata
(FALSE)
然后,你现在就可以去查找ado知识(只连接读取的话不难)和CListCtrl类了
再具体。。。就太那个什么了。
⑹ MFC中CListCtrl列表控件连接数据库不显示数据的问题
列表控件,你在设置文本之前,一定要先InsertItem(行号,_T("")),然后再SetItemText,不然是不会显示出来的。
祝你成功。
⑺ 如何在mfc中把sql sever数据库查询结果放在列表控件中
你要是想用微软现成的控件,可以在MSDN中查找下这个ADODC的ActiveX控件,网络一下也可以查到好多的。控件是要方便些,但是缺乏灵活性;
我们现在一般都用的ADO类库自己写相关的代码,在对话框上增加一个控件CListCtrl然后用它的成员函数把查询结果一条一条插入进去CListCtrl::InsertItem();CListCtrl::SetItemText();查询就用ado接口来完成,灵活性要大些,但是肯定比ActiveX控件要繁琐些。
⑻ MFC中列表视图控件怎么调用显示数据库中的内容啊啊!
你要是想用微软现成的控件,可以在msdn中查找下这个adodc的activex控件,网络一下也可以查到好多的。控件是要方便些,但是缺乏灵活性;
我们现在一般都用的ado类库自己写相关的代码,在对话框上增加一个控件clistctrl然后用它的成员函数把查询结果一条一条插入进去clistctrl::insertitem();clistctrl::setitemtext();查询就用ado接口来完成,灵活性要大些,但是肯定比activex控件要繁琐些。