设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1041|回复: 0
打印 上一主题 下一主题

[Access本身] 如何將文字檔轉入 Access 資料庫?(三)[转帖]

[复制链接]
跳转到指定楼层
1#
发表于 2003-12-22 03:22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


主題:如何將文字檔轉入 Access 資料庫?(三)
來源:Spencer Yang
版本:VB6

--------------------------------------------------------------------------------


程度:初級。

參考資料:王國榮 編著《Visual Basic 6.0 實戰講座》第八章〈VB的檔案操作系統〉。

1.前言

在【個個擊破】單元中的問題 273、274 分別介紹有「分隔符號的文字檔轉入資料庫」及「有分隔符號的文字檔轉入資料庫」;上述二種方式,若文字檔之有中文字時,往往會發生轉檔錯誤。因此本主題是對「固定長度的文字檔,但文字檔之中的有困擾程式設計師的中文字」提出解決方案。

2.文字檔的整理

在網路公布的文字檔,為了便於閱讀起見,都會適當予以整理成報表型態。但是將報表轉成文字檔時,往往要反向操作,去除多餘部分,加上部份欄位。因此,作者拿一個典型、且與實務有關文字檔,實驗對象為台灣證券交易所股份有限公司每月中旬公告的『新增及刪除部分上市、上櫃證券及未上市、未上櫃公開發行證券國際證券辨識號碼 (ISIN CODE)』。文字檔的整理步驟為:

※至該網站下載資料;(其報表節錄如下)

                本國上市證券、上櫃證券
                國際證券辨識號碼新增一覽表
                89/4/1 -- 89/4/30
國內證券編碼及名稱      國際證券辨識號碼(ISIN Code)     上市(櫃)日      備註
上市股票及權利證書
2308U   達電丁          TW0002308U01                    89/04/07        新上市
2340T   光磊丙          TW0002340T04                    89/04/17        新上市
2310T   旭麗丙          TW0002310T00                    89/04/15        新上市
2343V   精業戊          TW0002343V07                    89/04/08        新上市
2346V   源興戊          TW0002346V04                    89/04/17        新上市
2329U   華泰丁          TW0002329U06                    89/04/15        新上市
2406    國碩科技        TW0002406006                    89/04/29        新上市
※使用【漢書】或者【PE3】等舊文書軟體刪除多餘的表頭、表尾及文字敘述,只留下資料本身;在實務裡 PE3還是有其方便性,尤其針對資料對齊部分,是其他複雜軟體做不到的。

※增加是否新增刪除(="A" OR "D");是否存在(="Y" OR "N");類別。刪除備註欄。

※利用游標檢查其各欄位置是否符合轉檔要求。整理後格式如下:

AY102308U   達電丁      TW0002308U0189/04/07
AY102340T   光磊丙      TW0002340T0489/04/17
AY102310T   旭麗丙      TW0002310T0089/04/15
AY102343V   精業戊      TW0002343V0789/04/08
AY102346V   源興戊      TW0002346V0489/04/17
AY102329U   華泰丁      TW0002329U0689/04/15
AY102406    國碩科技    TW000240600689/04/29
3.文字檔轉檔

由於涉及資料有新增資料及刪除舊有資料-比如下市、下櫃、期限己至等因素,為了資料安全性,採用先存檔至暫存表,然後利用程式依據第一欄的新增(="A")或刪除(="D")條件,再新增至正式資料表或更新資料表。有關暫存表轉入正式資料表工作有其複雜性,在此不予深入說明。

下載範例程式碼
http://www.vbguide.com.tw/howto/300/data/impdb3.zip
4.. 重要程式碼說明

4.1 處理中文部分函數,是由網友 Kevin 提供。

'=============================================================
' 目        的: 轉入資料
' 參考資料: Asc在非雙位元組字元集系統下,其傳回範圍為 0 – 255。
'                   若在雙位元組字元集系統下,則為 -32768 - 32767。
' 日       期 : 2000/05/10
' 來       源 : kevinltb@hotmail.com
'=============================================================
Public Function GetWord(ByVal strData As String, _
           ByRef intStart As Integer, ByVal intLen As Integer) As String

    Dim intLoop As Integer
    Dim strTemp As String

    intLoop = 0
    Do While intLoop <= intLen - 1
        strTemp = Mid(strData, intStart + intLoop, 1)
        
        If Asc(strTemp) < 0 Then
            intLen = intLen - 1    ' 如果字元是中文
        End If
        GetWord = GetWord + strTemp
        intLoop = intLoop + 1
    Loop
    intStart = intStart + intLoop
End Function
4.2 轉檔程式碼

與【個個擊破】單元中的問題 273、274 有所不同之處,使用到 TextStream、GetWord 函數及加入轉檔失敗時,回復原狀功能。

Private Sub cmdImport_Click()
    Dim blnNeedRollback As Boolean
    Dim fso As New FileSystemObject
    Dim intPointer As Integer
    Dim intLoop As Integer
    Dim objConn As ADODB.Connection
    Dim objRec As ADODB.Recordset
    Dim strField(1 To 7) As String
    Dim strInputLine As String
    Dim txtf As TextS
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-6 22:03 , Processed in 0.099261 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表