Здравствуйте, подскажите, как в VBA вызвать функцию PostgreSQL, возвращающую множество. Стандартным способ через запись в Recordest не получается, выдаёт ошибку: "Функция, возвращающая множество, вызвана в контексте, где ему нет места".
Код (vb) Выделить
Private Sub CommandButton1_Click()
Dim MyConnect As String
Set ConnPGSQL = New ADODB.Connection
DoEvents
UPSQL = Trim(Auth.TextBox3.Text)
PPSQL = Trim(Auth.TextBox4.Text)
PGServer = Trim(Auth.TextBox1.Text)
pgDB = Trim(Auth.TextBox2.Text)
MyConnect = "Provider=MSDASQL.1;Password=" & PPSQL & ";Persist Security Info=True;User ID=" & UPSQL & ";Extended Properties='DRIVER={PostgreSQL ANSI};DATABASE=" & pgDB & ";SERVER=" & PGServer & ";PORT=5432;UID=" & UPSQL & ";PWD=" & PPSQL & ";SSLmode=disable;ReadOnly=1;Protocol=7.4;FakeOidIndex=0;ShowOidColumn=0;RowVersioning=0;ShowSystemTables=0;ConnSettings=;Fetch=100;Socket=4096;UnknownSizes=0;MaxVarcharSize=255;MaxLongVarcharSize=8190;Debug=0;CommLog=0;Optimizer=1;Ksqo=1;UseDeclareFetch=0;TextAsLongVarchar=1;UnknownsAsLongVarchar=0;BoolsAsChar=1;Parse=0;CancelAsFreeStmt=0;ExtraSysTablePrefixes=dd_;LFConversion=1;UpdatableCursors=1;DisallowPremature=0;TrueIsMinus1=0;BI=0;ByteaAsLongVarBinary=0;UseServerSidePrepare=0;LowerCaseIdentifier=0;XaOpt=1;AB=10;';Initial Catalog=" & pgDB
If ConnPGSQL.State <> adStateOpen Then
With ConnPGSQL
.Mode = adModeRead
.CursorLocation = adUseClient
.Open MyConnect
End With
End If
Dim RCSTemp As New ADODB.Recordset
Dim sQ As String
sQ = "SELECT find_all('380999999999')"
RCSTemp.Open sQ, ConnPGSQL, adOpenDynamic, adLockBatchOptimistic, adCmdText
TextBox1.Text = Trim(RCSTemp.Fields(0).Value)
End Sub