数据库是版本是access2000
用下面的函数添加listview项目,,只能添加数据库中最后一条记录,怎么解决
BOOL AddItem(HWND hWndUser,_RecordsetPtr pRecordset)
{
try
{
if(!pRecordset->FirstOfFile)
pRecordset->MoveFirst();
else
{
MessageBox(NULL,TEXT("表内数据为空"),TEXT("!"),MB_OK);
return FALSE;
}
while(!pRecordset->EndOfFile)
{
_variant_t var;
var.vt=VT_I4;
var.intVal=0;
int iSubItem; _bstr_t bstrVar=(_bstr_t)pRecordset->GetCollect(var);
char *pText=bstrVar;
LVITEM lvi;
ListView_DeleteAllItems(hWndUser);
ZeroMemory(&lvi,sizeof(lvi));
lvi.mask=LVIF_TEXT;
lvi.iItem=ListView_GetItemCount(hWndUser);;
lvi.pszText=pText;
lvi.cchTextMax=sizeof(pText);
lvi.iSubItem=0;
if(ListView_InsertItem(hWndUser, &lvi) == -1)
return FALSE;
for(iSubItem=0;iSubItem <pRecordset->Fields->Count;iSubItem++)
{
var.intVal=iSubItem;
lvi.iSubItem=iSubItem;
_bstr_t bstrVar=(_bstr_t)pRecordset->GetCollect(var);
char *pText=bstrVar;
lvi.pszText=pText;
if(ListView_SetItem(hWndUser,(LPARAM)&lvi)==-1)
return FALSE;
}
pRecordset->MoveNext(); }
}
catch(_com_error e)
{
MessageBox(NULL,TEXT("ERROR"),TEXT("ERROR"),MB_OK);
return FALSE;
}
return TRUE;
}
用下面的函数添加listview项目,,只能添加数据库中最后一条记录,怎么解决
BOOL AddItem(HWND hWndUser,_RecordsetPtr pRecordset)
{
try
{
if(!pRecordset->FirstOfFile)
pRecordset->MoveFirst();
else
{
MessageBox(NULL,TEXT("表内数据为空"),TEXT("!"),MB_OK);
return FALSE;
}
while(!pRecordset->EndOfFile)
{
_variant_t var;
var.vt=VT_I4;
var.intVal=0;
int iSubItem; _bstr_t bstrVar=(_bstr_t)pRecordset->GetCollect(var);
char *pText=bstrVar;
LVITEM lvi;
ListView_DeleteAllItems(hWndUser);
ZeroMemory(&lvi,sizeof(lvi));
lvi.mask=LVIF_TEXT;
lvi.iItem=ListView_GetItemCount(hWndUser);;
lvi.pszText=pText;
lvi.cchTextMax=sizeof(pText);
lvi.iSubItem=0;
if(ListView_InsertItem(hWndUser, &lvi) == -1)
return FALSE;
for(iSubItem=0;iSubItem <pRecordset->Fields->Count;iSubItem++)
{
var.intVal=iSubItem;
lvi.iSubItem=iSubItem;
_bstr_t bstrVar=(_bstr_t)pRecordset->GetCollect(var);
char *pText=bstrVar;
lvi.pszText=pText;
if(ListView_SetItem(hWndUser,(LPARAM)&lvi)==-1)
return FALSE;
}
pRecordset->MoveNext(); }
}
catch(_com_error e)
{
MessageBox(NULL,TEXT("ERROR"),TEXT("ERROR"),MB_OK);
return FALSE;
}
return TRUE;
}
解决方案 »
- 用过程 CoInitializeSecurity()不能返回正确得不到访问权限,请问该如解决!多谢,很急啊!
- 如何将欧洲文字ISO 8859-1显示出来
- WTL和ATL的定义又重复的造成的二义性,如何解决?
- 有2个对话框,一个是模态,一个是非模态的,关于他们的焦点控制问题求教?
- MessageBox(...)的问题,简单的很,大家快来拿分!!!
- 如何看别人的代码
- 请问假如我用VC写COM,前台用Delphi,请问关于数据交换的一些问题。
- 关于CToolTipCtrl使用范围的一个小问题
- ClistCtrl中列表头拖动的时候有残影现象如何解决
- 关与如何获得对话框句柄的问题,很菜,但很急
- dll调试工程问题
- CLR这是什么样的编程啊
这里iItem始终不会变?
iItem可以理解为ListView的行吧。。每次添加前让它加1貌似才行。。
你可能是所有记录都添加到一行了,所以只看到最后一条记录。。
只是猜测。。
从字面理解,这个函数是把ListBox控件的所有内容都清空,如果是这样的话,你在while循环里面不断的调用该函数,当然只看到最后一条记录了。