[英]MS Access 2003 - Auto fill form-field based on previous form field.
[英]MS Access - open a form taking a field value from a previous form
我在MS Access數據庫中有一個表格,其中列出了為新電力線路咨詢的所有土地所有者。 在每行的末尾是一個按鈕,打開另一個表格,顯示所有咨詢,優惠等的詳細信息。
我正在嘗試在MS Access中使用vb來獲取contactID並自動將其放在詳細信息表單中的字段中,以便土地所有者的咨詢詳細信息將自動彈出。 我根本不是一個vb程序員(我有一個主要是Java的comp sci學位,我現在是一名GIS分析師,但它是一家小公司,因此我被要求讓Access數據庫工作)。
我想說[detailsForm]![contactID] = [landownerlist]![ID]以vb和訪問方式滿意的方式。 然后我可以看看我是否在正確的軌道上,如果它真的有效! 我上面的內容實際上並不起作用。 它不會編譯。
來自Kaliana
如果您希望打開一個表單到新記錄並在那里設置ID,您可以使用Openargs,一個Openform的參數:
DoCmd.OpenForm "FormName",,,,acFormAdd,,Me.ID
打開的表單還需要一些代碼:
If Me.Openargs<>vbNullstring Then
Me.Id = Me.Openargs
End If
還可以找到:
Forms!LandownersList.Recordset.FindFirst "ID=" & Me.ID
或填寫一個值:
Forms!LandownersList!Id = Me.ID
在從調用表單打開的表單上。
您可能希望查看這些按鈕背后的代碼。 如果您使用的是docmd.openform,則可以在打開下一個表單時將第4個設置設置為where子句。
DoCmd.OpenForm "OpenFormName", acNormal, , "[contactID] = " _
& [detailsForm]![contactID] , acFormEdit, acWindowNormal
這假設聯系人ID是數字,不需要任何引號。
使用開放式args是普遍接受的解決方案,正如其他人所暗示的那樣。 這只屬於“For you edification”的類別:)使用open args的一個問題是,除非你小心你的評論,否則很容易忘記它們應該是什么意思。 你經過不止一個人嗎? 哪個是哪個? 我怎么在這里做的? 我是怎么在那里做的等等。對於我自己的錢,我標准化了這個(下面)所以我總是可以毫無畏懼地傳遞多個參數,當我從現在起一年后查看我的代碼時,我仍然可以看到什么是沒有的一個巨大的麻煩:
Option Explicit
'Example use: DoCmd.OpenForm "Example", OpenArgs:="Some Filter|True"
Public Enum eForm1Args
eFilter = 0
eIsSpecial = 1
End Enum
Private m_strArgs() As String
Public Property Get Args(ByVal eForm1Args As eForm1Args) As String
Args = m_strArgs(eForm1Args)
End Property
Private Sub Form_Open(Cancel As Integer)
m_strArgs = Split(Nz(Me.OpenArgs, vbNullString), "|")
If LenB(Me.Args(eFilter)) Then Me.Filter = Me.Args(eFilter)
End Sub
Private Sub Command1_Click()
If LCase$(Me.Args(eIsSpecial)) = "true" Then
'Do something special
End If
End Sub
正如之前發布的OpenArgs對此非常有用。 我學到的一個技巧是,如果需要作為分隔字符串(例如逗號),很容易傳入多個參數,然后目標表單可以使用Split()函數訪問這些值:
StringArrayVariable()= Split(me.OpenArgs,",")
Me.textbox= StringArrayVariable(0)
Me.textbox1= StringArrayVariable(1)
等等
這是空中代碼,因此請查看Split()的幫助文件。
也可以在OpenArgs中傳遞對象,它需要一些手動內存指針操作,我沒有代碼可以處理,但我確信谷歌搜索會找到一些例子。 這種技術可能會導致一些隨機崩潰。 被警告!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.