用ADO查询ACCESS数据库,结果显示在listCtrl

时间:2022-09-21 19:12:22
用ADO查询ACCESS数据库,结果显示在listCtrl~~~请高手帮帮忙,不盛感激~~~

9 个解决方案

#1


找个现成的数据库读写类就可以了。
读取数据后,看一下listctrl的使用方法,自己写。

#2


http://download.csdn.net/source/1070271
例子,自己下载得了!简单易学!

#3


部分代码如下:

CListCtrl *pList = (CListCtrl*)GetDlgItem(ID_List);
pList->InsertColumn(0, "ID", LVCFMT_LEFT, 100, -1);
pList->InsertColumn(1, "分类", LVCFMT_LEFT, 100, -1);
pList->InsertColumn(2, "金额", LVCFMT_LEFT, 100, -1);
pList->InsertColumn(3, "说明", LVCFMT_LEFT, 100, -1);
pList->InsertColumn(4, "日期", LVCFMT_LEFT, 100, -1);

void CDailyAccountDlg::OnQuery() 
{
bool flag = true;
CoInitialize(NULL);

_ConnectionPtr pCon(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));


try
{
pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dailyAccount.mdb", "", "", adConnectUnspecified);
try
{
pRst->Open("select * from daily", _variant_t((IDispatch*)pCon), adOpenDynamic, adLockUnspecified, adCmdText);
while(!pRst->adoEOF)
{
问题所在,不会赋值!
}
}
catch(_com_error e)
{
AfxMessageBox("数据查询失败!");
flag = false;
}
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
flag = false;
}
if(flag)
{
pRst->Close();
pCon->Close();
pRst.Release();
pCon.Release();
}
CoUninitialize();
}


现在的问题是取值,赋值~~~望高手帮忙

#4


CString strID,strfenlei,strjine,strshuoming,strdate;
_variant_t var;

var=pRst->GetCollect("ID");
if(var.vt!=VTNULL)
    strID=(LPCSTR)_bstr_t(var);

var=pRst->GetCollect("分类");
if(var.vt!=VTNULL)
    strfenlei=(LPCSTR)_bstr_t(var);

var=pRst->GetCollect("金额");
if(var.vt!=VTNULL)
    strjine=(LPCSTR)_bstr_t(var);

var=pRst->GetCollect("说明");
if(var.vt!=VTNULL)
    strshuoming=(LPCSTR)_bstr_t(var);

var=pRst->GetCollect("日期");
if(var.vt!=VTNULL)
    strdate=(LPCSTR)_bstr_t(var);

int i = pList->InsertItem(pList->GetItemCount(),strID);
pList->SetItemText(i,1,strfenlei);
pList->SetItemText(i,2,strjine);
pList->SetItemText(i,3,strshuoming);
pList->SetItemText(i,4,strdate);
pRst->MoveNext();


前提是"ID","分类","金额","说明","日期"是你数据表里的字段名,你看可以不?

#5


dhl23

非常感谢~问题解决~~~

#6


呃 上面代码有错误!
应该是:

if(var.vt!=VT_NULL)
{
}

#7


嗯,这个我知道,呵呵~~~

#8


看不到

#9


有用,谢谢啦

#1


找个现成的数据库读写类就可以了。
读取数据后,看一下listctrl的使用方法,自己写。

#2


http://download.csdn.net/source/1070271
例子,自己下载得了!简单易学!

#3


部分代码如下:

CListCtrl *pList = (CListCtrl*)GetDlgItem(ID_List);
pList->InsertColumn(0, "ID", LVCFMT_LEFT, 100, -1);
pList->InsertColumn(1, "分类", LVCFMT_LEFT, 100, -1);
pList->InsertColumn(2, "金额", LVCFMT_LEFT, 100, -1);
pList->InsertColumn(3, "说明", LVCFMT_LEFT, 100, -1);
pList->InsertColumn(4, "日期", LVCFMT_LEFT, 100, -1);

void CDailyAccountDlg::OnQuery() 
{
bool flag = true;
CoInitialize(NULL);

_ConnectionPtr pCon(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));


try
{
pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dailyAccount.mdb", "", "", adConnectUnspecified);
try
{
pRst->Open("select * from daily", _variant_t((IDispatch*)pCon), adOpenDynamic, adLockUnspecified, adCmdText);
while(!pRst->adoEOF)
{
问题所在,不会赋值!
}
}
catch(_com_error e)
{
AfxMessageBox("数据查询失败!");
flag = false;
}
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
flag = false;
}
if(flag)
{
pRst->Close();
pCon->Close();
pRst.Release();
pCon.Release();
}
CoUninitialize();
}


现在的问题是取值,赋值~~~望高手帮忙

#4


CString strID,strfenlei,strjine,strshuoming,strdate;
_variant_t var;

var=pRst->GetCollect("ID");
if(var.vt!=VTNULL)
    strID=(LPCSTR)_bstr_t(var);

var=pRst->GetCollect("分类");
if(var.vt!=VTNULL)
    strfenlei=(LPCSTR)_bstr_t(var);

var=pRst->GetCollect("金额");
if(var.vt!=VTNULL)
    strjine=(LPCSTR)_bstr_t(var);

var=pRst->GetCollect("说明");
if(var.vt!=VTNULL)
    strshuoming=(LPCSTR)_bstr_t(var);

var=pRst->GetCollect("日期");
if(var.vt!=VTNULL)
    strdate=(LPCSTR)_bstr_t(var);

int i = pList->InsertItem(pList->GetItemCount(),strID);
pList->SetItemText(i,1,strfenlei);
pList->SetItemText(i,2,strjine);
pList->SetItemText(i,3,strshuoming);
pList->SetItemText(i,4,strdate);
pRst->MoveNext();


前提是"ID","分类","金额","说明","日期"是你数据表里的字段名,你看可以不?

#5


dhl23

非常感谢~问题解决~~~

#6


呃 上面代码有错误!
应该是:

if(var.vt!=VT_NULL)
{
}

#7


嗯,这个我知道,呵呵~~~

#8


看不到

#9


有用,谢谢啦