Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 01:54   #1
JAD!
Форумчанин
 
Регистрация: 15.05.2009
Сообщений: 118
По умолчанию Recordset сам закрылся

Есть процедура в SQLе, на добавление строки в таблицу. Если данные отправлены не корректно, выдаётся селект с ошибкой. Если корректно, делается инсерт и выдаётся селект, что всё ок.
В VBA есть форма для и процедура для связи с базой. В форме формируется строка запроса и отправляется в процедуру для отправки в СУБД.
Код:
Sub msg_add(srt2 As String)
 
Dim cnPubs As ADODB.Connection
Set cnPubs = New ADODB.Connection
 
 
Dim strConn As String
 
 
strConn = "PROVIDER=SQLOLEDB;"
 
 
strConn = strConn & "DATA SOURCE=(local);INITIAL CATALOG=master;"
 
 
strConn = strConn & " INTEGRATED SECURITY=sspi;"
 
cnPubs.Open strConn
Dim rsPubs As ADODB.Recordset
Set rsPubs = New ADODB.Recordset
 
With rsPubs
    
    .ActiveConnection = cnPubs
 
    .Open srt2
    
    
  Лист1.Range("A1").CopyFromRecordset rsPubs
  If Лист1.Range("A1").Value <> "" Then MsgBox лист1.Range("A1").Value
   
    .Close
    End With
 
cnPubs.Close
Set rsPubs = Nothing
Set cnPubs = Nothing
End Sub
Так вот, если данные на отправку были не корректными, то всё работает, и мне выдается сообщение. Если же инсерт произошел, после команды .Open srt2, я не могу вообще никак обратится к rsPubs, при любой попытке он мне говорит, что объект уже закрыт. Даже если я буду BOF спрашивать -фиг, объект не существует. Что делать? А я хотел бы чтобы и сообщение выводило. Кста, строка отправленная формой правильная и Menagement Studio всегда хавает её правильно и выводит мне мой селект.
If (что-то чинить)
{(надо знать его конструкцию, что-то в этом понимать)->чинить;} else {платите ваши деньги;}
JAD! вне форума Ответить с цитированием
Старый 17.05.2010, 11:35   #2
JAD!
Форумчанин
 
Регистрация: 15.05.2009
Сообщений: 118
По умолчанию

Ок.. Кто-то раньше подобное делал? Или у всех кто это делал никогда подобных проблем небыло?
If (что-то чинить)
{(надо знать его конструкцию, что-то в этом понимать)->чинить;} else {платите ваши деньги;}
JAD! вне форума Ответить с цитированием
Старый 19.05.2010, 10:38   #3
JAD!
Форумчанин
 
Регистрация: 15.05.2009
Сообщений: 118
По умолчанию

Покрутив инет выяснилось что можно вставить строчку в процедуре "set nocount on" и тут вдруг всё запахало. Я так и не понял что делает этот параметр, что он запрещает,и какие проблемы могут возникнуть при его использовании.
If (что-то чинить)
{(надо знать его конструкцию, что-то в этом понимать)->чинить;} else {платите ваши деньги;}
JAD! вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Update Recordset Kveldulv Microsoft Office Excel 0 13.05.2010 16:42
Тип переменной Recordset Insightful Microsoft Office Access 6 23.04.2010 15:10
Recordset выдает ошибку 3197 alco84 Microsoft Office Access 5 27.02.2010 11:56
Удалил Win32/Qhost, но доступ на некоторые сайты закрылся, а файл под именем hosts оказался архивом почты ARTERIKS Безопасность, Шифрование 9 22.02.2010 17:11
ADO recordset фильтр по нескольким полям zmeevolk Microsoft Office Access 0 28.04.2009 16:23