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」の場合、THE TABLEだけを開く必要がありますか?

確かな答えを得るには十分な情報ではありませんが、上記のテキストから 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 に答える