2012-11-02 12 views
1

我需要一個緊急的方式來做到這一點。目前我有一個文本框會根據搜索條件顯示一些文本。顯示的文本將是表格的名稱。我能否做到這一點,如果我點擊文本框中的表格名稱,它會爲我打開表格?當點擊文字將鏈接我到表

感謝您的幫助!

回答

2

在文本框的Click事件:

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 
+0

感謝您的回覆。然而,在框中,格式是這樣的: 表= NAMEOFTABLE場= NAMEOFSEARCH 我需要它,讓我點擊NAMEOFTABLE,它會聯繫我的表?那可能嗎?可能有超過1個搜索結果,從而就會變成這樣的: 表= NAMEOFTABLE場= NAMEOFSEARCH 表= NAMEOFTABLE2場= NAMEOFSEARCH2 – nonion

+0

你會如何按行辦呢? – nonion

+0

你如何填充文本框?發佈您的代碼。 – Fionnuala

1

你的意思是特意點擊文本是名字... 所以如果文本是「約翰12345桌子」你想只打開桌子?

沒有足夠的信息給了堅實的答案,但如果你想只從上面的文字得到表,那麼你可以使用屏幕座標基礎上,你的關係點擊文本的位置。這將是更容易做到這一點的另一種方式......

+0

是的,這是我想要的。如果我點擊它,表格將打開。這正是我需要的。 – nonion

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 = "。我們所要做的就是檢查光標是否在下一個字段之前。

相關問題