999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

將Access數據庫中圖文信息導出到Word文檔的方法

2009-04-29 00:00:00車光宏
電腦知識與技術 2009年33期

摘要:該文介紹了將Access數據庫中的圖文混編內容導出到Word文檔的方法,并給出了用Visual Basic 6.0實現的程序實例。

關鍵詞:Access Database;圖像;導出;Word Document

中圖分類號:TP317文獻標識碼:A文章編號:1009-3044(2009)33-9121-02

Exporting the Method of Graphic Information on the Access Database to Word Document

CHE Guang-hong

(School of Information Engineering, Anhui University of Finance Economics, Hefei 233041, China)

Abstract: Introduced a method of the contents of the graphic mixed on Access database exported to Word documents,and gives Example program using Visual Basic 6.0.

Key words: Access Database; graphic; export; word document

1 問題的提出

最近,在工作中遇到了這樣一個問題:需要將Access數據庫的一些表中的內容導出到Word文檔,但這些表中有備注型字段,其中存放著圖文混編的信息。

麻煩的是簡體中文版OfficeXP和Office2003中的Access都沒有提供直接將這種類型字段的數據按原格式導出到Word(或RTF格式)文檔的功能(更高版本的Office有無此種功能?)。使用Access的導出功能將表導出為RTF文件時,所有備注型字段的內容均呈現為“亂碼”。例如,圖1所示的就是某表導出到RTF格式文件的情況,其中前三列為文本型字段的內容,是正確的;而第四列是備注型字段的內容,為“亂碼”。

為了解決這個問題,在網上搜索了好幾天,但始終沒有找到現成的方法。無奈之下只好自己動手了。還好,經過苦苦摸索,終于找到了解決問題的方法。該方法雖非完美,但確實能夠解決上述問題。所以還是將其寫出來,供有上述需求但還沒有找到更好的解決方法的讀者參考。

2 解決方法

為了找到解決問題的途徑,我們先來揭開這些“亂碼”的面紗。使用過Visual Basic編寫數據庫應用程序的人都知道,存放于Access數據庫表中備注字段中的圖文混編的內容可以正確地顯示于RichTextBox控件中,而RichTextBox控件的內容是可以保存為RTF格式的文件的。所以,圖1中那些看似“亂碼”的內容其實一點也不亂,它們是相應字段內容在RTF格式文件中的編碼。例如,圖1右邊單元格的完整內容如下:

{\\rtf1\\ansi\\ansicpg936\\deff0{\\fonttbl{\\f0\\fnil\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}}

\\viewkind4\\uc1\\pard\\lang2052\\f0\\fs18

\\par\\'ce\\'aa\\'bd\\'e2\\'be\\'f6\\'c4\\'b3\\'b8\\'f6\\'ca\\'b5\\'bc\\'ca\\'ce\\'ca\\'cc\\'e2\\'b6\\'f8\\'b1\\'e0\\'c5\\'c5\\'b5\\'c4\\'d6\\'b8\\'c1\\'ee\\'d0\\'f2\\'c1\\'d0\\'b3\\'c6\\'d6\\'ae\\'ce\\'aa()\\'a1\\'a3

\\par A.\\'d6\\'b8\\'c1\\'ee

\\par B.\\'b9\\'fd\\'b3\\'cc

\\par C.\\'b3\\'cc\\'d0\\'f2

\\par D.\\'ba\\'af\\'ca\\'fd

\\par }

如果將上面內容存放到一個文本文件中,然后將文本文件的擴展名改為.RTF,再用Word打開時,我們就會看到其本來面目,原來是一道單項選擇題:

明白了這個道理,也就有了解決問題基本思路:設法將Access數據庫表(含有備注字段)中的所有記錄的內容按原順序放入一個RichTextBox控件中,然后將RichTextBox控件中的內容寫入一個RTF文件,最后用Word打開該RTF文件,將其另存為Word文檔即可。

將表中所有記錄的內容按原順序放入一個RichTextBox控件中的處理過程如下(假設rsTm為記錄集,rtfT為RichTextBox控件):

rtfT.TextRTF = \"\"

Do While Not rsTm.EOF

rtfT.SelRTF = rsTm.Fields(0).Value '第一字段值

rtfT.SelRTF = \" \" '字段值之間加以空格

rtfT.SelRTF = rsTm.Fields(1).Value '第二字段值

rtfT.SelRTF = \" \" '字段值之間加以空格

' ......

rtfT.SelRTF = rsTm.Fields(n-1).Value '第n字段值

rtfT.SelRTF = vbCrLf '每個記錄后換一行

rsTm.MoveNext

Loop

3 程序實現

假設有一個名為Test.mdb的Access數據庫,其中有一個含有4個字段(含有備注型字段)的表t1,現在我們用VB 6.0編寫一個成程序,來將表t1中的內容導出到一個名為Test.rtf的RTF格式文件中。實現方法如下:

程序界面如圖2所示。

只需一個RichTextBox控件(名稱屬性設置為rtfT)和一個命令按鈕控件。

需要編寫下列代碼:

1)在窗體的“通用-聲明”部分定義用于連接數據庫的變量:

Dim connTk As New ADODB.Connection

Dim rsTm As New ADODB.Recordset

2)在窗體的Load事件中連接數據庫:

Private Sub Form_Load()

Dim strSQL As String

strSQL = \"Provider=MSDASQL.1;Extended Properties=DBQ=\" _

App.Path \"\est.MDB;DefaultDir=\" App.Path _

\";Driver={Microsoft Access Driver (*.mdb)}\"

connTk.ConnectionString = strSQL

connTk.Open strSQL, \"\", \"\"

End Sub

3)在窗體的Unload事件中取消數據庫的連接:

Private Sub Form_Unload(Cancel As Integer)

If rsTm.State = adStateOpen Then rsTm.Close

Set rsTm = Nothing

connTk.Close

Set connTk = Nothing

End Sub

4)在命令按鈕的Click事件中完成導出功能:

Private Sub Command1_Click()

Dim strSQL As String

' 將表t1的內容提取到記錄集rsTm

strSQL = \"select * from t1\"

If rsTm.State = adStateOpen Then rsTm.Close

rsTm.CursorLocation = adUseClient

rsTm.Open strSQL, connTk, adOpenDynamic, adLockOptimistic

DoEvents

' 將記錄集rsTm的全部記錄放到RichTextBox控件rtfT中

' --------------------------------

rtfT.TextRTF = \"\"

Do While Not rsTm.EOF

rtfT.SelRTF = rsTm.Fields(0).Value 'ID字段值

rtfT.SelRTF = \" \" '字段值之間加以空格

rtfT.SelRTF = rsTm.Fields(1).Value 'th字段值

rtfT.SelRTF = \" \" '字段值之間加以空格

rtfT.SelRTF = rsTm.Fields(2).Value 'da字段值

rtfT.SelRTF = \" \" '字段值之間加以空格

rtfT.SelRTF = rsTm.Fields(3).Value 'tm字段值(備注型)

rtfT.SelRTF = vbCrLf '每個記錄后換一行

rsTm.MoveNext

Loop

' 將rtfT中的內容寫入到名為test.rtf的RTF文件

rtfT.SaveFile App.Path \"\est.rtf\"

' --------------------------------

End Sub

4 結束語

本方法是先將表中的全部記錄都拼接到一起放在一個RichTextBox控件中,然后才輸出到文件的,因此當表中記錄太多時,可能會需要運行較長時間,令人不安。為了解決這個問題,可以將程序進行如下優化:

將RichTextBox控件rtfT的Visible屬性設置為False,不讓其顯示,這樣速度可以提高一些。

參考文獻:

[1] Petroutsos E,Hough K.Visual Basic 6 高級開發指南[M].邱仲潘,譯.北京:電子工業出版社,1999.

[2] 東名,吳名月.Access 2002數據庫管理務實[M].北京:人民郵電出版社,2002.

主站蜘蛛池模板: 理论片一区| 国产美女在线免费观看| 欧美日韩va| 国产91特黄特色A级毛片| 国产香蕉在线| a级毛片免费看| 五月天丁香婷婷综合久久| 午夜精品久久久久久久99热下载 | 中文字幕久久波多野结衣| 国产欧美日韩免费| 日韩高清欧美| 99精品欧美一区| 丰满人妻久久中文字幕| 人妻夜夜爽天天爽| 精品综合久久久久久97超人| 国产日韩AV高潮在线| av午夜福利一片免费看| 精品国产www| 国产乱子伦视频三区| 国产亚洲精久久久久久无码AV | 色欲国产一区二区日韩欧美| 国产精品99久久久久久董美香| 欧美天堂久久| 制服丝袜无码每日更新| 在线五月婷婷| 成人在线不卡| 亚洲av日韩av制服丝袜| 日韩精品专区免费无码aⅴ| 久久久久国产精品嫩草影院| 午夜福利在线观看入口| 无码内射在线| 色悠久久久久久久综合网伊人| 中文字幕永久在线看| 婷婷六月综合| 91美女视频在线| 88av在线| 亚洲中文字幕av无码区| 91精品亚洲| 国产精品lululu在线观看| 国产成人8x视频一区二区| 激情综合网激情综合| 久草视频中文| 91网红精品在线观看| 国产在线日本| 国产精品成人不卡在线观看| 日本精品影院| 丰满人妻久久中文字幕| 免费女人18毛片a级毛片视频| 夜精品a一区二区三区| 欧美另类视频一区二区三区| 视频一区视频二区中文精品| 欧美日韩一区二区三区四区在线观看| AⅤ色综合久久天堂AV色综合 | 亚洲第一精品福利| 狂欢视频在线观看不卡| 欧美翘臀一区二区三区| 精品国产免费观看一区| 在线色国产| 亚洲天堂视频网站| 欧美视频免费一区二区三区| 国产簧片免费在线播放| 亚洲 欧美 日韩综合一区| 国产精品久久久久鬼色| 久久精品无码一区二区日韩免费| 91精品网站| 免费不卡视频| 欧美精品H在线播放| 精品久久综合1区2区3区激情| 国产精品亚洲精品爽爽| 国产h视频在线观看视频| 久久精品无码国产一区二区三区| 欧美在线三级| 久久人搡人人玩人妻精品| 中文字幕丝袜一区二区| 国产成人综合亚洲欧美在| 国产精品第| 国产久草视频| 亚洲bt欧美bt精品| 欧美不卡二区| 在线免费亚洲无码视频| 伊人成人在线视频| a毛片在线|