关于ado和CListctrl结合的有关问题,郁闷一天了
关于ado和CListctrl结合的问题,郁闷一天了~
发现总是有问题!
我尽量把我的情况下的详细点,,
如果只是 int kk; kk=0;
再CListctrl的 lvi.pzItem= "hello "; lvi.iItem=kk; kk++; SetItemText(kk..
发现一切正常
各列正常显示数据库里的数据
但若从 ACCESS数据库里读出 id列(主键,自动编号)
int kk; kk=0; kk=atoi(....)
再CListctrl的 lvi.pzItem= "hello " ; lvi.iItem=kk; SetItemText(kk ..
[ 我想用这个ID,在单机的时候GetItem,获得这个 iTtem
然后再工具这个iTtem 查询数据库 ]
发现显示N列 hello,其他列的数据没有显示出来,,
没报错!
希望大哥们救救我,我郁闷一天了!!
下面是部分代码,,乱,,,!
CString strid,strip,strname,strress,strtime;
int kk;
kk=0;
variant_t var;
LV_ITEM lvi;
lvi.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
while(!m_pRecordset-> adoEOF)
{
var=m_pRecordset-> GetCollect( "id ");
strid=(LPCSTR)_bstr_t(var); //id肯定是非空
//kk=atoi(strid);
var = m_pRecordset-> GetCollect( "ip ");
strip=(LPCSTR)_bstr_t(var); //IP肯定是非空的
var = m_pRecordset-> GetCollect( "sitename ");
if(var.vt != VT_NULL) strname=(LPCSTR)_bstr_t(var);
else strname= " ";
var = m_pRecordset-> GetCollect( "address ");
if(var.vt != VT_NULL) strress=(LPCSTR)_bstr_t(var);
else strress= " ";
var = m_pRecordset-> GetCollect( "addtime ");
if(var.vt != VT_NULL) strtime=(LPCSTR)_bstr_t(var);
else strtime= " ";
lvi.iImage = 0;
lvi.iItem=kk; //想设置该值与数据库里的id值一样
lvi.iSubItem=0;
lvi.pszText= "hello ";
m_listctrl.InsertItem(&lvi);
m_listctrl.SetItemText(kk,0,strip);
m_listctrl.SetItemText(kk,1,strname);
m_listctrl.SetItemText(kk,2,strress);
m_listctrl.SetItemText(kk,3,strtime);
if(kk> 3)
m_listctrl.SetItemText(kk,3, "kkkkk ");
kk++;
m_pRecordset-> MoveNext();
}
------解决方案--------------------
给你个例子
=====================================================================
CString Conn= "provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\TestDocuments\\Source\\Info\\CameraInfomation.mdb ";
myado.ConnecDataLibrary(Conn, " ", " ");
myado.OpenSheet( "select * from AlarmInfo ");
_variant_t var;
CString str_AlarmTime, str_CamNum, str_CamPosition;
CString str_StationTel, str_DisposalOrNot, str_DisposalRecord;
str_AlarmTime = str_CamNum = str_CamPosition = " ";
str_StationTel = str_DisposalOrNot = str_DisposalRecord = " ";
// query the related data and add it to the list control
try{
if( !myado.GetRecoPtr() -> BOF )
myado.GetRecoPtr() -> MoveFirst();
else{
AfxMessageBox( "NO data in database! ");
return;
}
int ii=-1;
// Read data from Access and add it to the list control
while( !myado.GetRecoPtr() -> adoEOF ){
LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvitem.state = 0;
lvitem.stateMask = 0;
char temp[800];
lvitem.iItem = ++ ii;
lvitem.iSubItem = 0;
lvitem.pszText = itoa(ii, temp, 32);
发现总是有问题!
我尽量把我的情况下的详细点,,
如果只是 int kk; kk=0;
再CListctrl的 lvi.pzItem= "hello "; lvi.iItem=kk; kk++; SetItemText(kk..
发现一切正常
各列正常显示数据库里的数据
但若从 ACCESS数据库里读出 id列(主键,自动编号)
int kk; kk=0; kk=atoi(....)
再CListctrl的 lvi.pzItem= "hello " ; lvi.iItem=kk; SetItemText(kk ..
[ 我想用这个ID,在单机的时候GetItem,获得这个 iTtem
然后再工具这个iTtem 查询数据库 ]
发现显示N列 hello,其他列的数据没有显示出来,,
没报错!
希望大哥们救救我,我郁闷一天了!!
下面是部分代码,,乱,,,!
CString strid,strip,strname,strress,strtime;
int kk;
kk=0;
variant_t var;
LV_ITEM lvi;
lvi.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
while(!m_pRecordset-> adoEOF)
{
var=m_pRecordset-> GetCollect( "id ");
strid=(LPCSTR)_bstr_t(var); //id肯定是非空
//kk=atoi(strid);
var = m_pRecordset-> GetCollect( "ip ");
strip=(LPCSTR)_bstr_t(var); //IP肯定是非空的
var = m_pRecordset-> GetCollect( "sitename ");
if(var.vt != VT_NULL) strname=(LPCSTR)_bstr_t(var);
else strname= " ";
var = m_pRecordset-> GetCollect( "address ");
if(var.vt != VT_NULL) strress=(LPCSTR)_bstr_t(var);
else strress= " ";
var = m_pRecordset-> GetCollect( "addtime ");
if(var.vt != VT_NULL) strtime=(LPCSTR)_bstr_t(var);
else strtime= " ";
lvi.iImage = 0;
lvi.iItem=kk; //想设置该值与数据库里的id值一样
lvi.iSubItem=0;
lvi.pszText= "hello ";
m_listctrl.InsertItem(&lvi);
m_listctrl.SetItemText(kk,0,strip);
m_listctrl.SetItemText(kk,1,strname);
m_listctrl.SetItemText(kk,2,strress);
m_listctrl.SetItemText(kk,3,strtime);
if(kk> 3)
m_listctrl.SetItemText(kk,3, "kkkkk ");
kk++;
m_pRecordset-> MoveNext();
}
------解决方案--------------------
给你个例子
=====================================================================
CString Conn= "provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\TestDocuments\\Source\\Info\\CameraInfomation.mdb ";
myado.ConnecDataLibrary(Conn, " ", " ");
myado.OpenSheet( "select * from AlarmInfo ");
_variant_t var;
CString str_AlarmTime, str_CamNum, str_CamPosition;
CString str_StationTel, str_DisposalOrNot, str_DisposalRecord;
str_AlarmTime = str_CamNum = str_CamPosition = " ";
str_StationTel = str_DisposalOrNot = str_DisposalRecord = " ";
// query the related data and add it to the list control
try{
if( !myado.GetRecoPtr() -> BOF )
myado.GetRecoPtr() -> MoveFirst();
else{
AfxMessageBox( "NO data in database! ");
return;
}
int ii=-1;
// Read data from Access and add it to the list control
while( !myado.GetRecoPtr() -> adoEOF ){
LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvitem.state = 0;
lvitem.stateMask = 0;
char temp[800];
lvitem.iItem = ++ ii;
lvitem.iSubItem = 0;
lvitem.pszText = itoa(ii, temp, 32);