1

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

4

3 回答 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 的点击事件中:

Private Sub listbox0_Click()
    DoCmd.OpenTable Me.listbox0
End Sub
于 2012-11-02T23:02:10.303 回答
1

你的意思是专门点击名字的文字......所以如果文字是“John 12345 THE TABLE”,你只想打开桌子?

没有足够的信息来给出一个可靠的答案,但如果你只想从上面的文本中获取表格,那么你可以根据你点击的位置相对于文本的位置来使用屏幕坐标。换一种方式会容易得多...

于 2012-11-02T22:49:45.013 回答
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 = "。我们所要做的就是检查光标是否在下一个字段之前。

于 2012-11-04T16:17:14.957 回答