Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/88: Рейтинг темы: голосов - 88, средняя оценка - 4.86
204 / 4 / 1
Регистрация: 14.05.2012
Сообщений: 78
1

Запуск процедуры SQL Server через VBA

05.09.2012, 13:34. Показов 17589. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые форумчане, кто подскажет можно ли при помощи VBA запустить процедуру SQL Server?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2012, 13:34
Ответы с готовыми решениями:

Запуск запроса к таблице на SQL server через VBA access 2007
Здравствуйте! дано: база данных аксес 2007, к ней прилинкованы две таблицы с sql server...

Запуск sql процедуры Job-ом из VBA
Все привет и хорошего дня. Подскажите, пжл. Создана процедура с 5-ью переменными...

Вызов хранимой процедуры с параметров из SQL Server в VBA в ADP проект MS Access
Доброго времени суток. Такая проблемка, не знаю как исправить... Битый час туплю. Делаю поиск...

Запуск SQL-запроса через VBA
У меня ситуёвина следующая... как я не мучался ниче придумать так и не смог. Вообщем нужна кнопка...

11
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
05.09.2012, 16:09 2
Да, можно http://www.databasejournal.com... Access.htm
0
204 / 4 / 1
Регистрация: 14.05.2012
Сообщений: 78
11.09.2012, 14:36  [ТС] 3
analyst,
Спс за ссылку ну это не совсем то что мне нужно.
Процедура уже записана на SQL Server. Нужно что бы через VBA запускался SQL Server, отробатывал хранимую процедуру, а потом дальше отрабатывался макрос, который будет запускать Access (в котором прилинкованы таблицы с SQL).
0
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
11.09.2012, 15:01 4
Понял. В общем это точно подойдет:
http://custom-designed-databas... procedure/
Все эти финты с линкованными в MS Access хранимыми процедурами - какой-то шаманизм. Хотя видимо для юзеров создано... Вопрос зачем?
0
204 / 4 / 1
Регистрация: 14.05.2012
Сообщений: 78
11.09.2012, 17:47  [ТС] 5
analyst,
Не знаю может показаться, что это тупой вопрос, но я все таки спрошу для лучшего понимания. В примере который ты мне дал есть строка
T-SQL
1
conn.ConnectionString = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=MYTEST-PC\SQLEXPRESS”
Мне не совсем понятны некоторые значения:
Provider - что занчит это значение? и мочему в примере указано именно SQLOLEDB.1?
Integrated Security - что занчит это значение? и мочему в примере указано именно SSPI?
Persist Security Info - что занчит это значение?
Initial Catalog - это название базы данных (если я правильно понял)?
Data Source - это название сервера (если я правильно понял)?
0
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
11.09.2012, 17:52 6
Здесь про это написано и в общем случае будет полезно:
http://connectionstrings.com/
0
204 / 4 / 1
Регистрация: 14.05.2012
Сообщений: 78
12.09.2012, 13:55  [ТС] 7
С написанием макроса разобрался. Но он у меня не работает. Вот сам макрос:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub SQL()
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
 
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SalesAnalyst;Data Source=UAIEVAD5"
conn.Open
 
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "OFF_proc"
cmd.CommandType = adCmdStoredProc
cmd.Execute
conn.Close
Set conn = Nothing
Set cmd = Nothing
 
End Sub
На шаге cmd.Execute он выдает ошибку "Timeout Expired". Что ему не нравиться и сто нужноисправить?
0
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
12.09.2012, 14:48 8
А если вставить:
Visual Basic
1
conn.ConnectionTimeout = 120
?
0
204 / 4 / 1
Регистрация: 14.05.2012
Сообщений: 78
13.09.2012, 11:37  [ТС] 9
Не помогает, я уже данынй параметр менял в реестре. Но все тоже. Может нужно еще какойто параметр поменять?

Добавлено через 19 часов 1 минуту
analyst,
Уже разобрался с данной проблемой. Мы смотрели на параметр Timeout не того свойства. Нужно его увеличить для свойтва Command. То есть нужно было между 12 и 13 cтрочкой вписать строчку
Visual Basic
1
cmd.CommandTimeout=0
Если стоит некоторое число (например 30) то на выполнение процедуры которую мы запускаем отводится это время (в нашем случае 30 сек). Если же данный параметр 0, то VBA будет ждать полного завершения процедуры.
1
204 / 4 / 1
Регистрация: 14.05.2012
Сообщений: 78
17.09.2012, 10:57  [ТС] 10
Задача немножко усложнилась. Теперь мне нужно еще передать параметр (это дата). Для это записываю вот такой код VBA.
Visual Basic
1
2
cmd.Parameters.Append cmd.CreateParameter("@StartD", adDBDate, adParamInput, 21)
cmd.Parameters("@StartD").Value = strDS
Переменная strDS - это собранная строка.
В SQL Serever данная переменная "@StartD" имеет тип "Datetime. Но при пошаговой прогонке у меня на строке "cmd.Parameters("@StartD").Value = strDS" выдает ошибку:
Application uses a value of the wrong type for the current operation.
где я не правильно указываю тип переменной?
0
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
17.09.2012, 12:17 11
Я ни разу не передавал дату в виде параметра, так что не сталкивался с вашими проблемами.
Но можно точно утверждать, что ошибка у вас скорее всего со строкой, которую вы передаете - strDS. Предлагаю вам поэкспериментировать с этой строкой: вставить например вместо неё дату или цифру.
SQL Server должен сам преобразовывать её, но видимо в вашем случае он не может этого сделать.
0
0 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 1
23.05.2017, 06:39 12
Дату надо передавать как строку в формате sql
Dim dt as string, dt_ins as date
....
dt=format(Dt_ins, "yyyy-mm-dd")
....
Cmd.parametrs.append cmd.createparametr("@dt", adbdate, adparaminput, , dt)
....
В таком формате дата на sql передаётся без проблем
0
23.05.2017, 06:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2017, 06:39
Помогаю со студенческими работами здесь

Можно ли обращаться в SQL-конструкциях, помещенных в процедуры VBA, к полям таблицы через переменную?
Добрый день Помогите плз, подскажите, можно ли обращаться в SQL-конструкциях, помещенных в...

Как настроить MS SQL Server, чтобы через Access, можно было редактировать таблицы MS SQL Server?
ВОПРОС: Как настроить MS SQL Server, чтобы через Access, можно было редактировать таблицы MS...

Программный запуск VBA процедуры в другой БД
Доброго времени суток уважаемые форумчане! Подскажите пож-та, а существует ли механизм запуска...

Процедуры в SQL Server
Рассматривается БД кораблей, участвовавших во второй мировой войне. Имеются следующие отношения:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru