Я пытаюсь выполнить несколько операторов SQL в базе данных SQL-сервера с помощью ADODB и vb6.Выполнение нескольких операторов SQL в одной команде для базы данных SQLServer в vb6
когда я открываю записей код останавливается со следующим кодом ошибки:
Ошибка выполнения «3704»: Операция не разрешена, если объект закрыт.
вот мой код:
Dim sql As String
sql = "WITH " & vbCrLf & _
"q AS" & vbCrLf & _
"(SELECT Item_No, Unit_OldQuantity" & vbCrLf & _
"FROM dbo.The_Units), sequenced AS" & vbCrLf & _
"(SELECT ROW_NUMBER() OVER (PARTITION BY Item_No ORDER BY Unit_OldQuantity DESC) AS sequence_id,*" & vbCrLf & _
"From q)" & vbCrLf & _
"SELECT Item_No , Unit_OldQuantity" & vbCrLf & _
"into #tmpTable" & vbCrLf & _
"From sequenced" & vbCrLf & _
"Where sequence_id = 1" & vbCrLf & _
"SELECT sum(The_ItemDetails.Item_Cost/#tmpTable.Unit_OldQuantity * The_ItemDetails.Item_Quantity) AS Total" & vbCrLf & _
"FROM The_Items INNER JOIN The_ItemDetails ON The_Items.Item_No = The_ItemDetails.Item_No INNER JOIN #tmpTable ON The_ItemDetails.Item_No = #tmpTable.Item_No" & vbCrLf & _
"Where the_items.Item_kind = 0"
Dim connText As String
connText = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AlmohasebSQL;Data Source=server-pc\SQLEXPRESS"
Db_Almohaseb.ConnectionString = connText
Db_Almohaseb.Open
Dim RS_ItemDetails As New ADODB.Recordset
RS_ItemDetails.Open sql, Db_Almohaseb, adOpenStatic, adLockOptimistic, adCmdText
Text1.Text = RS_ItemDetails.RecordCount
я могу запустить любой другой SQL заявление, используя то же самое соединение, но это не один. Я также могу запустить эту команду в .net, но не в vb6. Прямо сейчас мне просто нужно знать, почему это происходит, и я чувствую себя неловко, ударяя головой о стол. , пожалуйста, может кто-то пролить свет на это.
Благодаря
IMO, вам не нужны эти '' vbCrLf '' в 'sql', просто используйте простое пробел' '' ', и это изменение может быть полезным:' sql = "; WITH" ... ';) , –
Спасибо за ввод, я действительно предпочитаю использовать vbCrLf, чтобы убедиться, что я не забыл пробел в любой строке; и это улучшает читаемость при отладке. Все сказанное не имеет никакого отношения к проблеме. –