日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

VBA連接access數(shù)據(jù)庫開發(fā)軟件(vba 連接access數(shù)據(jù)庫)

VBA連接access數(shù)據(jù)庫開發(fā)小軟件

雖然VBA(包括VB)已不再流行,但是在某些場合還是比較方便的,尤其對非編程專業(yè)人員。靈活使用VBA,可以很十分方便的處理excel,access數(shù)據(jù),提高工作效率,避免出現(xiàn)錯誤。個人認為VBA的最大的優(yōu)點就是嵌套在office中,無需創(chuàng)建額外的編程環(huán)境,另外語法簡單,窗體的構(gòu)建也很容易上手。

在辦公場所,往往因為保密的考慮,辦公電腦只通過內(nèi)部局域網(wǎng)互聯(lián),而不與外部互聯(lián)網(wǎng)通訊。對于小型團隊(十幾到幾十人)而言,通過excel access的方式管理一些信息,相當方便,快捷又經(jīng)濟。只要有了想法(比如科室問題跟蹤系統(tǒng)),一天兩天就可以做出來一個小系統(tǒng),可以極大提高工作效率,還能避免找IT人員開發(fā)專業(yè)的軟件。

下面簡單舉例,用excel VBA窗體創(chuàng)建前臺,用access數(shù)據(jù)庫管理后臺數(shù)據(jù)的方式,創(chuàng)建一個簡單的小系統(tǒng)。把access數(shù)據(jù)庫設置為共享,在局域網(wǎng)內(nèi),其他員工均可以通過excel VBA窗體前臺訪問,查詢數(shù)據(jù)庫和更新數(shù)據(jù)。

比如對四線制熱電阻校驗信息的管理,對于四線制的熱電阻的校驗,需要檢查ABCD四根線兩兩之間的電阻值,也需要測量對地的絕緣值,依此判斷該熱電阻的特性是否下降。然后統(tǒng)計同類型的歷史數(shù)據(jù),就可以判斷該類型設備的使用壽命,據(jù)此制定或優(yōu)化更換策略。

前面的文章已經(jīng)說了如何創(chuàng)建窗體,本文重點講VBA如何與access連接,動態(tài)管理數(shù)據(jù)。主要的界面如下:

錄入檢驗信息窗體

VBA連接access數(shù)據(jù)庫開發(fā)軟件(vba 連接access數(shù)據(jù)庫)

錄入檢驗數(shù)據(jù)窗體

VBA連接access數(shù)據(jù)庫開發(fā)軟件(vba 連接access數(shù)據(jù)庫)

listview顯示檢驗數(shù)據(jù)

VBA連接access數(shù)據(jù)庫開發(fā)軟件(vba 連接access數(shù)據(jù)庫)

雙擊listview中的數(shù)據(jù),顯示單個熱電阻的檢驗數(shù)據(jù)。

VBA連接access數(shù)據(jù)庫開發(fā)軟件(vba 連接access數(shù)據(jù)庫)

VBA與access連接的方法-查詢:

‘get_info函數(shù)用于連接access數(shù)據(jù)庫并查詢,通過參數(shù)傳遞sql查詢語句,通過參數(shù)rst返回查詢結(jié)果。

Function get_info(ByVal sql As String, ByVal rst As ADODB.Recordset)

Dim cnn As New ADODB.Connection

'stpath = ThisWorkbook.Path & "mt.accdb" ‘數(shù)據(jù)庫mt.accdb放在本地電腦

stpath = " 192.168.1.1mt.accdb" ‘數(shù)據(jù)庫mt.accdb放在共享地址

cnn.Open "provider=microsoft.ace.oledb.12.0;data source=" & stpath & ""

rst.Open sql, cnn, adOpenStatic, adLockOptimistic

If rst.RecordCount < 1 Then

MsgBox "no information for your search"

Exit Function

End If

End Function

‘雙擊listview數(shù)據(jù),根據(jù)主鍵查詢access數(shù)據(jù)庫,并查詢結(jié)果顯示到窗體UserForm9。

Private Sub UserForm_Initialize()

Dim rst As New ADODB.Recordset ‘創(chuàng)建新的查詢結(jié)果集

sql = "select * from mt where id like'%" & UserForm1.mt_number & "%'" ‘根據(jù)listview的數(shù)據(jù)主鍵UserForm1.mt_number,動態(tài)創(chuàng)建sql語句。這里需要注意sql語句的結(jié)構(gòu),比較容易出錯。

Call get_info(sql, rst) ‘調(diào)用函數(shù)get_info,用sql語句查詢,并把結(jié)果反饋到rst中。

‘下面把查詢結(jié)果顯示到窗體中。

UserForm9.ecs.Caption = rst.Fields(1).Value

UserForm9.calibrator.Caption = rst.Fields(2).Value

UserForm9.cali_date.Caption = rst.Fields(3).Value

UserForm9.package_number.Caption = rst.Fields(4).Value

UserForm9.ab.Text = rst.Fields(5).Value

UserForm9.ac.Text = rst.Fields(6).Value

UserForm9.ad.Text = rst.Fields(7).Value

UserForm9.bc.Value = rst.Fields(8).Value

UserForm9.bd.Value = rst.Fields(9).Value

UserForm9.cd.Value = rst.Fields(10).Value

UserForm9.isolation.Value = rst.Fields(11).Value

'TextBox1.MultiLine = True

ComboBox1.AddItem "正常>100兆歐"

ComboBox1.AddItem "降級觀察>10兆歐"

ComboBox1.AddItem "降級>1兆歐,轉(zhuǎn)大修處理"

ComboBox1.AddItem "失效<1兆歐,立即處理"

End Sub

VBA與access連接的方法-更新:

‘a(chǎn)dd_info函數(shù)用于更新access數(shù)據(jù)庫,更新的語句通過參數(shù)sql傳遞。

Sub add_info(sql As String)

Dim cnn As New ADODB.Connection

'stpath = ThisWorkbook.Path & "mt.accdb" ‘數(shù)據(jù)庫mt.accdb放在本地電腦

stpath = " 192.168.1.1mt.accdb" ‘數(shù)據(jù)庫mt.accdb放在共享地址

cnn.Open "provider=microsoft.ace.oledb.12.0;data source=" & stpath & ""

cnn.Execute (sql)

cnn.Close

Set cnn = Nothing

End Sub

Private Sub CommandButton1_Click()

If ComboBox1.Value = "" Then

MsgBox "處理結(jié)果不能為空,請重新選擇"

Exit Sub

End If

‘更新access的sql語法如下,需要注意動態(tài)ComboBox1.Value的處理,這里也容易出錯。

sql = "update mt set result='" & ComboBox1.Value & "' where id =" UserForm1.ng_number

If MsgBox("請確認輸入信息正確。", vbYesNo) = 6 Then

add_info (sql)

End If

Unload UserForm9

End Sub

對于非專業(yè)人員,花上一兩周時間學習一下VBA,并靈活運用到工作中,可以事半功倍,對VBA ACCESS的組合方式,簡單實用。本文也是拋磚引玉,希望大家一起交流和學習,一起進步。

如有需要本軟件代碼的,可以私信聯(lián)系。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部
台湾省| 宁乡县| 长沙市| 大竹县| 清丰县| 七台河市| 宜兴市| 城固县| 商丘市| 五常市| 凌源市| 澄江县| 财经| 舟山市| 吐鲁番市| 当阳市| 霸州市| 商水县| 乐山市| 洛扎县| 南岸区| 武平县| 县级市| 洛浦县| 东阿县| 丽江市| 林州市| 榆社县| 金乡县| 霸州市| 高安市| 鹤庆县| 东乡| 二连浩特市| 新昌县| 兴业县| 施甸县| 丽水市| 兴宁市| 北川| 延吉市|