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控制項要繁瑣些。