Имя: Пароль:
1C
1С v8
ADODB.CONNECTION - open() вылетает с ошибкой если год - 2012..
0 vechiy
 
18.06.12
18:26
В общем, подключаюсь к sql-базе и выполняю запрос..

SQLConnection = Новый COMObject("ADODB.Connection");
SQLConnection.Open("Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=***;Initial Catalog=***;Data Source=***");
Recordset = Новый COMObject("ADODB.Recordset");
Recordset.ActiveConnection = SQLConnection;

СтрокаSQL="DECLARE @p_Date Date='2012-03-31'
|  DECLARE @DateN Date='2012-01-01'
|SET @p_Date='"+ДатаКонцаПериода+"' -- дата конца периода
|SET @DateN='"+ДатаНачалаПериода+"' --дата начала периода
|  SELECT ****";

Recordset.Open(СтрокаSQL,SQLConnection,2,3);
Recordset.MoveFirst();
SQLConnection.Close();


Собственно, если одна из дат - в 2012 году - при open() возникает ошибка
{Форма.Форма.Форма(90)}: Ошибка при вызове метода контекста (Open)
Recordset.Open(СтрокаSQL,SQLConnection,2,3);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания запроса истекло

в 2011, как ни странно, все в порядке..
в management studio запрос отлично отрабатывает с любым периодом
в чем может быть дело?)
1 smaharbA
 
18.06.12
18:31
SET DATEFORMAT dmy; ?
2 alexei366
 
18.06.12
18:31
Может и не то, просто помню брал данные с двух мс баз , были на разных серверах и формат даты у них был разный, типа гггг-мм-дд и гггг-дд-мм. Вдруг у тя в 2011 году дни не больше 12 были
3 vechiy
 
19.06.12
09:10
как увеличить время ожидания запроса?:) Видимо, проблема в этом
4 vechiy
 
19.06.12
16:49
или, что означают параматетры 2 и 3 в Recordset.Open(СтрокаSQL,SQLConnection,2,3); ?
5 shuhard
 
19.06.12
16:49
(4) adOpenDynamic, adLockOptimistic
6 smaharbA
 
19.06.12
16:54
Команда.CommandText=Стр;
Команда.CommandTimeout=0;
Записи=Команда.execute();
7 vechiy
 
19.06.12
16:56
Периодически вываливается еще вот с этим:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.


ну и иногда и срабатывает как нужно, видимо, от нагрузки на сервер зависит время запроса
8 smaharbA
 
19.06.12
16:59
cv (6)
9 smaharbA
 
19.06.12
17:00
см (6)
10 vechiy
 
19.06.12
17:04
что такое "записи" в моем коде? СтрокаSQL?
11 smaharbA
 
19.06.12
17:10
(10) это результат запроса, тот самый рекордсет
12 vechiy
 
19.06.12
17:36
так и подумал сначала.. но ругается что нет такого свойства
13 vechiy
 
19.06.12
17:37
или туплю.. что тогда такое команда?)
14 vechiy
 
19.06.12
18:05
внесите ясность если знаете) спасибо) не находится что-то ничего про это свойство
15 Jaap Vduul
 
19.06.12
18:20
SQLConnection.CommandTimeout = 0;
Recordset = SQLConnection.Execute(СтрокаSQL);
16 Vladal
 
19.06.12
18:31
Дату в SQL передавай в соответствии с региональными настройками самого сервера SQL.
17 vechiy
 
20.06.12
09:28
Спасибо) с утра все понятней

SQLConnection.CommandTimeout = 0;
вот так нормуль