目前我有一个文本框,它将根据搜索条件显示一些文本。显示的文本将是表的名称。我是否可以这样做,以便如果我单击文本框中的表格名称,它会为我打开表格?
问问题
134 次
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 回答