青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

MyMSDN

MyMSDN記錄開發(fā)新知道

CListCtrl(List Control)綁定ODBC數據庫的方法。(附加:CRecordset::Open()與CRecordset::OpenEx()區(qū)別之真實體驗~)

今天懷著虞城的心來探索打印CListCtrl的方法,可惜忙到現在被老掉牙的數據加載給絆倒。但是從中卻學到了不少新東西,以前沒有遇到過的。現在就寫出來和大家分享。
ODBC數據源與CListCtrl的連接已經算是老生常談的事情了。
1、先建立數據庫(這里以一個PrintTest為數據源名來處理,該數據庫包含一張表info,里面有四個字段,ID,NAME,GROUP,AGE,只是測試用因此隨便列出幾個字段,其中ID為數字類型,其余為文本,采用Access數據庫來建立。方法就是添加一張表,然后分別對表中填充一些數據,這里就不再講述!)
2、ODBC數據源與程序的連接
???a.在stdafx.h文件的尾部添加#include "afxdb.h"
???b.針對于整個工程的全局函數CDatabase db;
???c.在APP文件的初始化進程中添加打開數據庫的語句
?????????

????CWinApp::InitInstance();???? // 此句為系統(tǒng)自動生成的;

????
if ?( ! db.IsOpen())
????????db.Open(
" PrintTest; " );
????
else
????????AfxMessageBox(
" 數據庫連接失敗! " );

????AfxEnableControlContainer();????
// 此句為系統(tǒng)自動生成的;

至此,與數據庫的連接基本上完成了,也正是因為這個db.Open("PrintTest;");才有了這篇文章。
3、向記錄集(CRecordset)填充數據,在這里我們必須要談到(數據庫和記錄集對象之間的)記錄字段交換 (RFX)。(大家可以在MSDN中查閱相關信息。)現在只將步驟做一個簡述:
???a.在“類視圖”中添加類,然后選擇“MFC ODBC 使用者”;
???b.在向導中,數據源按鈕后選擇“機器數據源”選擇我們設置的ODBC數據源,這里為PrintTest;確定;
???c.在彈出的對話框中選擇info表,確定;
???d.修改類名,文件名(如果有必要的話),這里改為CInfoRS,InfoRS.h,InfoRS.cpp
???e.注意下面的選擇是“動態(tài)集”,確定。(警告關閉)
這時候你可以在類向導中看到添加的新類,CInfoRS
4、在初始化對話框的時候進行數據的讀入。
值得注意的是:我們剛才定義的是全局的變量,但是定義的語句是在APP文件中寫入的,因此在Dlg文件中調用的時候我們仍然需要去聲明一下它是全局變量,也就是對Dlg來說,它是在外部已經定義過的變量。因此在Dlg.cpp的開頭我們補充extern CDatabase db;
在BOOL CPrintListCtrlDlg::OnInitDialog()中添加

???? // ?TODO:?在此添加額外的初始化代碼 // 注意找到該函數中的這句話,在其后添加以下代碼
????m_cList.SetExtendedStyle(LVS_EX_GRIDLINES);?????? // 設置ListCtrl的風格
???? int ?nWidth = 110 ;
????m_cList.InsertColumn(
0 , " 會員編號 " ,LVCFMT_LEFT,nWidth * 2 / 3 );
????m_cList.InsertColumn(
1 , " 會員姓名 " ,LVCFMT_LEFT,nWidth);
????m_cList.InsertColumn(
2 , " 會員組織 " ,LVCFMT_LEFT,nWidth * 3 / 2 );
????m_cList.InsertColumn(
3 , " 年齡 " ,LVCFMT_LEFT,nWidth / 2 );
????CInfoRS?rs(
& db);

????UpdateList(rs);


在這個應用程序中同樣要注意到,因為我們需要的是一張類似Access表的表格,而不是類似我的電腦的圖標形式的風格,因此我們需要在添加的ListControl的時候,將其屬性中的View設置為Report。

?UpdateList(rs);是我們自己添加的一個函數,再此我再介紹一下使用類向導添加函數的方法。
在類視圖中,右鍵,添加->添加函數,然后添加相關參數,比如返回值類型,參數類型等,記得添加參數的時候按“添加”將其添加到參數列表中。
下面列出UpdateList的代碼:

void ?CPrintListCtrlDlg::UpdateList(CInfoRS & ?rs)
{
????
int ?i = 0 ;
????CString?strID;
????rs.Open();
????m_cList.DeleteAllItems();
????
while ( ! rs.IsEOF())
????
{
????????m_cList.InsertItem(i,
"" );
????????strID.Format(
" %d " ,rs.m_ID);
????????m_cList.SetItemText(i,
0 ,strID);
????????m_cList.SetItemText(i,
1 ,rs.m_NAME?);
????????m_cList.SetItemText(i,
2 ,rs.m_GROUP);
????????m_cList.SetItemText(i,
3 ,rs.m_AGE);
????????rs.MoveNext();
????????i
++ ;
????}

????rs.Close();
}
至此這個程序基本上就編寫完成了,但是使用Ctrl+F5調試的時候出現了錯誤。錯誤具體就不再描述,只告訴解決的方法。
1、一個是CInfoRS類中一句#error Security Issue: The connection string may contain a password
解決方法:注釋掉
2、類型不匹配:
??m_cList.SetItemText(i,1,rs.m_NAME );
??m_cList.SetItemText(i,2,rs.m_GROUP);
??m_cList.SetItemText(i,3,rs.m_AGE);
將提示rs.m_NAME,rs.m_GROUP,rs.m_AGE不能從“CStringW”轉換為“LPCTSTR”
解決方法:在類視圖中定位到CInfoRS,在其變量(藍色方塊后),隨便點一個進入。按以下方法修改:
//將以下代碼:
????long????m_ID;
????CStringW????m_NAME;
????CStringW????m_GROUP;
????CStringW????m_AGE;
//修改為:
????long????m_ID;
????CString????m_NAME;
????CString????m_GROUP;
????CString????m_AGE;
//即將這里的CStringW替換為CString


//其實可以注意到之前的一大段話:以下字符串類型(如果存在)反映數據庫字段(ANSI 數據類型的 CStringA 和 Unicode數據類型的 CStringW)的實際數據類型。這是為防止 ODBC 驅動程序執(zhí)行可能不必要的轉換。如果希望,可以將這些成員更改為CString 類型,ODBC 驅動程序將執(zhí)行所有必要的轉換。(注意: 必須使用 3.5 版或更高版本的 ODBC 驅動程序以同時支持 Unicode 和這些轉換)。
至此,編譯通過。
但是,隨后彈出錯誤:ODBC數據源不支持動態(tài)集
修正這個問題的方法有二:
一、在剛才添加的時候,將動態(tài)集(默認)改為快照,在這里,將不會出現錯誤。
二、令人慶幸的是我曾經做過一個例子,里面確實是使用動態(tài)集,但并沒有出現這個錯誤,于是我找到了另一個程序,再次調試通過。于是就很是郁悶。于是用斷點調試,最終確定問題是發(fā)生在rs.Open();的位置。
于是查找MSDN發(fā)現(For CRecordset, the default value is CRecordset::snapshot.翻譯:對于CRecordset默認值類對象,默認值是 CRecordset::snapshot,也就是快照模式),而我們所用的是動態(tài)集的模式。這里可以將rs.Open();改為rs.Open(CRecordset::forwardOnly);再次編譯就可以通過了。
另外可以將最初的db.Open("PrintTest;");改為db.OpenEx("DSN=PrintTest;");就可以解決問題了。這其中的奧妙就不是很清楚,只能當作經驗來和大家分享一下。也希望有知道的人能夠留言告訴我。謝謝先~!


以下將本示例的代碼以及數據庫打包供大家學習下載!
http://m.shnenglu.com/Files/mymsdn/PrintListCtrl.rar

附錄:
1、編譯調試:Visual Studio.NET 2003中文版
2、在主對話框需要添加一個ListControl的控件。(下載的代碼可能還多包括一個打印控件,但該控件的功能并未實現,只是一個預留的測試功能。大家自行練習的時候可以不添加該按鈕。)

posted on 2006-09-18 02:07 volnet 閱讀(3754) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


特殊功能
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            好吊日精品视频| 亚洲精品久久久久| 极品日韩av| 国产一区二区三区四区在线观看| 欧美三区在线观看| 国产精品久久久久91| 国产精品户外野外| 国产精品亚发布| 国产一级精品aaaaa看| 伊人久久av导航| 亚洲福利视频二区| 一个色综合av| 新67194成人永久网站| 欧美一区二区三区日韩| 久久久久国产精品一区二区| 免费欧美网站| 亚洲免费av电影| 午夜精品久久久久久久99黑人| 久久国产加勒比精品无码| 免费亚洲电影| 国产精品欧美日韩| 亚洲国产精品久久91精品| 中日韩美女免费视频网站在线观看| 亚洲免费小视频| 欧美黄免费看| 亚洲一区图片| 欧美成年人视频网站欧美| 欧美激情精品久久久久久| 亚洲精品久久视频| 欧美在线精品免播放器视频| 欧美成人精品h版在线观看| 国产精品欧美经典| 亚洲精品一区二区三区av| 亚洲一区二区在线观看视频| 久久不射中文字幕| 99精品99| 免费亚洲一区| 国自产拍偷拍福利精品免费一| 亚洲伦理在线| 美女啪啪无遮挡免费久久网站| 夜夜嗨av色综合久久久综合网| 久久精视频免费在线久久完整在线看| 欧美日韩一区二区三区| 亚洲动漫精品| 久久久久久高潮国产精品视| 一区二区三区国产盗摄| 欧美国产91| 国产亚洲人成网站在线观看| 亚洲欧美激情在线视频| 亚洲激情精品| 免费日韩av| 亚洲福利视频网站| 乱码第一页成人| 亚洲自拍偷拍一区| 国产精品国产自产拍高清av王其| 日韩午夜激情电影| 亚洲国产成人av| 免费观看欧美在线视频的网站| 韩国成人精品a∨在线观看| 午夜影院日韩| 亚洲欧美日韩国产精品| 国产精品网站在线播放| 先锋影音国产精品| 亚洲一区二区三区在线播放| 欧美体内she精视频| 亚洲素人一区二区| 一本色道久久88综合日韩精品 | 久久激情网站| 中文网丁香综合网| 国产精品户外野外| 欧美在线免费观看| 欧美综合第一页| 在线观看视频日韩| 欧美成人免费全部观看天天性色| 久久精品人人| 亚洲国产欧美日韩| 亚洲区在线播放| 欧美三区美女| 久久久久在线| 欧美精品xxxxbbbb| 亚洲一级二级在线| 亚洲欧美日韩电影| 狠狠色狠色综合曰曰| 亚洲二区在线观看| 99精品久久免费看蜜臀剧情介绍| 欧美日韩一区二区精品| 国产日本欧美一区二区| 久久av一区二区三区亚洲| 欧美在线啊v| 91久久综合亚洲鲁鲁五月天| 99精品国产热久久91蜜凸| 国产视频久久久久| 欧美黄在线观看| 欧美日韩免费精品| 麻豆91精品91久久久的内涵| 欧美成人精品在线播放| 亚洲欧美国产制服动漫| 久久视频在线视频| 亚洲自拍偷拍网址| 久久一区欧美| 欧美亚洲综合久久| 免费久久99精品国产| 亚洲网站在线| 久久精品91久久久久久再现| 日韩一二三在线视频播| 欧美伊人久久久久久午夜久久久久 | 99视频一区| 国内精品久久久久久久影视蜜臀| 亚洲第一精品夜夜躁人人爽| 国产精品视频xxx| 亚洲第一在线综合在线| 国产女优一区| 日韩一区二区福利| 亚洲国产成人一区| 欧美影片第一页| 西瓜成人精品人成网站| 欧美日韩另类一区| 老牛嫩草一区二区三区日本| 欧美性久久久| 亚洲人www| 亚洲国产经典视频| 久久精品亚洲热| 欧美亚洲一级片| 国产精品久久久久一区二区三区共 | 久久国产婷婷国产香蕉| 午夜精品视频一区| 欧美日韩精品在线播放| 欧美激情一区二区在线| 黄色亚洲精品| 久久精品女人| 久久久久久久综合狠狠综合| 国产精品裸体一区二区三区| 亚洲日本aⅴ片在线观看香蕉| 伊人一区二区三区久久精品| 午夜精品一区二区三区在线| 性欧美暴力猛交69hd| 欧美理论大片| 亚洲精品日韩在线| 日韩一区二区久久| 欧美激情精品久久久久久黑人| 美脚丝袜一区二区三区在线观看 | 亚洲性图久久| 亚洲一区二区综合| 欧美视频一区二区三区| 亚洲精品资源| 一区二区高清在线观看| 欧美日韩在线播放一区| a4yy欧美一区二区三区| 亚洲欧美欧美一区二区三区| 国产精品青草久久| 性欧美超级视频| 美女露胸一区二区三区| 亚洲乱码国产乱码精品精天堂| 欧美岛国激情| 99re视频这里只有精品| 亚洲一区二区在线播放| 国产欧美91| 久久精品夜色噜噜亚洲a∨| 免费看黄裸体一级大秀欧美| 亚洲精品免费一二三区| 欧美午夜不卡影院在线观看完整版免费| 99国产精品久久久| 欧美在线免费观看| 91久久在线| 国产精品高清一区二区三区| 性久久久久久久久久久久| 欧美www视频| 亚洲一区成人| 激情视频一区| 欧美日韩一区二区在线| 欧美亚洲色图校园春色| 亚洲高清不卡| 欧美一区国产在线| 亚洲国产老妈| 国产精品日本一区二区 | 日韩视频在线免费| 欧美在线观看视频在线 | 亚洲精品男同| 国产精品亚洲不卡a| 久久五月激情| 亚洲一区二区精品| 亚洲第一页中文字幕| 欧美一站二站| 一区二区三区国产精华| 尹人成人综合网| 国产精品伦一区| 欧美精品入口| 久久尤物视频| 亚洲欧美中文日韩v在线观看| 欧美成人激情视频免费观看| 亚洲综合好骚| 亚洲人午夜精品免费| 国产亚洲激情视频在线| 欧美日韩亚洲网| 免费亚洲电影在线观看| 欧美中文在线观看| 中日韩高清电影网| 亚洲国产裸拍裸体视频在线观看乱了中文 | 噜噜噜在线观看免费视频日韩| 亚洲性线免费观看视频成熟|