Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выполнение запроса в базе MS SQL / 22 сообщений из 22, страница 1 из 1
15.06.2009, 10:02:20
    #36040793
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
День добрый!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Dim server As String:   server = "s"
    Dim UserId As String:   UserId = "b"
    Dim Passwo As String:   Passwo = "1"
    
    Dim con As adodb.Connection
    Dim rst, rs As adodb.Recordset
    Dim cmd As adodb.Command
    
    Set con = New adodb.Connection
    Set rst = New adodb.Recordset
    Set rs = New adodb.Recordset
    Set cmd = New adodb.Command
     
    con.Open "Provider=SQLOLEDB;Persist Security Info=False;Password=" & Passwo & ";User ID=" & UserId & ";Data Source=" & server
    With cmd
        .ActiveConnection = con
        .CommandText = "USE stat create table #Excel (idn int IDENTITY(1,1),dn char(24) not null, um char(31) null,nam char(32) null,)"
        .CommandType = adCmdText
        .Execute
     End With
         With cmd
        .ActiveConnection = con
        .CommandText = "USE stat Insert into #Excel (prtidn,drwnum, nmpnam)select prtidn,drwnum, nmpnam from Excel_view order by dn"
        .CommandType = adCmdText
        .Execute
     End With


Вроде всё просто, но отчего-то оба cmd не отрадатываются (ошибки не вываливаются), связь с базой есть. В Query Analyzer'e под теми же параметрами подключения запросы работают.
...
Рейтинг: 0 / 0
15.06.2009, 11:24:14
    #36040980
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
Что значит, "не отрабатываются"? Что говорит профайлер?
...
Рейтинг: 0 / 0
15.06.2009, 11:33:21
    #36041011
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
FЧто значит, "не отрабатываются"? Что говорит профайлер?
Профайлер ничего не говорит, молча проскакивает без создания и заполнения таблиц.
...
Рейтинг: 0 / 0
15.06.2009, 11:48:51
    #36041047
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
А где вы смотрите?
...
Рейтинг: 0 / 0
15.06.2009, 12:06:20
    #36041094
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
Нович,
Пуск-Программы-SQL Server-Profiler.

Там нафильтруйте все, что нужно для вашей базы и посмотрите, какой запрос реально приходит на сервер. Это может отличаться от того, что как вам кажется, вы отсылаете на сервер.
...
Рейтинг: 0 / 0
15.06.2009, 12:33:23
    #36041164
TJK_TJK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
Вы просто создали временную таблицу. Может из за этого результата не видете? После INSERT попробуйте SELECT сделать с той же таблицы
...
Рейтинг: 0 / 0
15.06.2009, 13:03:41
    #36041226
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
F
Там нафильтруйте все, что нужно для вашей базы и посмотрите, какой запрос реально приходит на сервер. Это может отличаться от того, что как вам кажется, вы отсылаете на сервер.
Не являюсь членом sysadmin fixed server role на сервере, не пускает.
...
Рейтинг: 0 / 0
15.06.2009, 13:07:26
    #36041242
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
Пытаюсь зайти с друго входа (через выполнение процедуры):

Код: plaintext
1.
Set rs = con.Execute("exec excel_liz '1'")
    MsgBox (rs.RecordCount)
На MsgBox (rs.RecordCount) ругается: Run-time error '3704' Операция не допускается, если объект закрыт
...
Рейтинг: 0 / 0
15.06.2009, 13:54:50
    #36041401
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
НовичПытаюсь зайти с друго входа (через выполнение процедуры):

Код: plaintext
1.
Set rs = con.Execute("exec excel_liz '1'")
    MsgBox (rs.RecordCount)
На MsgBox (rs.RecordCount) ругается: Run-time error '3704' Операция не допускается, если объект закрыт

тогда скорее всего в ХП не стоит SET NOCOUNT ON , либо ХП действительно ничего не возвращает

попробуйте следующий код

Код: plaintext
1.
2.
3.
4.
5.
Set rs = con.Execute("exec excel_liz '1'")
if rs is not nothing then
  MsgBox (rs.RecordCount)
else
  set rs = rs.nextrecordset
endif

ЗЫЖ проверьте что возвращается в Query Analaizer код
Код: plaintext
exec excel_liz ' 1 '
...
Рейтинг: 0 / 0
15.06.2009, 14:14:35
    #36041454
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
HandKot
ЗЫЖ проверьте что возвращается в Query Analaizer код
Код: plaintext
exec excel_liz ' 1 '


Query Analaizer'е код
Код: plaintext
exec excel_liz ' 1 '
возвращает таблицу
...
Рейтинг: 0 / 0
15.06.2009, 14:39:04
    #36041515
kha
kha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
НовичДень добрый!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Dim server As String:   server = "s"
    Dim UserId As String:   UserId = "b"
    Dim Passwo As String:   Passwo = "1"
    
    Dim con As adodb.Connection
    Dim rst, rs As adodb.Recordset
    Dim cmd As adodb.Command
    
    Set con = New adodb.Connection
    Set rst = New adodb.Recordset
    Set rs = New adodb.Recordset
    Set cmd = New adodb.Command
     
    con.Open "Provider=SQLOLEDB;Persist Security Info=False;Password=" & Passwo & ";User ID=" & UserId & ";Data Source=" & server
    With cmd
        .ActiveConnection = con
        .CommandText = "USE stat create table #Excel (idn int IDENTITY(1,1),dn char(24) not null, um char(31) null,nam char(32) null,)"
        .CommandType = adCmdText
        .Execute
     End With
         With cmd
        .ActiveConnection = con
        .CommandText = "USE stat Insert into #Excel (prtidn,drwnum, nmpnam)select prtidn,drwnum, nmpnam from Excel_view order by dn"
        .CommandType = adCmdText
        .Execute
     End With


Вроде всё просто, но отчего-то оба cmd не отрадатываются (ошибки не вываливаются), связь с базой есть. В Query Analyzer'e под теми же параметрами подключения запросы работают.

USE - эта директива работает только в QA. В адо работать не будет,
для того чтоб выполнить запрос к базе в строке подключения добавь Initial Catalog=stat;
...
Рейтинг: 0 / 0
15.06.2009, 21:20:47
    #36042307
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
НовичHandKot
ЗЫЖ проверьте что возвращается в Query Analaizer код
Код: plaintext
exec excel_liz ' 1 '


Query Analaizer'е код
Код: plaintext
exec excel_liz ' 1 '
возвращает таблицу

это-то понятно
в окне сообщений пишется сколько раз что выполнено
пример

10 rows affected и т.п. и т.д ?
...
Рейтинг: 0 / 0
16.06.2009, 08:14:19
    #36042599
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
HandKot10 rows affected и т.п. и т.д ?
Да, пишет.
...
Рейтинг: 0 / 0
16.06.2009, 08:36:03
    #36042616
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
ну тогда, как было сказано выше,
добавить в ХП SET NOCOUNT ON
или же применить следующий код
Код: plaintext
1.
2.
3.
4.
5.
Set rs = con.Execute("exec excel_liz '1'")
if rs is not nothing then
  MsgBox (rs.RecordCount)
else
  set rs = rs.nextrecordset
endif

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
16.06.2009, 08:50:00
    #36042632
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
HandKot
Код: plaintext
1.
2.
3.
4.
5.
Set rs = con.Execute("exec excel_liz '1'")
if rs is not nothing then
  MsgBox (rs.RecordCount)
else
  set rs = rs.nextrecordset
endif

if rs is not nothing then - invalid use of object
...
Рейтинг: 0 / 0
16.06.2009, 14:02:23
    #36043548
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
Код: plaintext
 If Not (rs Is Nothing) Then
?


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
16.06.2009, 18:04:22
    #36044422
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
khaUSE - эта директива работает только в QA. В адо работать не будет,Глупости.
khaдля того чтоб выполнить запрос к базе в строке подключения добавь Initial Catalog=stat;Нафиг не нужно.
Проблема Новича в том что он не знает время жизни временных таблиц и забывает что вставка в строк во временную таблицу не означает выдачу этих строк клиенту.
...
Рейтинг: 0 / 0
17.06.2009, 09:05:54
    #36045048
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
White OwlПроблема Новича в том что он не знает время жизни временных таблиц и забывает что вставка в строк во временную таблицу не означает выдачу этих строк клиенту.

Можете просветить в суть проблемы и путях выхода из неё?
...
Рейтинг: 0 / 0
17.06.2009, 13:08:18
    #36045833
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
Нович
так вы запросы делаете. что в самом начале, или же ХП выполняете?

а то началось за здравие,а заканчивается за упокой

разные вещи и делать надо по разному

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
17.06.2009, 15:36:02
    #36046233
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
HandKotтак вы запросы делаете. что в самом начале, или же ХП выполняете?


Через запросы не получилось, решил попытаться через хранимые процедуры на sql сервере попробовать.
...
Рейтинг: 0 / 0
17.06.2009, 21:44:15
    #36047132
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
НовичWhite OwlПроблема Новича в том что он не знает время жизни временных таблиц и забывает что вставка в строк во временную таблицу не означает выдачу этих строк клиенту.
Можете просветить в суть проблемы и путях выхода из неё?Читать учебник.
Начни тут например: http://www.sqlteam.com/article/temporary-tables
...
Рейтинг: 0 / 0
17.06.2009, 21:46:20
    #36047135
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение запроса в базе MS SQL
HandKot Нович
так вы запросы делаете. что в самом начале, или же ХП выполняете?

а то началось за здравие,а заканчивается за упокойВсе что делается запросами можно сделать в ХП. Все что наворочено в ХП можно сделать запросами.

HandKotразные вещи и делать надо по разномуХотя конечно некоторая разница там все же будет :)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выполнение запроса в базе MS SQL / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]