国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于VB的氣田報表核查核算及數(shù)據(jù)整理

2021-03-07 12:36:37王博學(xué)王少奇張建忠張小鳳
電腦知識與技術(shù) 2021年36期

王博學(xué) 王少奇 張建忠 張小鳳

摘要:該文介紹了基于Visual Basic語言程序開發(fā),該程序從氣田工區(qū)數(shù)據(jù)核算、氣井單井?dāng)?shù)據(jù)核查、不同時期報表數(shù)據(jù)核算對比入手,實現(xiàn)問題輸出、相關(guān)數(shù)據(jù)整理。該程序高效核查核算數(shù)據(jù),有效減少異常數(shù)據(jù)、錯誤數(shù)據(jù)傳播帶來的危害,為后續(xù)氣田開發(fā)分析提供更高質(zhì)量的數(shù)據(jù)。

關(guān)鍵詞:Visual Basic編程;數(shù)據(jù)核算核查;氣田報表

中圖分類號:TP311? ? ? 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2021)36-0100-03

開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):

1 背景

油氣田開發(fā)生產(chǎn)過程中產(chǎn)生很多報表,各類報表數(shù)據(jù)需要檢查審核,由于數(shù)據(jù)量大,人工檢查審核耗時、煩瑣,甚至需要多人的合作才能完成。鑒于此,借助于計算機的強大數(shù)據(jù)處理功能,來處理重復(fù)煩瑣耗時的數(shù)據(jù)檢查審核、整理工作,具有相當(dāng)大的優(yōu)勢。為此基于Visual Basic(VB)語言編制、生成了針對本單位氣田采氣日報檢查、整理的應(yīng)用程序,實現(xiàn)數(shù)據(jù)對比、報告生成、數(shù)據(jù)簡單匯總整理的功能。采氣日報表樣表如圖1。

Visual Basic語言在程序編寫方面具有較為廣泛的應(yīng)用,其具有可視化集成開發(fā)環(huán)境、以事件驅(qū)動、用戶界面圖形化等特點,在設(shè)計實現(xiàn)中小型系統(tǒng)方面有著特有的優(yōu)勢[1-3]。RojasSola José Ignacio等人[4]將Visual Basic結(jié)合CATIA軟件實現(xiàn)產(chǎn)品設(shè)計制造,Arun Datta[5]將Visual Basic應(yīng)用在工藝工程設(shè)計中,陳麗秀[6]將其應(yīng)用在實驗數(shù)據(jù)處理中,Yong Wang等人[7]將VISUALBASIC與FORTRAN混合語言編程在水文氣象模型可視化技術(shù)中應(yīng)用。基于 Visual Basic(VB)發(fā)展而來的VBA,內(nèi)嵌于Office 辦公軟件,為辦公帶來了許多便利[8-9]。

2 程序功能需求

通過VB語言編寫程序,主要實現(xiàn)以下五個功能:

1) 工區(qū)產(chǎn)氣數(shù)據(jù)、產(chǎn)水?dāng)?shù)據(jù)、壓力數(shù)據(jù)等的核算及問題輸出;

2) 氣井單井產(chǎn)氣數(shù)據(jù)、產(chǎn)水?dāng)?shù)據(jù)、壓力數(shù)據(jù)、溫度數(shù)據(jù)等的核查及問題輸出,如,核查誤填數(shù)值、異常數(shù)值;

3) 氣井狀態(tài)核查及問題輸出;

4) 前日、當(dāng)日日報表中數(shù)據(jù)對比、核算及問題輸出;

5) 對復(fù)雜數(shù)據(jù)結(jié)構(gòu)進(jìn)行重構(gòu),實現(xiàn)數(shù)據(jù)整理。如,將圖1中的數(shù)據(jù)提取整理成圖2所示格式的數(shù)據(jù)。根據(jù)圖2中的數(shù)據(jù)便很容易在Excel中繪制單井生產(chǎn)動態(tài)曲線,如圖3。

需要說明的是,核查是指核對兩個數(shù)據(jù)是否一致,核對數(shù)據(jù)與正確數(shù)據(jù)的一致性。主要對溫度、壓力、產(chǎn)氣、產(chǎn)水、注醇數(shù)據(jù)進(jìn)行核查,實現(xiàn)對異常數(shù)據(jù)、非正常數(shù)值字符進(jìn)行篩選,并按要求輸出。

核算是指重新計算并判斷計算結(jié)果與報表給出的數(shù)值是否一致。主要對井區(qū)平均溫度、平均壓力數(shù)據(jù)及井區(qū)累產(chǎn)氣、累產(chǎn)水、累注醇數(shù)據(jù)進(jìn)行重新計算。計算結(jié)果與報表中給出的數(shù)值進(jìn)行對比,若兩個數(shù)值不一致則數(shù)據(jù)“異?!被颉安灰恢隆保匆筝敵?。

3 功能實現(xiàn)

3.1 設(shè)計思路

報表核查核算及數(shù)據(jù)整理主要包括:數(shù)據(jù)調(diào)入、數(shù)據(jù)核查核算、結(jié)果輸出、數(shù)據(jù)整理。首先實現(xiàn)數(shù)據(jù)調(diào)入,然后通過計算機分別對單井、井區(qū)相關(guān)數(shù)據(jù)進(jìn)行核查核算并輸出結(jié)果形成報告。最后,對相關(guān)數(shù)據(jù)進(jìn)行提取整理。設(shè)計思路圖見圖4。

3.2 程序介紹

本文介紹部分關(guān)鍵程序。點選調(diào)入數(shù)據(jù)文件程序、數(shù)據(jù)核算核查程序、檢查結(jié)果輸出程序、數(shù)據(jù)整理程序等四部分程序介紹如下:

1)點選調(diào)入數(shù)據(jù)文件程序

...

CommonDialog1.Filter = "所有文件(*.*)|*.*"

CommonDialog1.ShowOpen

strPath = CommonDialog1.FileName

...

通過通用對話框點選需要檢查的日報表,并加載到檢查程序,然后開展后續(xù)操作。

2)數(shù)據(jù)核算對比、核查(以產(chǎn)氣數(shù)據(jù)為例)程序

①氣井單井?dāng)?shù)據(jù)核查

...

If Cells(i, 6).Value = "" Then Else If Cells(i, 6).Value > 30 Then Print #1, Cells(i, 2).Value; Tab(40); "套壓大于30MPa";

If Cells(i, 10).Value = "" Then Else If Cells(i, 10).Value > 150000 Then Print #1, Cells(i, 2).Value; Tab(40); "日產(chǎn)氣大于15萬立方米";

...

其中,變量i為for語句中進(jìn)行循環(huán)計數(shù)的循環(huán)變量, Cells(i, 6)、 Cells(i, 10)分別為報表中給出的單井套壓、日產(chǎn)氣數(shù)據(jù),Cells(i, 2)為單井井號所在單元格。若套壓大于30MPa,輸出井號和壓力數(shù)值到輸出文件中;若日產(chǎn)氣大于15萬立方米,輸出井號和壓力數(shù)值到輸出文件中。

②工區(qū)產(chǎn)氣數(shù)據(jù)核算對比

...

If Abs(Cells(ii + 2, 5).Value - Qgr) < 0.01 Then Else Print #1, "日產(chǎn)氣不匹配"

If Abs(Cells(ii + 2, 6).Value - Qgy) < 0.01 Then Else Print #1, "月產(chǎn)氣不匹配"

If Abs(Cells(ii + 2, 7).Value - Qgn) < 0.01 Then Else Print #1, "年產(chǎn)氣不匹配"

...

其中,變量ii為for語句中進(jìn)行循環(huán)計數(shù)的循環(huán)變量,變量Qgr、Qgy、Qgn分別為程序核算的工區(qū)日產(chǎn)氣、月產(chǎn)氣、年產(chǎn)氣,Cells(ii + 2, 5)、Cells(ii + 2, 6)、(Cells(ii + 2, 7)分別為報表中給出的日產(chǎn)氣、月產(chǎn)氣、年產(chǎn)氣所在單元格。核算的數(shù)據(jù)與報表給出數(shù)據(jù)進(jìn)行對比,如果兩個數(shù)據(jù)超出誤差范圍,便在輸出報告中寫入"月產(chǎn)氣不匹配"。

③工區(qū)前日、當(dāng)日數(shù)據(jù)對比

...

Write #1, "工區(qū)月累產(chǎn)氣核查對比:當(dāng)日累產(chǎn)氣-前日累產(chǎn)氣-當(dāng)日產(chǎn)氣:" & Worksheets(M).Cells(ii + 2, 6).Value - Worksheets(M - 1).Cells(ii + 2, 6).Value - Worksheets(M).Cells(ii + 2, 5).Value

...

其中,Cells(ii + 2, 6)、Cells(ii + 2, 5)分別為報表中給出的工區(qū)月累產(chǎn)氣數(shù)據(jù)、工區(qū)日產(chǎn)氣數(shù)據(jù),M為按照日期排列的表單總數(shù)。當(dāng)日累產(chǎn)氣數(shù)據(jù)與前日累產(chǎn)氣數(shù)據(jù)對比,如果當(dāng)日累產(chǎn)氣數(shù)據(jù)與前日累產(chǎn)氣數(shù)據(jù)之差等于今日產(chǎn)氣數(shù)據(jù),則說明數(shù)據(jù)計算正確。

3)輸出報告程序

數(shù)據(jù)對比后,需要將對比結(jié)果按順序輸出形成報告。首先,通過程序Open "C:\RESULT.txt" For Append As #1在電腦C盤下的虛擬存儲文件夾建立txt文件。然后,通過Print函數(shù)或者Write函數(shù)將數(shù)據(jù)核算對比、核查程序運行結(jié)果寫入“RESULT.txt”文件,形成報告。

例如:

If Abs(Cells(ii + 2, 6).Value - Qgy) < 0.01 Then Else Print #1, "月產(chǎn)氣不匹配"

該語句將程序核算的月產(chǎn)氣量與報表給出的月產(chǎn)氣量進(jìn)行對比,如果兩個數(shù)據(jù)超出誤差范圍,便在輸出報告中寫入"月產(chǎn)氣不匹配"。

If Cells(i, 13).Value = "" Then Else If Cells(i, 13).Value > 50 Then Print #1, Cells(i, 2).Value; Tab(40); "日產(chǎn)水大于50立方米"

該語句將核查單井的日產(chǎn)水量,如果日產(chǎn)水量數(shù)據(jù)超出50立方米,便在輸出報告中寫入井號及"日產(chǎn)水大于50立方米"。

4)數(shù)據(jù)整理

通過將需要的數(shù)據(jù)從日報表中提取到新建表單,并按照一定格式、計量單位進(jìn)行排列、換算,實現(xiàn)數(shù)據(jù)整理,此過程應(yīng)用賦值運算符“=”。

3.3 可視界面制作

可視化操作界面有利于操作、人機互動。利用VB語言面向?qū)ο?、可視化的特點制作如下界面:

1)文件點選界面。通過文件選擇框點選文件,避免直接向程序段寫入文件名稱、路徑,如圖5。

界面制作過程中用到commondialog控件、command控件,其中,command控件,賦值為“點擊,選擇文件,并開始檢查”??丶荲isualBasic中預(yù)定義的對象,是由系統(tǒng)設(shè)計好提供給用戶使用的對象[10],方便編程使用。

2)信息輸出界面。通過MsgBox 提示輸出文件存儲路徑 “C:/用戶/.../AppData/Local/VirtualStore/RESULT”,方便查找輸出文件,如圖6。通過MsgBox在程序末尾彈出“檢查結(jié)束”,如圖7,提示檢查程序運行結(jié)束。

3.4 運行結(jié)果輸出

運行程序后生成的輸出結(jié)果示例如圖8:

運行結(jié)果給出了異常數(shù)值、錯誤數(shù)值及部分?jǐn)?shù)據(jù)的對比結(jié)果,為后續(xù)數(shù)據(jù)分析提供了更高質(zhì)量、更為可靠的數(shù)據(jù)。

4 結(jié)束語

本文介紹了基于VB編寫的程序在氣田生產(chǎn)數(shù)據(jù)檢查及數(shù)據(jù)整理的應(yīng)用。所編寫的程序能夠?qū)蟊頂?shù)據(jù)進(jìn)行核查、核算,有效提高報表審核效率,簡單明了地處理相關(guān)復(fù)雜煩瑣的工作。在實際應(yīng)用工作中可以根據(jù)需要擴充程序,使程序功能更加豐富,報表檢查更加細(xì)致、高效。

參考文獻(xiàn):

[1] 高春艷,李賀.Visual Basic 項目開發(fā)全程實錄[M].北京:清華大學(xué)出版社,2013.

[2] 海濱,關(guān)媛.Visual Basic 程序設(shè)計教程[M].南京:南京大學(xué)出版社,2014.

[3] 馬赫,馮思度,張紅偉.學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2019,15(6):61-62.

[4] Rojas-Sola J I,del Río-Cidoncha G,Ortíz-Marín R,et al.Design and development of sheet-metal elbows using programming with visual basic for applications in CATIA[J].Symmetry,2020,13(1):33.

[5] Datta A.Process engineering and design using visual basic[M].Boca Raton:CRC Press,2013.

[6] 陳立秀.基于Visual Basic的試驗數(shù)據(jù)處理[J].山東工業(yè)技術(shù),2017(13):17.

[7] Wang Y,Ding Y Y,Shi L.Application of visual basic and FORTRAN mixed-language programming to visualization technology for hydro-meteorological model[J].Applied Mechanics and Materials,2012,263/264/265/266:1352-1355.

[8] 李小遐.Excel VBA在辦公自動化中的應(yīng)用[J].電子測試,2014(22):105-106,95.

[9] 王淏,亢娟娜.Excel VBA在測評成績計算中的應(yīng)用[J].辦公自動化,2021,26(2):63-64,26.

[10] 劉炳文.Visual Basic 程序設(shè)計教程[M].4版.北京:清華大學(xué)出版社,2009:13.

【通聯(lián)編輯:謝媛媛】

辉南县| 洛浦县| 景洪市| 瓦房店市| 崇明县| 上虞市| 那坡县| 巴彦淖尔市| 济宁市| 巴林右旗| 牡丹江市| 千阳县| 东平县| 凤翔县| 山东| 仙游县| 黄平县| 云龙县| 都匀市| 永胜县| 新乐市| 策勒县| 平果县| 福贡县| 邮箱| 承德市| 同心县| 宜都市| 友谊县| 甘肃省| 宿松县| 凤山市| 来凤县| 彭水| 茶陵县| 毕节市| 邢台县| 永泰县| 长兴县| 隆林| 晋中市|