单击文本时会将我链接到表格

问题描述 投票:1回答:3

目前我有一个文本框,将根据搜索条件显示一些文本。显示的文本将是表的名称。是否有可能让我这样做,如果我点击文本框中表格的名称,它会为我打开表格?

vba ms-access access-vba
3个回答
2
投票

在文本框的单击事件中:

DoCmd.OpenTable Me.MyTextbox

编辑重新评论,这是一个草图,如果表名有空格则不起作用。

Private Sub Text0_Click()
    i = Me.Text0.SelStart
    j = InStr(i, Me.Text0, " ")
    k = InStrRev(Me.Text0, " ", i)
    tbl = Mid(Me.Text0, k, j - k)
    DoCmd.OpenTable tbl
End Sub

或者更好的是,按行而不是在文本框中捕获列表框中的构造。

基于您的代码示例,您可以说:

Public Sub SearchTables(SearchString As String)
Dim tdf As DAO.TableDef
Dim sTable As String
Dim sField As String
Dim sMsg As String
sMsg = ""
For Each tdf In CurrentDb.TableDefs

    sTable = tdf.Name
    sField = SearchTable(sTable, SearchString)
    If sField <> vbNullString Then
        sMsg = sMsg & ";" & sTable & ";" & sField
    End If
Next
'listbox0
'Row source type: Value List
'Column count: 2
'You will get a two column listbox with table in one column
'and field in another
Forms!Search!listbox0.RowSource = Mid(sMsg, 2)
End Sub

然后在listbox0的click事件中:

Private Sub listbox0_Click()
    DoCmd.OpenTable Me.listbox0
End Sub

1
投票

你的意思是专门点击名称的文本...所以如果文本是“约翰12345 THE TABLE”你想要只打开桌子吗?

没有足够的信息来提供可靠的答案,但如果您想从上面的文本中获取THE TABLE,那么您可以根据您在文本位置相关的位置使用屏幕坐标。以另一种方式做到这一点要容易得多......


1
投票

如果您的文字格式如下:

Table = NAMEOFTABLE Field = NAMEOFSEARCH Table = NAMEOFTABLE2 Field = NAMEOFSEARCH2

你可以使用这段代码:

Private Sub Text0_Click()
  i = Me.Text0.SelStart
  If i > 0 Then
    startTable = InStrRev(Me.Text0, "Table = ", i)
    startField = InStr(startTable + 8, Me.Text0, "Field = ")
    If startTable > 0 And i < InStr(startTable + 8, Me.Text0, "Field = ") Then
      DoCmd.OpenTable Mid(Me.Text0, startTable + 8, startField - startTable - 9)
    End If
  End If
End Sub

如果单击任何表的名称,它将打开该表。

这里有一点解释:使用光标的当前位置,我正在向后搜索"Table = "字符串,并从那里我正在寻找下一个字符串"Field = "。我们所要做的就是检查光标是否在下一个字段之前。

© www.soinside.com 2019 - 2024. All rights reserved.