我目前正在尝试构建一个自动的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查询中使用书签通常不是一个好主意吗? 如果没有书签,您将使用哪些字段? 您如何查询书签值?