Я написал следующую функцию vba для запроса базы данных sql под названием Nelus
и таблицы с именем ShareName
. Таблица имеет 2 столбца, ShortCode
и Name
. Функция принимает код компании как параметр, например. "c01"
, и должен вернуть название компании, например. "company01"
.Использование функции VBA для запроса SQL
- Когда я запускаю код vba как
Sub
, он работает (прокомментирован в нижеследующем коде). - Когда я пытаюсь запустить его как
Function
, как показано ниже, он возвращает значение'0'
, а не, например."company01"
.
Любые предложения, как заставить его работать как функция? Благодаря! Nelus
'Sub TestSQLQuery()
Function ShareInfo(CompCode As String)
Dim SQL As String
Dim RS As ADODB.Recordset
Dim Field As ADODB.Field
'Dim CompCode As String
Dim Server, Database As String
Dim Connect As Boolean
'CompCode = "c01"
SQL = "select p.[Name]" & _
"from dbo.['ShareName'] p " & _
"where p.ShortCode = '" & CompCode & "' "
Server = "npc\SQLEXPRESS"
Database = "Nelus"
Set CN = New ADODB.Connection
On Error Resume Next
With CN
.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Integrated Security=SSPI;" & _
"Server=" & Server & ";" & _
"Database=" & Database & ";"
.Open
End With
If CN.State = 0 Then
Connect = False
Else
Connect = True
End If
If Connect = False Then
MsgBox "Could Not Connect!"
Else
Set RS = New ADODB.Recordset
RS.Open SQL, CN, adOpenStatic, adLockReadOnly, adCmdText
If RS.State Then
Cells(ActiveCell.Row, ActiveCell.Column).CopyFromRecordset RS
Set RS = Nothing
End If
CN.Close
End If
End Function
'End Sub
1) да, только одна запись или нет. 2) «ShareName» - это имя таблицы в моем случае. Так что это необходимо в моем случае. 3) Над смыслом и работает! Спасибо, ди! – Nelus
@Nelus приветствую вас, я рад, что это помогло! – dee