首页
/
每日頭條
/
職場
/
編輯數據表的操作
編輯數據表的操作
更新时间:2025-07-03 13:08:10

大家好,我們今天繼續講解VBA數據庫解決方案,今日講解的是第80講:工作表數據與UserForm窗口的交互過程中:如何對顯示的記錄進行編輯和保存。在前幾講中,我們實現了将工作表的數據傳給UserForm窗口,實現的開始記錄、下一條記錄最後記錄的顯示,我們今日繼續講解如何實現編輯和保存記錄。前幾講是查找與顯示,查找的目的是為了編輯。

思路:①在UserForm窗口上,設置顯示編輯和保存按鈕,用于指令的下達。

②在彈出UserForm窗口後,EXCEL文件要隐藏。

③要考慮到按鈕之間的作用,此按鈕要在開始按鈕按過之後才可以響應動作。同時窗口上可以顯示的按鈕還有"顯示下一條記錄"和"顯示最後記錄"按鈕

下面我們首先實現UserForm窗體:在上一講的基礎上我這次增加的是"編輯"和"保存"按鈕:

編輯數據表的操作(工作表數據與UserForm窗口的交互)1

下面看代碼的實現:

1 從EXCEL窗口進入人機交互窗口:

Sub mynzRecords_80() '将工作表數據變成記錄集,并實現編輯和保存

Application.Visible = False

UserForm1.Show

End Sub

代碼解釋:上述代碼完成從EXCEL界面到人機交互UserForm窗體,這時的Application.Caller是5.

2 窗體加載時設置相關的屬性代碼:If Right(Application.Caller, 1) = 5 Then '顯示編輯記錄

UserForm1.CommandButton1.Enabled = False '下一條記錄

UserForm1.CommandButton4.Enabled = False '最後一條記錄

UserForm1.CommandButton5.Enabled = False '編輯記錄

UserForm1.CommandButton7.Enabled = False '查找記錄

UserForm1.CommandButton8.Enabled = False '删除記錄

UserForm1.CommandButton6.Enabled = False '保存記錄

UserForm1.CommandButton9.Enabled = False '錄入記錄

UserForm1.TextBox1.Enabled = False

UserForm1.TextBox2.Enabled = False

UserForm1.TextBox3.Enabled = False

End If

代碼解釋:上述代碼設置了各個按鈕的必要屬性,大家要注意,由于涉及到保存記錄,這裡的TextBox 的Enabled屬性設置為False.

3 "編輯"按鈕響應代碼:

Private Sub CommandButton5_Click() '編輯

MsgBox ("請修改記錄!")

UserForm1.TextBox2.Enabled = True

UserForm1.TextBox3.Enabled = True

UserForm1.CommandButton6.Enabled = True '保存記錄

End Sub

代碼解釋: 點擊"編輯"按鈕後彈出對話框,要求和用戶确認,得到認可後把TextBox2.Enabled,TextBox3.Enabled, CommandButton6.Enabled的屬性修改為True,這時就用戶可以編輯了與保存了。

4 "保存"按鈕響應代碼:

Private Sub CommandButton6_Click() '保存

If UserForm1.TextBox1.Value = "" Or UserForm1.TextBox2.Value = "" Or UserForm1.TextBox3.Value = "" Then MsgBox "信息有空值,請确認!": Exit Sub

If MsgBox("是否要保存記錄?", vbOKCancel, "提示") = vbCancel Then Exit Sub

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Dim myData() As Variant

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.FullName

cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=0';" _

& "data source=" & strPath

strSQL = "SELECT * FROM [數據7$]"

rsADO.Open strSQL, cnADO, 1, 3

If UserForm1.TextBox1.Enabled = False Then '編輯的保存

If rsADO.RecordCount > 0 Then rsADO.MoveFirst

Do While Not rsADO.EOF

If Trim(rsADO.Fields(0)) = UserForm1.TextBox1.Value Then

rsADO.Fields(1) = UserForm1.TextBox2.Value

rsADO.Fields(2) = UserForm1.TextBox3.Value

rsADO.Update

GoTo 100

End If

rsADO.MoveNext

Loop

100:

UserForm1.TextBox1.Enabled = False

UserForm1.TextBox2.Enabled = False

UserForm1.TextBox3.Enabled = False

UserForm1.CommandButton6.Enabled = False

MsgBox ("保存OK!")

Else '錄入的保存

If rsADO.RecordCount > 0 Then

Do While Not rsADO.EOF

If Trim(rsADO.Fields(0)) = UserForm1.TextBox1.Value Then MsgBox "員工編号重複,請确認!": GoTo 110

rsADO.MoveNext

Loop

End If

rsADO.AddNew

rsADO.Fields(0) = UserForm1.TextBox1.Value

rsADO.Fields(1) = UserForm1.TextBox2.Value

rsADO.Fields(2) = UserForm1.TextBox3.Value

rsADO.Update

110:

UserForm1.TextBox1.Value = ""

UserForm1.TextBox2.Value = ""

UserForm1.TextBox3.Value = ""

UserForm1.TextBox1.SetFocus

MsgBox ("保存OK!")

End If

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代碼解釋:保存的時候有兩種情況:一個是後面講到的的錄入數據後的保存;一個是修改記錄的保存,兩者的有所區别,這裡是用TextBox1.Enabled的屬性作為判斷的依據,保存的代碼是rsADO.Update

.這裡要特别注意的是數據庫在連接時的設置:imex=0。

4 在"開始"按鈕中相關代碼:

If Right(Application.Caller, 1) = 5 Then '編輯記錄

UserForm1.CommandButton1.Enabled = True

UserForm1.CommandButton4.Enabled = True

UserForm1.CommandButton5.Enabled = True

End If

代碼解釋: 當按下"開始"按鈕後的按鈕1、4、5才能響應動作。

下面看代碼的截圖:

編輯數據表的操作(工作表數據與UserForm窗口的交互)2

編輯數據表的操作(工作表數據與UserForm窗口的交互)3

編輯數據表的操作(工作表數據與UserForm窗口的交互)4

代碼的運行:

1

編輯數據表的操作(工作表數據與UserForm窗口的交互)5

編輯數據表的操作(工作表數據與UserForm窗口的交互)6

編輯數據表的操作(工作表數據與UserForm窗口的交互)7

編輯數據表的操作(工作表數據與UserForm窗口的交互)8

編輯數據表的操作(工作表數據與UserForm窗口的交互)9

今日内容回向:

1 如何實現記錄的編輯和保存?

2 連接ADO連接EXCEL中,為了實現編輯和保存要進行什麼設置?

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
dnf改版新幻神職業(雙幻神時代開啟)
dnf改版新幻神職業(雙幻神時代開啟)
  DNF第六輪職業平衡,将在110級版本更新,國服策劃已經明确表态,“國服110級最遲将于周年慶更新”,那麼,在110級更新和第六輪職業平衡的雙重沖擊下,哪個職業會是“國服110級超級幻神”呢?   第六輪職業平衡首先是“劍宗、劍帝、刃影(被砍8%)、男柔道、女柔道、女機械、元素爆破、鹦鹉、藍拳、巫女、精靈騎士、混沌魔靈、黑武”數據加強,其次是“暴擊率平均...
2025-07-03
趙雷寫給成都的歌(高考熱搜卻是牽手門)
趙雷寫給成都的歌(高考熱搜卻是牽手門)
  —[心]點擊右邊紅色字體,輕松關注[心]—   今年的高考登上熱搜的,不是熊孩子們的雷人語錄,而是國企領導在成都太古裡街頭牽手異性,霸占了各大媒體平台。我們不贊成插足别人的感情生活,我們贊成與一人一生一世的長相厮守。   本文以此“牽手門”作為背景,臨風改編自趙雷的歌曲《成都》,供大家欣賞。   趙雷:讓我掉下眼淚的,不止昨夜的酒。臨風:讓我丢下飯碗的,...
2025-07-03
涼山州脫貧攻堅個人事迹(涼山州表揚一批脫貧攻堅綜合幫扶工作先進集體和個人)
涼山州脫貧攻堅個人事迹(涼山州表揚一批脫貧攻堅綜合幫扶工作先進集體和個人)
     7月22日,涼山州脫貧攻堅綜合幫扶工作表揚大會暨決勝脫貧攻堅誓師大會在西昌召開,會議通報表揚10名“十佳綜合幫扶工作隊員”、 200名“優秀綜合幫扶工作隊員”、10個“十佳鄉鎮工作隊”、10個“十佳駐村工作隊”、10個“十佳專業技術服務隊”。   去年,省委着眼加強脫貧攻堅一線領導力量、專業力量、工作力量,舉全省之力向涼山選派綜合幫扶工作隊。一年來...
2025-07-03
杜淳和陳喬恩最新消息(陳喬恩和杜淳年底結婚)
杜淳和陳喬恩最新消息(陳喬恩和杜淳年底結婚)
  娛樂圈最近最大的喜事莫過于謝娜懷上國民寶寶,半個娛樂圈的明星紛紛出動祝福娜姐。   因為和謝娜一起參加綜藝節目《我們來了》而成為好姐妹的陳喬恩和江一燕也在第一時間送上了祝福。      但卻一不小心成為了網友催婚的對象,更有意思的是竟然有博主曝出陳喬恩将在年底結婚!   結婚對象竟然是曾經一起參加過真人秀《旋風孝子》的杜淳!      看到爆料後,大家紛...
2025-07-03
柯潔圍棋比賽賽程(每個省職業棋手盤點)
柯潔圍棋比賽賽程(每個省職業棋手盤點)
  不管是過去,亦或是現在,北京、上海、江蘇和浙江都是圍棋大省。其原因有三點。   第一,圍棋氛圍濃厚,高手衆多。第二,經濟發達,為圍棋發展提供了保障。第三,有一批傑出圍棋天才影響着當地圍棋愛好者。   今天非詳細說說浙江圍棋高手。   前面說過,浙江和北京上海以及江蘇都是圍棋大省職業不僅經濟發達圍棋基數大,而且有着一幫傑出圍棋天才影響着當地圍棋愛好者。遠有...
2025-07-03
Copyright 2023-2025 - www.tftnews.com All Rights Reserved