将WORD中的书签值用于SQL查询

时间:2019-02-26 07:58:18

标签: sql vba oracle ms-word

我目前正在尝试构建一个自动的WORD商务信函,以填写相应的数据,例如公司地址,公司名称,今天的日期,截止日期等。

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

每当用户在名为“ 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查询中使用书签通常不是一个好主意吗? 如果没有书签,您将使用哪些字段? 您如何查询书签值?

0 个答案:

没有答案