Ошибка при подключении к ado

   wingl

23.10.15 — 11:06

1С 8.2 ЗУП 2.5 SQL

Всем привет!

Ситуация следующая, создана внешняя обработка, которая запросом собирает данные и пытается все это добро выгрузить в Excel через ADO.

Строка подключения выглядит следующим образом:

«Provider=Microsoft.Jet.OLEDB.4.0;Data Source=»+ИмяФайлаЭксель+»;Extended Properties=»»Excel 8.0;HDR=No;»»;»

Код, на котоом 1С отваливается с ошибкой:

Catalog = Новый COMОбъект(«ADOX.Catalog»);

Catalog.ActiveConnection = СтрокаПодключения; //Ошибка возникает здесь…

Данная внешняя обработка подключена к 1С через механизм «Дополнительные внешние отчеты и обработки». Если её запускать на прямую через этот механизм — всё отлично отрабатывает.

Но при попытке прикрутить это добро к регламентной операции, ситуация в корне меняется. Все рушится с ошибкой:»ВнешняяОбработка.******.МодульОбъекта(143)}: Ошибка при установке значения атрибута контекста (ActiveConnection)»

Общий модуль, к которому обращается регламентное задание, является привилегированным. Подключение и вызов внешней обработки вызывается следующим кодом:

СсылкаНаВнешнююОбработку = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ИмяОбработки);

    
ДвоичныеДанные = СсылкаНаВнешнююОбработку.ХранилищеВнешнейОбработки.Получить();

        
ПутьОбработки = ПолучитьИмяВременногоФайла();

ДвоичныеДанные.Записать(ПутьОбработки);

            
ВнешниеОбработки.Создать(ПутьОбработки, Ложь); //Безопасный режим выключен!

внОбработка.ВыполнитьСервер();

Права у USR1CV8 на папку сохранения файла есть, но все равно отваливается с ошибкой.

Подскажите, в какую сторону копать, уже все перепробовал. Неужели 1С не разрешает пользоваться механизмом ADO во внешних обработках, подключаемых программно?

   Casey1984

1 — 23.10.15 — 11:08

Безопасный режим

   ДенисЧ

2 — 23.10.15 — 11:08

На сервер драйвера Сергей Александрович будет ставить?

   МимохожийОднако

3 — 23.10.15 — 11:08

А где хранятся настройки для этой обработки?

   wingl

4 — 23.10.15 — 11:11

Casey1984

Безопасный режим я отключаю (это видно из кода)

ДенисЧ

Драйвера на сервере стоят, все ок, при ручном запуске обработки на сервере под юзером usr1cv8 все отрабатывает

МимохожийОднако

Не очень понял, о каких настройках идет речь…

   Ёпрст

5 — 23.10.15 — 11:13

дать права на com юзверю, под которым запущена служба агента сервера..если 64 разрядная винда, то прописать коммконнектор + дать права на эксель еще там же, в компонентах com

   wingl

6 — 23.10.15 — 11:19

Ёпрст

Агент 1С запущен под локальным пользователем USR1CV8 на серваке приложений 1С, правильно ли я понимаю, что если я захожу под этим пользователем на этот сервак и под ним прокручиваю обработку в ручную и она отрабатывает, то это значит, что права на все драва включая com настроены верно?

   wingl

7 — 23.10.15 — 11:43

Есть еще какие-нибудь идеи, коллеги? Всю голову сломал…

   Ёпрст

8 — 23.10.15 — 11:43

(6) неа

   lim9

9 — 23.10.15 — 11:50

Точно вопрос с правами! у меня была подобная ситуация, нужно дать права на все возможные процессы тому пользователю, под которым все запускается.

   wingl

10 — 23.10.15 — 11:50

(8) можешь тогда поподробнее объяснить (или дать ссылочку), как и где провернуть эти настройки, буду очень признателен…

   Ёпрст

11 — 23.10.15 — 11:53

   Ёпрст

12 — 23.10.15 — 11:54

Сервак у тя 64 битный поди. да ?

   Ёпрст

13 — 23.10.15 — 11:58

Если лень ковырятся с правами на ком объекты, запусти службу 1с от учетки админа

   wingl

14 — 23.10.15 — 11:58

точно

   Ёпрст

15 — 23.10.15 — 11:58

для начала

   wingl

16 — 23.10.15 — 11:58

(14) это про (12)

   Ёпрст

17 — 23.10.15 — 11:59

(16)

Ну, тебе типа такого нужно в компонентах творить

http://catalog.mista.ru/public/196323/

   Ёпрст

18 — 23.10.15 — 12:00

дать права на эксель и еще папочки насоздавать

   Ёпрст

19 — 23.10.15 — 12:01

где-то валялась более наглядная инструкция, лень искать

   wingl

20 — 23.10.15 — 13:07

Я вот только одного не могу понять, если я пользуюсь ADO, то зачем мне собственно само приложение Excel? Провернул идею с папками из ссылки выше, к сожалению так и не помогло, а вот момент с настройкой DCOM пришлось пропустить, тк на сервере не установлен Excel Application…

   Serginio1

21 — 23.10.15 — 14:32

(20) Там драйвера либо 64 разрядные либо 32 разрядные. Если Ёкселя нет ставь 64 разрядные.

   Serginio1

22 — 23.10.15 — 14:33

   wingl

23 — 23.10.15 — 15:57

(21) на сервере и так стоят 64 разрядные драйвера

   Serginio1

24 — 23.10.15 — 16:17

(23) А для Microsoft.Jet.OLEDB.4.0 появились 64 разрядные дрова?

Используй Provider=Microsoft.ACE.OLEDB.12.0

   Serginio1

25 — 23.10.15 — 16:20

   wingl

26 — 23.10.15 — 16:29

Произошла исключительная ситуация (ADOX.Catalog): Provider cannot be found. It may not be properly installed.

   Serginio1

27 — 23.10.15 — 17:08

(26) Значит не установлен

   wingl

28 — 23.10.15 — 17:12

В ветке регистра из твоей ссылки установлен правильный путь до библиотеки ADO (C:Program FilesCommon FilesMicrosoft SharedOFFICE14ACEOLEDB.DLL)

Файл реально там лежит.

В установленных программах висит Microsoft Access db engine 2010.

Даже не знаю, как еще проверить, установлен он или нет )))

   wingl

29 — 23.10.15 — 17:14

Чисто на всякий случай спрошу, вдруг уже реально перегрелся. Все это я должен провернуть на app сервере 1С?

   Serginio1

30 — 23.10.15 — 17:23

Конечно, проблема то у тебя с регламентным заданием которое крутится в 64 разрядно процессе на сервере 1С

   wingl

31 — 23.10.15 — 17:25

Ну тогда все правильно

   Serginio1

32 — 23.10.15 — 17:33

  

wingl

33 — 23.10.15 — 17:54

Есть! Фоновое задание пошло! Выручила установка следующий драйверов http://www.microsoft.com/download/en/details.aspx?id=23734

Serginiol ОГРОМНОЕ ТЕБЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!

Всем участвующим тоже безумно благодарен!

Уверен, что эта информация еще ни раз кому-нибудь пригодится!

Перейти к контенту

Я
   Nikita

05.03.04 — 10:18

Подключаюсь к базе DBF и выполняю простые команды:

ADO = ÑîçäàòüÎáúåêò(«ADODB.Recordset»);

   ADO.Open(«SELECT * FROM buffer.dbf»,»Driver={Microsoft Visual FoxPro Driver}; SourceType=DBF; SourceDB=D:maykov»,2,2,1);

ADO.AddNew();

ADO.Fields(«NumDoc»).Value = «154468»;

ADO.Update();

После чего выскакивает ошибка!!!

Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC Visual FoxPro Driver]Field DATEDOC does not accept null values.

Самое обидное, что запись в таблицу корректно добавляется, но программа остановлена.

Если в таблице разрешить .Null. значение для всех полей, все проходит ок, но менять базу не хочется!

Заполнять все поля… можно… но вдруг, кто добавт еще поле в базу!!!

  

Nikita

1 — 05.03.04 — 10:47

Решил проблему… но по циклу только… некрасиво :)

Процедура ЗаполнитьПустыми(Base)

    Для К=0 По (Base.Fields.Count()-1) Цикл

       Если (Base.Fields(К).Type = 133) Тогда

            Base.Fields(К).Value = »;

       ИначеЕсли (Base.Fields(К).Type = 129) Тогда

            Base.Fields(К).Value = «»;  

       ИначеЕсли (Base.Fields(К).Type = 131) Тогда

            Base.Fields(К).Value = 0;  

       ИначеЕсли (Base.Fields(К).Type = 11) Тогда

            Base.Fields(К).Value = -1;

       КонецЕсли;

   КонецЦикла;

КонецПроцедуры // ЗаполнитьПустыми()

TurboConf — расширение возможностей Конфигуратора 1С

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Ошибка 209 при подключении к серверу, исчерпано максимальное количество подключений

Здравствуйте.

Некоторые пользователи не могут соединится с сервером, на веб морду тоже не пускает, ошибка 209.
Версия 5.24
Подскажите куда смотреть?

Добрый день.

Ошибка 209 — «исчерпано максимальное количество соединений к серверу».

Live Chat со мной

Да, так пишет сервер. А что мне делать? перезагрузить сервер?
Может есть возможность увеличить количество соединений?

Да, можете перезапустить, но также желательно выяснить куда уходят все ваши подключения.

Live Chat со мной

Пользователи чата штатно отображаются в списке онлайн в админке, но пользователи Kanban, Forum и самой админки пока не попадают в этот список, поэтому желательно закрывать неиспользуемые вкладки с этими сервисами, чтобы они не отбирали подключение.

Live Chat со мной

Админка недоступна.
Перезагрузил сервер. Все подключились.
Тему можно закрыть, спасибо.

Сделали дополнение, чтобы даже если коннекты закончились, в админку можно было войти в любом случае, пусть даже ценой «расстрела» произвольного онлайн-пользователя :)

viewtopic.php?p=25918#p25918

Team lead
Чат со мной

Возможно ли увеличить возможное количество подключений? Сейчас начали активно пользоваться Канбан (очень удобно, спасибо) и стали возникать подобные проблемы.

Конечно, достаточно расширить вашу лицензию на нужное вам количество подключений.

Team lead
Чат со мной

0 / 0 / 5

Регистрация: 09.10.2015

Сообщений: 227

1

Исключение при подключении к серверу

15.09.2017, 13:36. Показов 1818. Ответов 2


Приветствую. Вопрос вот в чём при подключении к серверу если сервер отключен, в средствах диагностики возникает исключение притом не один раз как мне это исключение отловить и выдать ошибку что сервер отключён?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

102 / 24 / 12

Регистрация: 12.12.2013

Сообщений: 209

Записей в блоге: 1

15.09.2017, 13:51

2

Цитата
Сообщение от Graf1385
Посмотреть сообщение

Вопрос вот в чём при подключении к серверу если сервер отключен

Код подключения в студию

0

Graf1385

0 / 0 / 5

Регистрация: 09.10.2015

Сообщений: 227

15.09.2017, 14:05

 [ТС]

3

Лучший ответ Сообщение было отмечено Graf1385 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
try
 {
        if (LocalsqlConnection.State == ConnectionState.Closed)
         {
              LocalsqlConnection.Open();
          } 
 }         
catch (Exception ex)
{
                
}

0

В форме прописываю процедуру для добавления подключения к баз данных access, но последняя не подключается.
Использую среду разработки Delphi XE7.

procedure TfMain.FormCreate(Sender: TObject);
begin
  GetDir(0, DIR);
try
  fDM.ADOConnection1.LoginPrompt := False;
  fDM.ADOConnection1.Connected := False;
    fDM.ADOConnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + DIR +'/DB/DB.mdb;' + 'Persist Security Info=False;';
  fDM.ADOConnection1.Connected := True;
except
  MessageBox(Handle,'Произошла ошибка при подключении к базе данных!','Ошибка!',MB_ICONERROR + MB_OK);
  Application.Terminate;
  end;
end;

Не могу понять в чем ошибка… Помогите советом добрым :)
p.s.: в Data Module Create процедура срабатывает и база подключается. А почему через главную форму нет?


  • Вопрос задан

    более трёх лет назад

  • 165 просмотров

Data Module Create процедура срабатывает и база подключается. А почему через главную форму нет?

Если fDM ещё не создан, то нельзя его использовать.

Пригласить эксперта

Обычно, чтобы понять в чем ошибка, смотрят, как минимум, текст сообщения возникшего исключения, а то и его класс. А не делают «Ой!» и «Application.Terminate».
Как-то так, например:

except
  on E: Exception do
  begin
    MessageBox(Handle,
      'Произошла ошибка при подключении к базе данных!' + sLineBreak 
        + E.ClassName + ': ' + E.Message, 
      'Ошибка!',
      MB_ICONERROR + MB_OK);
    Application.Terminate;
  end;
end;

Ответ на ваш вопрос вам уже написали.


  • Показать ещё
    Загружается…

30 янв. 2023, в 13:52

120000 руб./за проект

30 янв. 2023, в 13:45

500 руб./за проект

30 янв. 2023, в 13:36

100000 руб./за проект

Минуточку внимания

Добрый день, уважаемые Знатоки!
Меня заинтересовала возможность подключения 1С к сторонней базе данных посредством ADO.
В частности у меня 1С 8.1 и база MS SQL server 2005.
С получением данных проблем не возникает, да и с редактированием и удалением тоже. Во всех этих случаях я составлял запрос в Connection.Execute.
Но я вычитал в книжке «!С: ПРЕДПРИЯТИЕ 7.7/8.0 системное программирование», что можно удалить текущую запись и оператором Delete.
Подскажите, пожалуйста, что я делаю не правильно. Я думаю, что причина в используемом провайдере.

Текст обработки:

Connection = Новый COMОбъект("ADODB.Connection");
Connection.ConnectionTimeOut =600;
Connection.CursorLocation = 3;
 Connection.Open("Provider=SQLOLEDB;Password=955938;Data Source=andrey;Persist Security Info=True;User ID=user_1c;Initial Catalog=sait");
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;
Command.CommandText ="select * from nomenclature";
Command.CommandType = 1;
RecordSet = Новый ComОбъект("ADODB.RecordSet");
RecordSet.CursorType = 3;
RecordSet.LockType = 2;
RecordSet = Command.Execute();
Пока RecordSet.EOF() = 0 Цикл
RecordSet.Delete(1);
 RecordSet.MoveNext();
КонецЦикла;

Выдается ошибка:

Ошибка при вызове метода контекста (Delete): Произошла исключительная ситуация (ADODB.Recordset): Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
RecordSet.Delete();

I keep getting an error when trying to open a database using an ADO connection in VBA — I am getting the following error:

Run-time error ‘-2147467259 (80004005)’:
Method ‘Open’ of object ‘_Recordset’ failed

I have checked an re-checked all of my file paths and syntax, and cannot find what is wrong with the code below — can anyone help?

Public Sub PlainTextQuery()

Dim rsData As ADODB.Recordset
Dim sConnect As String
Dim sSQL As String

Dim sCusip As String

sCusip = Trim(Range("cusip").Value)

' Create the connection string
sConnect = "Provider=Microsoft.ACE.OLEDB.12.0; " & _
    "Data Source=C:UsersinternDocumentsNewStuffResiOffers_v1.accdb;"

' Create the SQL statement
sSQL = "SELECT Date, Cusip, Bond, OF, CF, Dealer, Price, Matcher, DayCount, MktValue " & _
    "FROM ResiOffersColor " & _
    "WHERE Cusip = 16163HAE1 " & _
    "ORDER BY Date;"

' Create the recordset object and run the query
Set rsData = New ADODB.Recordset
rsData.Open sSQL, sConnect, adOpenForwardOnly, _
    adLockReadOnly, adCmdText

' Make sure we get records back
If Not rsData.EOF Then
    ' Dump the contents onto the worksheet
    Sheet2.Range("A2").CopyFromRecordset rsData
    ' Close the recordset object
    rsData.Close
Else
    ' Close the recordset object
    rsData.Close
    MsgBox "Error: No records returned.", vbCritical
End If

' Destroy the recordset object
Set rsData = Nothing

End Sub

I keep getting an error when trying to open a database using an ADO connection in VBA — I am getting the following error:

Run-time error ‘-2147467259 (80004005)’:
Method ‘Open’ of object ‘_Recordset’ failed

I have checked an re-checked all of my file paths and syntax, and cannot find what is wrong with the code below — can anyone help?

Public Sub PlainTextQuery()

Dim rsData As ADODB.Recordset
Dim sConnect As String
Dim sSQL As String

Dim sCusip As String

sCusip = Trim(Range("cusip").Value)

' Create the connection string
sConnect = "Provider=Microsoft.ACE.OLEDB.12.0; " & _
    "Data Source=C:UsersinternDocumentsNewStuffResiOffers_v1.accdb;"

' Create the SQL statement
sSQL = "SELECT Date, Cusip, Bond, OF, CF, Dealer, Price, Matcher, DayCount, MktValue " & _
    "FROM ResiOffersColor " & _
    "WHERE Cusip = 16163HAE1 " & _
    "ORDER BY Date;"

' Create the recordset object and run the query
Set rsData = New ADODB.Recordset
rsData.Open sSQL, sConnect, adOpenForwardOnly, _
    adLockReadOnly, adCmdText

' Make sure we get records back
If Not rsData.EOF Then
    ' Dump the contents onto the worksheet
    Sheet2.Range("A2").CopyFromRecordset rsData
    ' Close the recordset object
    rsData.Close
Else
    ' Close the recordset object
    rsData.Close
    MsgBox "Error: No records returned.", vbCritical
End If

' Destroy the recordset object
Set rsData = Nothing

End Sub

В форме прописываю процедуру для добавления подключения к баз данных access, но последняя не подключается.
Использую среду разработки Delphi XE7.

procedure TfMain.FormCreate(Sender: TObject);
begin
  GetDir(0, DIR);
try
  fDM.ADOConnection1.LoginPrompt := False;
  fDM.ADOConnection1.Connected := False;
    fDM.ADOConnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + DIR +'/DB/DB.mdb;' + 'Persist Security Info=False;';
  fDM.ADOConnection1.Connected := True;
except
  MessageBox(Handle,'Произошла ошибка при подключении к базе данных!','Ошибка!',MB_ICONERROR + MB_OK);
  Application.Terminate;
  end;
end;

Не могу понять в чем ошибка… Помогите советом добрым :)
p.s.: в Data Module Create процедура срабатывает и база подключается. А почему через главную форму нет?


  • Вопрос задан

    более трёх лет назад

  • 178 просмотров

Data Module Create процедура срабатывает и база подключается. А почему через главную форму нет?

Если fDM ещё не создан, то нельзя его использовать.

Пригласить эксперта

Обычно, чтобы понять в чем ошибка, смотрят, как минимум, текст сообщения возникшего исключения, а то и его класс. А не делают «Ой!» и «Application.Terminate».
Как-то так, например:

except
  on E: Exception do
  begin
    MessageBox(Handle,
      'Произошла ошибка при подключении к базе данных!' + sLineBreak 
        + E.ClassName + ': ' + E.Message, 
      'Ошибка!',
      MB_ICONERROR + MB_OK);
    Application.Terminate;
  end;
end;

Ответ на ваш вопрос вам уже написали.


  • Показать ещё
    Загружается…

14 июн. 2023, в 03:49

3000 руб./за проект

14 июн. 2023, в 03:45

4000 руб./за проект

14 июн. 2023, в 01:02

5000 руб./за проект

Минуточку внимания

I am trying to open an Access Database connection using ADODB.Connection object through excel VBA but I am receiving an error when opening the connection.

The error is «Object variable or With block variable not set»

I am using excel 2010, my database is in Access 2010 and I have also added the reference to «Microsoft ActiveX Data Objects 2.8 library»

Any help would be highly appreciated

Dim con As ADODB.Connection

con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Usersvk10084DesktopJobsPnLMyDatabaseFilesDatabase1.accdb;Persist Security Info=False;"

Edit:

Below is the whole code

Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sconString As String
Dim sdbpath As String
Dim sCommand As String

sdbpath = ThisWorkbook.Path & "Database1.accdb"
sCommand = "INSERT INTO Employees VALUES('Vikas Kumar', '263763')"

Dim cmd As New ADODB.Command

con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Usersvk10084DesktopJobsPnLPOC on AccessDatabase1.accdb;Persist Security Info=False;"


cmd.ActiveConnection = con

cmd.CommandText = sCommand
cmd.Execute

con.Close

ashleedawg's user avatar

ashleedawg

20.1k8 gold badges72 silver badges104 bronze badges

asked Nov 28, 2016 at 14:11

braceyourself's user avatar

6

I just added a New to the connection and slightly reordered the code to make it more readable. Does this work?

Dim Con As New ADODB.Connection
With Con        
    .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Usersvk10084DesktopJobsPnLPOC on AccessDatabase1.accdb;Persist Security Info=False;"
    .Open
End With

Dim Cmd As New ADODB.Command
With Cmd
    .ActiveConnection = Con
    .CommandType = adCmdText
    .CommandText = sCommand
    .Execute
End With

answered Nov 28, 2016 at 14:43

Martin Dreher's user avatar

Martin DreherMartin Dreher

1,5142 gold badges12 silver badges22 bronze badges

0

Помогаю со студенческими работами здесь

При добавдении ADO.NET Entity Data Model в проект вылетает ошибка
Создал Dynamic Data Web Application, пытаюсь добавить ADO.NET Entity Data Model, выскакивает окно…

C#, ADO.NET. Как защитить файл базы данных Access от удаления пользователем через проводник?
VS 2010, framework 4.

Добавляю в проект ссылку "Microsoft ADO Ext. 2.8 for DDL and Security"….

Ошибка при подключении базы данных
Сайт сделан на на Yii2-advanced. Сервер- Hostinger
Файлы были залиты на сервер, база данных через…

Ошибка при подключении базы данных
При подключении базы данных выдаёт такую ошибку

Ошибка при подключении базы данных к проекту
Здравствуйте, можете пожалуйста помочь. У меня возникает ошибка при подключении базы данных к…

Ошибка при подключении базы данных к проэкту
осваиваю ADO.NET
подключаю базу данных через забрасывание на форму BindingSource и прописывание в…

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

Или воспользуйтесь поиском по форуму:

Понравилась статья? Поделить с друзьями:
  • Ошибка при подключении информационной базы класс не зарегистрирован
  • Ошибка при подключении интернета через телефон
  • Ошибка при подключении интернета с мобильного
  • Ошибка при подключении интернета на телевизоре 6003
  • Ошибка при подключении интернета код 106