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另类| 精品亚洲国产成人AV| 在线观看免费黄色网址| 呦视频在线一区二区三区| 99re在线视频观看| 国产午夜精品一区二区三| 天天综合网色| 久久精品无码国产一区二区三区| 国产美女91呻吟求| 国内毛片视频| 91麻豆精品视频| 久久精品电影| 麻豆国产原创视频在线播放| 国产成人精品男人的天堂| 国产资源免费观看| 亚洲欧美成aⅴ人在线观看 | 成人免费午间影院在线观看| yjizz国产在线视频网| 国产99视频免费精品是看6| 久久久久亚洲av成人网人人软件| 四虎影视国产精品| 在线人成精品免费视频| 亚洲人成网7777777国产| 四虎永久在线| 国产人前露出系列视频| 青青草综合网| 黄色免费在线网址| 中文字幕亚洲精品2页| 色婷婷视频在线| 中文字幕1区2区| 欧美特黄一级大黄录像| 69国产精品视频免费| 香蕉网久久| 亚洲开心婷婷中文字幕| 亚洲精品人成网线在线 | 亚洲动漫h| 国产乱肥老妇精品视频| 精品无码视频在线观看| 欧美色综合网站| 老司机久久精品视频| 亚洲欧美日韩中文字幕在线一区| 亚洲日韩欧美在线观看| 国产91视频免费观看| 91色在线视频| 亚洲AV无码乱码在线观看裸奔| 波多野结衣视频一区二区| 天天综合网站| 欧美人与动牲交a欧美精品| 久久精品人妻中文系列| 国产色爱av资源综合区| 少妇精品网站| 亚洲男人的天堂视频| www.精品视频| 亚洲精品第一在线观看视频| 欧美日韩国产一级| 香蕉久久国产超碰青草| 精品国产成人国产在线| 国产精品19p| 国产人人射| 69视频国产| www.91中文字幕| 久久国产精品77777| 一级毛片免费观看不卡视频| 国产精品七七在线播放| 青青操视频在线| 久久亚洲国产视频| 亚洲a免费| 一本一本大道香蕉久在线播放| 亚洲网综合| 亚洲av日韩av制服丝袜| 亚洲av成人无码网站在线观看| 国产精品白浆无码流出在线看| 欧美自拍另类欧美综合图区| 欧美精品成人一区二区视频一| 午夜视频www| 伊人大杳蕉中文无码| 狠狠干综合| 国产日韩欧美在线视频免费观看| 亚洲精品无码不卡在线播放| 四虎国产永久在线观看| 国产91小视频在线观看| 欧美一区中文字幕|