亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > VBScript > 正文

vbs中使用 ADO 讀取所有數據均在一行上的文本文件的代碼

2020-07-26 12:02:03
字體:
來源:轉載
供稿:網友
使用 ADO 讀取所有數據均在一行上的文本文件問:
您好,腳本專家!我有一個固定寬度的文本文件,該文件包含名字(6 個字符)、姓氏(13 個字符)和部門(9 個字符),并且它們均在同一行上。我該如何使用 ADO 來讀取呢?
-- DW
答:
您好,DW。坦白地講,我們認為您不能使用 ADO(ActiveX 數據對象)讀取這樣的文件。ADO 是一種和文本文件進行交互的非常好的方法(有關詳細信息,請參閱文章有關文本文件的 ADO 更多知識(英文)),但是,確實,ADO 有些挑剔:它的每項設置都必須完全正確,否則就會拒絕工作。(不像腳本專家,即使所有事情都已準備就緒,他們還是會拒絕工作。)作為一種數據庫技術,ADO 需要一個“結構良好”(借用 XML 領域的一個術語)的數據庫;它無法直接利用您那樣的文件格式并從中產生數據庫。(在這種情況下,可以將您的巨行分成若干單個記錄。)
但是沒關系;畢竟,我們可以使用雖古老但優秀而可靠的 VBScript 來創建結構良好的數據庫。我們今天要做的就是向您展示如何快速而便捷地將您的巨大數據字符串分割成單個記錄。只需通過將這些單個記錄(即,文本文件中的單個記錄)回顯到屏幕上我們就可以達到目的。不過,您可以將這些記錄段寫到另一個文本文件然后使用 ADO 從其中讀取數據。我們只是幫您開個頭,剩下的就要靠您自己了。
首先,我們假定您已擁有一個類似于下面的文本文件,該文件的字段名稱和兩條記錄包含于同一行之上:
First Last         Dept     Ken   Meyer        Finance  Pilar Ackerman     HR
我們希望最后的結果同下面的顯示更為相似:
First Last         Dept     
Ken   Meyer        Finance  
Pilar Ackerman     HR
這可能嗎?當然可能:
復制代碼 代碼如下:

Const ForReading = 1 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("C:/Scripts/Test.txt", ForReading) 
strContents = objFile.ReadAll 
objFile.Close 
i = False 
Do Until i = True  
    intLength = Len(strContents) 
    If intLength < 28 Then 
        Exit Do 
    End If 
    strLines = strLines & Left(strContents, 28) & vbCrLf 
    strContents = Right(strContents, intLength - 28) 
Loop 
Wscript.Echo strLines 
首先定義名為 ForReading 的常量并將其值設置為 1;我們將使用它打開要讀入的文本文件。 
注意:您知道您的母親為何一直告訴您要帶上帽兜或者在穿過街道的時候朝兩邊看嗎?是的,我們腳本專家也一直告訴您在沒有指定要打開的文本文件的方式的情況下是無法將其打開的:是讀取、寫入還是添加。一次只能執行一項操作:無法同時以讀取和寫入方式打開文本文件。因此需要常量 ForReading。
噢,也戴上您的帽兜。外面很冷。
接下來我們創建 FileSystemObject 的實例并使用 OpenTextFile 方法打開文件 C:/Scripts/Test.txt。我們調用 ReadAll 方法以將此文件的全部內容讀取到變量 strContents 中,然后使用 Close 方法關閉文件。
之后的這行代碼很短并且有些古怪:
i = False
我們立即要做的就是建立 Do 循環,該循環用 28 個字符的增量來讀取文件的內容(即變量 strContents 的值)。為什么是 28 個字符?因為,在每條記錄中,我們使用 6 個字符保存名字、13 個字符保存姓氏和 9 個字符保存部門。因此:
6 + 13 + 9 = 28
為了保證循環始終進行直到整個文件讀取結束,我們將變量 i 設為 False,然后執行循環直到 i 等于 True:
Do Until i = True
我們發現,i 永遠不會等于 True,但是別著急:我們仍可以跳出此循環,稍后就會向您顯示這種神奇的功能。
在循環內部,我們首先使用 Len 函數來確定字符串 strContents 中字符的數量(對于我們的示例文件,再加上作為一條記錄的標題行,共 3 條記錄,每條 28 個字符,即總共 84 個字符)。然后是以下這一小段代碼:
If intLength < 28 Then
    Exit Do
End If
這里我們要做的就是檢查字符串長度是否少于 28 個字符。如果是,則我們一定已經到達了文件的末尾。因此,我們使用 Exit Do 命令退出循環。(這就是非常了不起的腳本專家設法逃離永無休止的 Do 循環魔掌的方式!)
若長度為 28 個字符或更多,則執行下面這行代碼:
strLines = strLines & Left(strContents, 28) & vbCrLf
此處我們創建一個新字符串 strLines,它將文本文件的內容分成幾條單個記錄,每條記錄由 28 個字符及一個回車換行符 (vbCrLf) 組成。為此,我們只需將 strLine 的當前內容同字符串中的前 28 個字符(Left 函數執行的正是此操作)及 VBScript 的常量 vbCrLf 連接起來即可。第一次循環之后 strLines 結果如下:
First Last         Dept
明白其工作原理了嗎? 
在第一行(也就是我們的第一條記錄)被安全地放到變量 strLines 中之后,接著我們就要將該信息從 strContents 中刪除。這就是下面的代碼所要執行的操作:
strContents = Right(strContents, intLength - 28)
這次我們要使用 Right 函數從字符串末端取出 x 個字符,也就是逆向執行。那么我們所說的 x 個字符到底是什么意思?要得到 x 的值,我們需取到 strContents 的長度 (84) 然后減去 28(單個記錄的長度)。得到的結果為 56 (84 - 28 = 56),因此我們從字符串的末端開始向回數 56 個字符。這表示第一次循環之后我們會得到下面這樣的結果:
Ken   Meyer        Finance  Pilar Ackerman     HR
注意:是的,有其他的方法可以達到同樣的目的,其中一些可能會節省一兩行代碼。不過,我們認為這種方法是最簡單的。
正如您所見,我們所做的全部工作就是刪除了第一條記錄?,F在準備返回循環,重復此過程。當然,這次 strContents 的長度為 56;因為我們剛剛去掉了 28 個字符。自然,這意味著我們要停止提取此數據并停止將其添加到變量 strLines 中: 
Ken   Meyer        Finance
我們繼續此過程直到刪除變量 strContents 中的所有字符。此時,我們只是回顯 strLines 的值:
First Last         Dept     
Ken   Meyer        Finance  
Pilar Ackerman     HR
如果不是一個結構良好的數據庫,那我們也不知道結果會是什么樣子。
如果您希望能夠將數據保存到一個文本文件并可以使用 ADO 讀取此數據,就按我們講過的去做;或者也可以只使用 VBScript 的字符串處理功能來將每行分成若干單個記錄。我們將決定權留給了您。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本精品一区二区三区在线| 亚洲精品一区av在线播放| 国产精品ⅴa在线观看h| 日韩精品视频在线观看网址| 欧美猛男性生活免费| 亚洲一区二区三区xxx视频| 国产午夜精品全部视频播放| 久久人人爽人人爽人人片亚洲| 亚洲在线视频观看| 久久久久久久久网站| 欧美亚洲视频在线观看| 国产精品99导航| 欧美性极品xxxx做受| 国产主播精品在线| 国产99视频精品免视看7| 国内精品模特av私拍在线观看| 日韩视频免费大全中文字幕| 日韩精品免费在线| 日韩av综合网| 欧美日韩亚洲系列| 欧美日韩亚洲国产一区| 欧美亚洲在线观看| 国产精品福利小视频| 欧美久久精品一级黑人c片| 国产精品国产三级国产专播精品人| 欧美性猛交视频| 综合136福利视频在线| 国产日韩欧美另类| 亚洲国产精品网站| 成人高h视频在线| 精品一区二区三区四区在线| 91夜夜揉人人捏人人添红杏| 性色av一区二区三区免费| 国产伦精品一区二区三区精品视频| 亚洲国产精品yw在线观看| 欧美韩国理论所午夜片917电影| 成人美女免费网站视频| 日韩视频在线免费观看| 色综合伊人色综合网| 亚洲欧美在线磁力| 久久亚洲电影天堂| 欧美日韩亚洲视频一区| 欧美超级免费视 在线| 亚洲精品免费网站| 日本久久91av| 日韩精品中文字幕在线观看| 91精品国产综合久久久久久蜜臀| 亚洲日本欧美日韩高观看| 亚洲已满18点击进入在线看片| 日韩电影大全免费观看2023年上| 国产精品9999| 91精品国产综合久久香蕉| 欧美激情精品久久久久久蜜臀| 亚洲精品99久久久久中文字幕| 国产精品久久久久不卡| 国产精品6699| 一本色道久久88亚洲综合88| 韩曰欧美视频免费观看| 黑人巨大精品欧美一区二区三区| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲高清福利视频| 日韩欧美亚洲成人| 久久精品免费电影| 久久精品国产欧美激情| 亚洲精品少妇网址| 欧美午夜精品久久久久久人妖| 国产成人精品在线视频| 日韩高清av在线| 精品一区二区三区电影| 国产精品jizz在线观看麻豆| 日韩在线视频导航| 国产精品视频一| 日韩男女性生活视频| 日韩av电影中文字幕| 欧美日韩国产黄| 日韩精品中文在线观看| 国产成人精品综合久久久| 久久精品在线播放| 欧美成人精品在线播放| 国产视频久久久久| 久久久久久久国产| 久久久久久香蕉网| 久久久久久国产精品久久| 精品国产欧美成人夜夜嗨| 久久免费福利视频| 日韩中文在线视频| 欧美激情在线观看视频| 亚洲白拍色综合图区| 色老头一区二区三区| 日韩女优人人人人射在线视频| 国产精品视频中文字幕91| 亚洲一区二区久久久| 精品国产鲁一鲁一区二区张丽| 国内精品久久久久久中文字幕| 中文字幕亚洲欧美一区二区三区| 91精品国产综合久久香蕉的用户体验| 国产欧美日韩专区发布| 国产精品国产三级国产aⅴ9色| 欧美亚洲伦理www| 成人免费观看网址| 久久不射热爱视频精品| 在线看福利67194| 久久精品99久久久香蕉| 久久久久久久一区二区| 色中色综合影院手机版在线观看| 国产精品com| 亚洲激情久久久| 国产69精品久久久久9| 久久免费少妇高潮久久精品99| 亚洲自拍小视频| 欧美激情视频网站| 久久6免费高清热精品| 欧美成人免费va影院高清| 国产亚洲人成网站在线观看| 国产精品亚洲欧美导航| 国产精品美女www| 国产精品海角社区在线观看| 91成人精品网站| 国产视频精品久久久| 亚洲人午夜色婷婷| 国产精品久久久亚洲| 国产精品男人的天堂| 成人免费在线视频网站| 在线观看日韩视频| 欧美激情按摩在线| 中文字幕欧美日韩va免费视频| 成人精品一区二区三区| 成人免费视频xnxx.com| 日韩欧美一区二区在线| 久久久久日韩精品久久久男男| 亚洲xxxx18| 色爱av美腿丝袜综合粉嫩av| 精品国产乱码久久久久久天美| 蜜臀久久99精品久久久久久宅男| 欧美在线视频一区二区| 久久精品国产亚洲精品2020| 亚洲精品中文字幕女同| 成人精品视频久久久久| 欧美香蕉大胸在线视频观看| 亚洲精品成a人在线观看| 亚洲欧美激情在线视频| 日本一区二区在线免费播放| 午夜精品久久久久久久白皮肤| 亚洲人午夜色婷婷| 亚洲美女精品久久| 91久久久久久国产精品| 中文字幕精品一区久久久久| 亚洲美女av电影| 国产精品成人va在线观看| 国产大片精品免费永久看nba| 日韩欧美在线视频免费观看| 亚洲黄色av女优在线观看| 国产精品欧美一区二区| 欧美日韩在线免费| 成人黄色在线观看| 亚洲第一精品福利| 日韩av日韩在线观看| 国产丝袜一区二区三区免费视频| 亚洲精品久久久一区二区三区| 国产精品福利小视频| 91av在线不卡| 精品美女国产在线| 成人www视频在线观看| 国产精品青草久久久久福利99|