Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WORD中的书签值进行sql查询_Sql_Vba_Oracle_Ms Word - Fatal编程技术网

使用WORD中的书签值进行sql查询

使用WORD中的书签值进行sql查询,sql,vba,oracle,ms-word,Sql,Vba,Oracle,Ms Word,我目前正在尝试构建一个自动的WORD商务信函,在我输入5位数字后,它会填写相应的数据,如公司地址、公司名称、今天的日期、截止日期等 数字和所有其他字段都是书签 每当用户在名为“theNumber”的书签中键入特定的5位数字时,此值将用于SQL查询(Oracle)然后查询将填充所有其他书签 以下是我迄今为止所尝试的: Function dbQuery(ByVal TM As String, ByVal myNumber As String) As Boolean Dim sql

我目前正在尝试构建一个自动的WORD商务信函,在我输入5位数字后,它会填写相应的数据,如公司地址、公司名称、今天的日期、截止日期等

数字和所有其他字段都是书签

每当用户在名为“theNumber”的书签中键入特定的5位数字时,此值将用于SQL查询(Oracle)然后查询将填充所有其他书签

以下是我迄今为止所尝试的:

 Function dbQuery(ByVal TM As String, ByVal myNumber As String) As Boolean

        Dim sqlrumpf As String
        Dim sqlstring As String
        Dim connstring As String

         With ActiveDocument
           If .Bookmarks.Exists(TM) Then
            Dim TMRange As Range
              Set TMRange = .Bookmarks(TM).Range
               TMRange = myNumber
              .Bookmarks.Add TM, TMRange
              dbQuery = True
            Else
                Debug.Print "Bookmark not found: " & TM
           End If
        End With

        sqlrumpf = "SELECT p.name " & _
        "FROM xy.person p, xy.adresse a, wz.zusatz1 z, xy.vorgang v " & _
        "WHERE p.adresse_id = a.adresse_id " & _
        "AND z.aktnr = v.vorgang_id " & _
        "AND a.adresse_id = v.adresse_id " & _
        "AND v.vorgang_nr = '"

        sqlstring = sqlrumpf & myNumber & "'"
        connstring = "ODBC;DSN=mydsn;UID=myuid;DBQ=my.dbq.lan;DBA=W;APA=T;PFC=1;TLO=0;PWD=mypw;"

        QueryTables.Add _
        (Connection:=connstring, _
        Destination:=Range(TMRange), _
        Sql:=sqlstring).Refresh

End Function
Sub Main()

    If dbQuery("theNumber", "12345") = False Then
      MsgBox "Database query failed!"
   End If

End Sub
我得到一个错误:

运行时错误“4608”:值不在定义范围内

我怎样才能解决这个问题

错误似乎发生在这里:

Destination:=Range(TMRange), _
通常,当我想将查询打印到单个单元格中时,我只对excel使用此查询

以这种方式在sql查询中使用书签通常是个坏主意吗? 如果不是书签,您会使用哪些字段?
如何查询书签值?

Word没有
QueryTables
——这纯粹是Excel的功能。您可以使用Word
数据库
字段进行调查。这篇文章可能会有所帮助:Word没有
QueryTables
——这纯粹是Excel的功能。您可以使用Word
数据库
字段进行调查。这篇文章可能有助于: