問題 : Access里面有 組合 框,可以很快地從多行記錄中選擇所需要的 數(shù)據(jù) 。但是如果記錄超過1000-2000呢?選擇就非常不方便了。我該怎么辦? 回答: 其實(shí)很多 數(shù)據(jù) 都可以分類(分層)來選擇,而且我們可以預(yù)先篩選 數(shù)據(jù) 。 以下這個(gè)示例就是用重復(fù)打開同
問題:Access里面有組合框,可以很快地從多行記錄中選擇所需要的數(shù)據(jù)。但是如果記錄超過1000-2000呢?選擇就非常不方便了。我該怎么辦?
回答:
其實(shí)很多數(shù)據(jù)都可以分類(分層)來選擇,而且我們可以預(yù)先篩選數(shù)據(jù)。
以下這個(gè)示例就是用重復(fù)打開同一個(gè)窗體類來完成多層次數(shù)據(jù)的選擇。
當(dāng)然,還包括預(yù)先篩選數(shù)據(jù)功能。
好了,現(xiàn)在開始:
1、建立一個(gè)窗體(testForm),里面有一個(gè)文本框(text0),一個(gè)按鈕(Command2)。
2、建立一個(gè)窗體(selectForm),里面有一個(gè)列表框(list0)。
3、在testForm中的文本框的“更新后”事件中寫入以下代碼以打開品名選擇窗體(selectForm),并對(duì)其中的列表框(list0)的行來源(RowSource)進(jìn)行賦值。
Private Sub Text0_AfterUpdate()
DoCmd.OpenForm "selectform"
'這行代碼就實(shí)現(xiàn)了BTYPE表的模糊檢索,使用的是 WHERE 子句中的 LIKE 關(guān)鍵字進(jìn)行通配
Forms("selectform").List0.RowSource = "SELECT btype.soncount, btype.UserCode, btype.FullName, btype.typeId FROM btype WHERE btype.fullname like '*" & Text0.Value & "*' "
End Sub
4、在testForm中的命令按鈕的“單擊”事件中寫入以下代碼以打開品名選擇窗體,按分類檢索
5、然后再在testForm中輸入以下代碼以完成多次打開窗體本身并顯示子類中數(shù)據(jù)的功能。
為了能夠使代碼重復(fù)利用,寫了兩個(gè)通用過程
Option Compare Database
Dim f
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'先設(shè)定窗體的“鍵預(yù)覽”屬性為“是”
'本過程將加快你的輸入速度
'如果按 ESCAPE 鍵,就關(guān)閉窗體
If KeyCode = vbKeyEscape Then
closeAllSelectForm "SelectForm"
End If
End Sub
Private Sub List0_DblClick(Cancel As Integer)
checkYouSelect
End Sub
Private Sub List0_KeyPress(KeyAscii As Integer)
'本過程實(shí)現(xiàn)全鍵盤操作
If KeyAscii = 13 Then
checkYouSelect
End If
End Sub
Sub closeAllSelectForm(strFormName As String)
'通用過程1
'本過程用來關(guān)閉所有的指定名稱的窗體
For Each objForm In Forms
If objForm.Name = strFormName Then
DoCmd.Close acForm, objForm.Name
End If
Next objForm
End Sub
Sub checkYouSelect()
'通用過程2
'檢測(cè)你的選擇
'如果發(fā)現(xiàn) suncount 列為 0(表示沒有下一層了)
'就可以把你選定的產(chǎn)品名稱放到文本框中了
On Error Resume Next
Set f = New Form_SelectForm
Dim objForm As Form
If List0.Column(0) = 0 Then
Forms("testform").Text0.Value = List0.Column(2)
closeAllSelectForm "SelectForm"
Else
f.Visible = True
f.List0.RowSource = "SELECT btype.soncount, btype.UserCode, btype.FullName, btype.typeId FROM btype WHERE parid='" & List0.Value & "'"
End If
End Sub
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com