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

  

ils108

25.04.17 — 12:06

Добра всем! Подключаюсь к базе следующим образом.

ConnectionString =  «» +

    «Driver={Driver do Microsoft Paradox (*.db )};» +

    «DriverId=538; FIL=Paradox 5.X; » +

    «PWD=» + Пароль + «;» +

    «DefaultDir=» + КаталогФайла + «; DBQ=» + КаталогФайла + «;» +  

    «DataCodePage=ASCII»;

    

    cn = Новый COMОбъект(«ADODB.Connection»);

    cn.Open(ConnectionString);

    

    ТекстЗапроса = «Select * from » + ИмяФайла;

    rs = Новый COMОбъект(«ADODB.Recordset»);

    rs.Open(ТекстЗапроса, cn);

Выскакивает следующая ошибка

{Обработка.ЗагрузкаИзRKeeper.МодульОбъекта(243)}: Ошибка при вызове метода контекста (Open)

    cn.Open(ConnectionString);

по причине:

Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

  

ils108

1 — 25.04.17 — 13:06

http://shot.qip.ru/00Tn5Q-418qb6UGi/

драйвер есть, он x32, кто-то знает как его использовать или где взять для x64 версии?

  

ils108

2 — 08.05.17 — 10:28

ап

  

ils108

3 — 11.05.17 — 07:41

Подскажите, что в данном случае выступает как источник данных? и где указать драйвер по умолчанию :)

  

МихаилМ

4 — 11.05.17 — 08:12

  

ils108

5 — 11.05.17 — 08:40

(4) Михаил, можете пояснить?

  

МихаилМ

6 — 11.05.17 — 08:58

  

ils108

7 — 11.05.17 — 10:15

с другой стороны клиент 1С же x32? и по идее драйвер как раз и должен быть x32 независимо от того, что винда x64?

  

МихаилМ

8 — 11.05.17 — 10:27

  

ils108

9 — 11.05.17 — 10:43

(8) у меня файловая версия, не серверная

  

МихаилМ

10 — 11.05.17 — 10:51

(9) не важно . читайте всю ветку.

  

ils108

11 — 11.05.17 — 12:23

скурил все эти ссылки, но так и взлетает.

когда пытаюсь протестить через udl

http://shot.qip.ru/00TvW3-6f35S7oPa/

  

ils108

12 — 11.05.17 — 12:26

(10) через Viewer получилось открыть, но все равно непонятно как из 1Ски подключаться

  

ils108

13 — 11.05.17 — 12:30

  

ils108

14 — 11.05.17 — 12:56

Михаил, выручайте, судя по всему больше никто не зашарил этот момент :)

  

МихаилМ

15 — 11.05.17 — 13:51

добавьте к «Driver={Driver do Microsoft Paradox (*.db )};»

строку из ViewODBC.html

  

ils108

16 — 11.05.17 — 14:13

(15) попробовал, такая же ошибка

  

Fragster

17 — 11.05.17 — 14:15

создать пустой файл .udl, открыть двойным кликом, настроить подключение, сохранить, открыть блокнотом

  

ils108

18 — 11.05.17 — 14:17

(17) хорошая идея, но есть ограничение связанное с тем, что там нет нужного драйвера

  

Fragster

19 — 11.05.17 — 14:18

(18) так поставь его

  

ils108

20 — 11.05.17 — 14:22

(19) нет такого драйвера для x64, да и зачем он если 1Ска x32?

  

ils108

21 — 11.05.17 — 14:30

АДО = Новый COMОбъект(«ADODB.Connection»);

АДО.ConnectionString = «Provider=MSDASQL;UID=ODBC;DSN=Personal»;

АДО.ConnectionTimeout = 0;

АДО.Open();

попробовал цепануться через созданное подключение, ругается на разные архитектуры

Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу.

  

Fragster

22 — 11.05.17 — 14:53

  

ils108

23 — 11.05.17 — 15:00

так, немного сдвинулся, оказалось, что 1Ску накатил x64. Переставил, получается теперь подключиться, но

}: Ошибка при вызове метода контекста (Open)

    rs.Open(ТекстЗапроса, cn);

по причине:

Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Paradox] Внешняя таблица не имеет предполагаемый формат.

  

ils108

24 — 11.05.17 — 15:08

таблица .DB естественно

  

МихаилМ

25 — 11.05.17 — 15:11

(24)

если в ViewODBC таблица читается, то в 1с читается.

иначе ищите другой драйвер

  

ils108

26 — 11.05.17 — 15:17

(25) таблица отображается, но не открывается

http://shot.qip.ru/00TvW3-2f35S7oPl

  

МихаилМ

27 — 11.05.17 — 15:20

  

ils108

28 — 12.05.17 — 07:23

Залейте пожалуйста драйвер или подскажите ссылку,  не могу нашарить в интернете почему-то

  

ils108

29 — 12.05.17 — 07:55

они в файлике odbcjt32.dll лежат

  

Бертыш

30 — 12.05.17 — 17:08

У меня родственная проблема. Только у меня вылетает на уровне

Новый COMОбъект(«ADODB.Connection»);

  

Franchiser

31 — 12.05.17 — 17:28

Драйвер настроен через х32 оснастку?

  

МихаилМ

32 — 12.05.17 — 18:33

(28)

выкладывайте файл-таблицу из бд.

чтобы подобрать драйвер

  

ils108

33 — 16.05.17 — 09:21

(31) [url=http://www.fayloobmennik.net/6989928]Categ.db[/url]

залил табличку.

у меня вышло очень странным образом на данный момент.

// цепляемся через пользовательский DSN

_АДО = Новый COMОбъект(«ADODB.Connection»);

_АДО.ConnectionString = «Provider=MSDASQL;UID=ODBC;DSN=Para»;

_АДО.ConnectionTimeout = 0;

_АДО.Open();     

ConnectionString =  «» +

«CollatingSequence=ASCII;DefaultDir=F:1srkeeperRK7 — DB;Driver={Driver do Microsoft Paradox (*.db )};DriverId=538;FIL=Paradox 5.X;FILEDSN=F:1srkeeperRK7 — DBParadox.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;ParadoxNetPath=C:WINDOWSsystem32;ParadoxNetStyle=4.x;ParadoxUserName=admin;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;DataCodePage=ASCII;»;

т.е. сначала загружаем DSN, потом подключаюсь по строке. Файлы в таком случае читает, но там кракозябры

  

ils108

34 — 16.05.17 — 09:22

  

ils108

35 — 16.05.17 — 09:22

(31) пробовал и так и так

  

ils108

36 — 16.05.17 — 10:24

на данный момент пришел к загрузке

ConnectionString =  «» + «Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir=» +

ТестКаталог + «;Dbq=» +ТестКаталог+ «;CollatingSequence=ASCII;»;

cn = Новый COMОбъект(«ADODB.Connection»);

cn.Open(ConnectionString);

ТекстЗапроса = «Select * from » + ИмяФайла;

rs = Новый COMОбъект(«ADODB.Recordset»);

rs.Open(ТекстЗапроса, cn);

и т.д.

данные загружает, но там кракозябры (

  

ils108

37 — 16.05.17 — 10:30

  

ils108

38 — 16.05.17 — 10:33

через Paradox Data Editor смотрю — данные в норме.

через ODBC Viewer  — кракозябры

  

Вафель

39 — 16.05.17 — 10:35

кодировка не та

  

ils108

40 — 16.05.17 — 10:39

(39) согласен =)

не могу понять как настроить

  

ils108

41 — 17.05.17 — 12:49

  

ils108

42 — 17.05.17 — 14:02

ап

Добрый день, уважаемые Знатоки!
Меня заинтересовала возможность подключения 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();

В форме прописываю процедуру для добавления подключения к баз данных 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С 8.3. Имеем 1С 8.3.5.15.17, через MSSQL2008, MSOffice 2007. Всё лицензионное.
Недавно перешли с 8.2 на 8.3 . До переход использовалась специальная процедура: записать в file MSAccess2007 некоторую информацию, выглядело это так:

1C
1
2
3
4
5
6
7
8
9
10
    СтрокаПодключения="Provider=Microsoft.Ace.OLEDB.12.0;Data Source=E:MyDBMyFile.accDB;Persist Security Info=False;";
    Connection=Новый ComObject("ADODB.Connection");
    // Подключение
    Попытка
        Connection.Open(СтрокаПодключения);
    Исключение
        Сообщить("Ошибка подключения к Access: " + ОписаниеОшибки());
        Вовзрат;
    КонецПопытки;
    // работаем с accDB

И всё работало на ура без всяких проблем.
После перехода на 8.3 столкнулся с проблемою, что Open не даёт соединения — просто упорно выдаёт ошибку.

Ошибка подключения к Access: {ОбщийМодуль.АС_ОСЧ.Модуль(212)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Access Database Engine): ‘E:MyDBMyFile.accDB’ is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.

Ошибки на создания ComObject нет. Появляется на любой машине с любыми правами.
Естественно (для тестов) диск Е взят локальный (не сетевой) к базе вообще (MyFile.accDB) вообще никто не подключен; запускается от имени администратора — т.е. все полные права. Если взять запустить через WIndows->RUN «E:MyDBMyFile.accDB», то всё открывается, всё видно. Для тестов вообщен сделал E:MyDBMyFile.accDB как простой file без каких-либо ограничений.
Пробовал совершенно разные варианты команды «СтрокаПодключения» в различных исполнениях — ничего, всё в одном и том же: не открвает accDB никак.
Пробовал установить с Microsoft’а «AccessDatabaseEngine» — не помогает.

Самое интересное… При этом код

1C
1
2
3
4
5
6
7
8
9
10
11
12
    СтрокаПодключения="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=e:MyDBbook1.xlsx;Extended Properties=Excel 12.0;";
    // создание соединения
        Connection=Новый ComObject("ADODB.Connection");
    // Подключение
    Попытка
        Connection.Open(СтрокаПодключения);
    Исключение
        Возврат
        Сообщить("Ошибка подключения к EXCEL: " + ОписаниеОшибки());
        Возврат
    КонецПопытки;
    сообщить("УСПЕШНО EXCEL");

работает успешно.

Большое спасибо за комментарии.

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

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

эта строка:

WebSecurity.InitializeDatabaseConnection(connectionStringName: "DefaultConnection", userTableName: "UserProfile", userIdColumn: "UserID", userNameColumn: "UserName", autoCreateTables: true);

бросает:

‘.ArgumentException в системе.Данные.DLL но не был обработан в пользовательском коде

дополнительная информация: Ключевое слово не поддерживается: «метаданные».

моя строка подключения:

add name="DefaultConnection" connectionString="metadata=res://*/TalyllynModel.csdl|res://*/TalyllynModel.ssdl|res://*/TalyllynModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=***********;initial catalog=********;persist security info=True;user id=*********;password=********;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.SqlClient" /></connectionStrings>

Не уверен, где я буду неправильно.

9 ответов


строка, которую вы передали, не является допустимой строкой подключения к базе данных, это строка подключения EF который содержит строку подключения SQL Server в его . Безопасные переводы в интернете.InitializeDatabaseConnection ожидает допустимую строку подключения к базе данных

чтобы избежать разбора строки подключения самостоятельно, вы можете использовать EntityConnectionStringBuilder класс для анализа строки и извлечения строки подключения к базе данных из ее ProviderConnectionString свойства

56

автор: Panagiotis Kanavos


когда это случилось со мной, это было, потому что строка подключения была:

providerName="System.Data.SqlClient"

а надо:

providerName="System.Data.EntityClient"

потому что, как было сказано в другом ответе, это строка соединения EF.


просто добавьте еще одну возможность (с которой я столкнулся) — это может быть так, если вы разрабатываете/поддерживаете Azure WebApp, используя строку подключения, сохраненную в настройках приложения Azure.

рядом с каждой строкой подключения в настройках приложения находится раскрывающийся список для типа строки подключения — очень легко забыть установить это значение в «пользовательский» для значений Entity Framework и оставить его по умолчанию (база данных SQL) — что также вызывает вышеуказанную ошибку.


Я собираюсь выбросить еще один ответ, на случай, если кто-то еще столкнется с этим через тот же странный сценарий, что и я.

для начала, как говорили другие, строки подключения ADO и строки подключения EF отличаются.

строка соединения ADO содержит ряд полей, разделенных точкой с запятой, которые могут очень от одного типа соединения к другому, но вы обычно видите «источник данных=xxx», «начальный каталог=yyy» и т. д. Вы не посмотреть «metadata=zzz».

строка соединения EF имеет ту же структуру, но имеет «metadata=zzz» и «provider connection string=www», где «www» — это экранированная строка соединения ADO.

таким образом, обычный формат строки соединения ADO:

data source=myserver;
initial catalog=mydatabase;
Persist Security Info=True;
User ID=myusername;
Password=mypassword;
MultipleActiveResultSets=True

в то время как обычный формат для строки подключения EF:

metadata=res://*/MyDbContext.csdl|
    res://*/MyDbContext.ssdl|
    res://*/MyDbContext.msl;
provider=System.Data.SqlClient;
provider connection string=&quot;
    data source=myserver;
    initial catalog=mydatabase;
    Persist Security Info=True;
    User ID=myusername;
    Password=mypassword;
    MultipleActiveResultSets=True;
    application name=EntityFramework
    &quot;

большинство людей, которые сталкиваются с этой проблемой, похоже, вырезали строку подключения EF и вставили ее в место, которое нужна строка подключения ADO. В сущности, я сделал то же самое, но процесс был не столь ясен.

в моем случае у меня было веб-приложение, которое использовало EF, поэтому его веб.настройте правильно содержащиеся строки подключения EF.

я опубликовал пакет развертывания, и процесс запрашивает строки подключения, которые будут использоваться при развертывании. Они хранятся в сгенерированных SetParameters пакета развертывания.XML-файл.

Я вырезал и вставил EF строки подключения в поля ввода диалога публикации.

я развернул веб-приложение, попытался получить к нему доступ и получил ошибку «Ключевое слово не поддерживается: метаданные».

чего я не понимал, так это того, что инструмент публикации MS ожидал строку соединения ADO, и что, учитывая это, он построит строку соединения EF.

результатом стало то, что SetParameters.xml и моя развернутая сеть.config имел строки подключения, которые выглядели так это:

metadata=res://*/MyDbContext.csdl|
    res://*/MyDbContext.ssdl|
    res://*/MyDbContext.msl;
provider=System.Data.SqlClient;
provider connection string=&quot;
    metadata=res://*/XxDbContext.csdl|
        res://*/XxDbContext.ssdl|
        res://*/XxDbContext.msl;
    provider=System.Data.SqlClient;
    provider connection string=&amp;quot;
        data source=myserver;
        initial catalog=mydatabase;
        Persist Security Info=True;
        User ID=myusername;
        Password=mypassword;
        MultipleActiveResultSets=True;
        application name=EntityFramework
        &amp;quot;
    &quot;"

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

другими словами, когда вы вставляете строки подключения в диалоги публикации, вам нужно вставить строку подключения ADO, а не строку подключения EF, даже если у вас есть в интернете.конфигурация, из которой вы копируете, — это соединение EF строка.

вы можете извлечь строку подключения ADO из поля строки подключения поставщика строки подключения EF, и это то, что вам понадобится, если вы используете то же соединение в развертывании, что и в локальной разработке.


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

обратите внимание, как он проверяет, является ли это строка подключения Entity Framework, и если да, то извлекает часть «строка подключения поставщика», которая затем может быть передана в SqlConnectionStringBuilder:

Если Я не сделай это, я бы стал таким противным»Keyword Not Supported: Metadata» ошибка.

if (connectionString.ToLower().StartsWith("metadata="))
{
    System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder efBuilder = new System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder(connectionString);
    connectionString = efBuilder.ProviderConnectionString;
}

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);
DatabaseServer = builder.DataSource;             //  eg "MikesServer"
DatabaseName = builder.InitialCatalog;           //  eg "Northwind"

Привет,

на мой взгляд, строка соединения для ADO.NET (в этом
caseSqlConnection)не может использовать метаданные. Вы используете один конкретный
для Entity Framework. В ADO.NET должно быть что-то вроде:

"data source=KAPS-PCKAPSSERVER;initial catalog=vibrant;integrated security=True"

Итак, чтобы подвести итог, вам нужны две отдельные строки подключения, одна для EF
и один для ADO.NET.

соус:http://forums.iis.net/post/2097280.aspx

0

автор: Muhammad Rehan Qadri


для Azure Web App тип строки подключения не имеет система».Данные.Entityclient создан», таможни работает хорошо.

enter image description here


проверьте это место

<add name="ConnectionString" connectionString="Data Source=SMITH;Initial Catalog=db_ISMT;Persist Security Info=True;User ID=sa;Password=@darksoul45;MultipleActiveResultSets=True;Application Name=EntityFramework"
  providerName="System.Data.SqlClient" />

Как вы можете видеть, есть две строки подключения один для ADO и другой для системы входа в систему или что вы хотите. В моем случае ConnectionString предназначен для системы входа в систему, поэтому я использовал это в: —

    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
    SqlCommand cmd = null;
    SqlDataReader dr = null;
    protected void Page_Load(object sender, EventArgs e)

старый пост, но мое решение,

к сожалению, это не решило его для меня, используя функции Azure, разговаривающие с отдельным проектом (библиотекой классов) с EDMX.

мне пришлось редактировать контекст.Конструктор класса CS, заменяющий

: base ("Entities")

С

: base (ConfigurationManager.ConnectionStrings["Entities"].ConnectionString)

надеюсь, это может помочь кому-то еще нужна.


   ils108

25.04.17 — 12:06

Добра всем! Подключаюсь к базе следующим образом.

ConnectionString =  «» +

    «Driver={Driver do Microsoft Paradox (*.db )};» +

    «DriverId=538; FIL=Paradox 5.X; » +

    «PWD=» + Пароль + «;» +

    «DefaultDir=» + КаталогФайла + «; DBQ=» + КаталогФайла + «;» +  

    «DataCodePage=ASCII»;

    
    cn = Новый COMОбъект(«ADODB.Connection»);

    cn.Open(ConnectionString);

    
    ТекстЗапроса = «Select * from » + ИмяФайла;

    rs = Новый COMОбъект(«ADODB.Recordset»);

    rs.Open(ТекстЗапроса, cn);

Выскакивает следующая ошибка

{Обработка.ЗагрузкаИзRKeeper.МодульОбъекта(243)}: Ошибка при вызове метода контекста (Open)

    cn.Open(ConnectionString);

по причине:

Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

   ils108

1 — 25.04.17 — 13:06

http://shot.qip.ru/00Tn5Q-418qb6UGi/

драйвер есть, он x32, кто-то знает как его использовать или где взять для x64 версии?

   ils108

2 — 08.05.17 — 10:28

ап

   ils108

3 — 11.05.17 — 07:41

Подскажите, что в данном случае выступает как источник данных? и где указать драйвер по умолчанию :)

   МихаилМ

4 — 11.05.17 — 08:12

   ils108

5 — 11.05.17 — 08:40

(4) Михаил, можете пояснить?

   МихаилМ

6 — 11.05.17 — 08:58

   ils108

7 — 11.05.17 — 10:15

с другой стороны клиент 1С же x32? и по идее драйвер как раз и должен быть x32 независимо от того, что винда x64?

   МихаилМ

8 — 11.05.17 — 10:27

   ils108

9 — 11.05.17 — 10:43

(8) у меня файловая версия, не серверная

   МихаилМ

10 — 11.05.17 — 10:51

(9) не важно . читайте всю ветку.

   ils108

11 — 11.05.17 — 12:23

скурил все эти ссылки, но так и взлетает.

когда пытаюсь протестить через udl

http://shot.qip.ru/00TvW3-6f35S7oPa/

   ils108

12 — 11.05.17 — 12:26

(10) через Viewer получилось открыть, но все равно непонятно как из 1Ски подключаться

   ils108

13 — 11.05.17 — 12:30

   ils108

14 — 11.05.17 — 12:56

Михаил, выручайте, судя по всему больше никто не зашарил этот момент :)

   МихаилМ

15 — 11.05.17 — 13:51

добавьте к «Driver={Driver do Microsoft Paradox (*.db )};»

строку из ViewODBC.html

   ils108

16 — 11.05.17 — 14:13

(15) попробовал, такая же ошибка

   Fragster

17 — 11.05.17 — 14:15

создать пустой файл .udl, открыть двойным кликом, настроить подключение, сохранить, открыть блокнотом

   ils108

18 — 11.05.17 — 14:17

(17) хорошая идея, но есть ограничение связанное с тем, что там нет нужного драйвера

   Fragster

19 — 11.05.17 — 14:18

(18) так поставь его

   ils108

20 — 11.05.17 — 14:22

(19) нет такого драйвера для x64, да и зачем он если 1Ска x32?

   ils108

21 — 11.05.17 — 14:30

АДО = Новый COMОбъект(«ADODB.Connection»);

АДО.ConnectionString = «Provider=MSDASQL;UID=ODBC;DSN=Personal»;

АДО.ConnectionTimeout = 0;

АДО.Open();

попробовал цепануться через созданное подключение, ругается на разные архитектуры

Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу.

   Fragster

22 — 11.05.17 — 14:53

   ils108

23 — 11.05.17 — 15:00

так, немного сдвинулся, оказалось, что 1Ску накатил x64. Переставил, получается теперь подключиться, но

}: Ошибка при вызове метода контекста (Open)

    rs.Open(ТекстЗапроса, cn);

по причине:

Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Paradox] Внешняя таблица не имеет предполагаемый формат.

   ils108

24 — 11.05.17 — 15:08

таблица .DB естественно

   МихаилМ

25 — 11.05.17 — 15:11

(24)

если в ViewODBC таблица читается, то в 1с читается.

иначе ищите другой драйвер

   ils108

26 — 11.05.17 — 15:17

(25) таблица отображается, но не открывается

http://shot.qip.ru/00TvW3-2f35S7oPl

   МихаилМ

27 — 11.05.17 — 15:20

   ils108

28 — 12.05.17 — 07:23

Залейте пожалуйста драйвер или подскажите ссылку,  не могу нашарить в интернете почему-то

   ils108

29 — 12.05.17 — 07:55

они в файлике odbcjt32.dll лежат

   Бертыш

30 — 12.05.17 — 17:08

У меня родственная проблема. Только у меня вылетает на уровне

Новый COMОбъект(«ADODB.Connection»);

   Franchiser

31 — 12.05.17 — 17:28

Драйвер настроен через х32 оснастку?

   МихаилМ

32 — 12.05.17 — 18:33

(28)

выкладывайте файл-таблицу из бд.

чтобы подобрать драйвер

   ils108

33 — 16.05.17 — 09:21

(31) [url=http://www.fayloobmennik.net/6989928]Categ.db[/url]

залил табличку.

у меня вышло очень странным образом на данный момент.

// цепляемся через пользовательский DSN

_АДО = Новый COMОбъект(«ADODB.Connection»);

_АДО.ConnectionString = «Provider=MSDASQL;UID=ODBC;DSN=Para»;

_АДО.ConnectionTimeout = 0;

_АДО.Open();     

ConnectionString =  «» +

«CollatingSequence=ASCII;DefaultDir=F:1srkeeperRK7 — DB;Driver={Driver do Microsoft Paradox (*.db )};DriverId=538;FIL=Paradox 5.X;FILEDSN=F:1srkeeperRK7 — DBParadox.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;ParadoxNetPath=C:WINDOWSsystem32;ParadoxNetStyle=4.x;ParadoxUserName=admin;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;DataCodePage=ASCII;»;

т.е. сначала загружаем DSN, потом подключаюсь по строке. Файлы в таком случае читает, но там кракозябры

   ils108

34 — 16.05.17 — 09:22

   ils108

35 — 16.05.17 — 09:22

(31) пробовал и так и так

   ils108

36 — 16.05.17 — 10:24

на данный момент пришел к загрузке

ConnectionString =  «» + «Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir=» +

ТестКаталог + «;Dbq=» +ТестКаталог+ «;CollatingSequence=ASCII;»;

cn = Новый COMОбъект(«ADODB.Connection»);

cn.Open(ConnectionString);

ТекстЗапроса = «Select * from » + ИмяФайла;

rs = Новый COMОбъект(«ADODB.Recordset»);

rs.Open(ТекстЗапроса, cn);

и т.д.

данные загружает, но там кракозябры (

   ils108

37 — 16.05.17 — 10:30

   ils108

38 — 16.05.17 — 10:33

через Paradox Data Editor смотрю — данные в норме.

через ODBC Viewer  — кракозябры

   Вафель

39 — 16.05.17 — 10:35

кодировка не та

   ils108

40 — 16.05.17 — 10:39

(39) согласен =)

не могу понять как настроить

   ils108

41 — 17.05.17 — 12:49

  

ils108

42 — 17.05.17 — 14:02

ап

Добрый день, уважаемые Знатоки!
Меня заинтересовала возможность подключения 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();

Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.11.2011

Репутация: нет
Всего: нет

Код
ADOConnection1->ConnectionString=»Provider=Microsoft.Jet.OLEDB.4.0;Data Source=»+BasePath+»;Persist Security Info=False»;
ADOConnection1->Open();
ADOTable1->TableName=»MyTName»;
ADOTable1->Active=true;
Данкинг

Yersinia pestis

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130

Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.11.2011

Репутация: нет
Всего: нет

Код
UnicodeString ExePath=ExtractFilePath(Application->ExeName);
ADOConnection1->ConnectionString=»Provider=Microsoft.Jet.OLEDB.4.0;Data Source=»+ExePath+»Моя база.mdb;User/>

не помогает!
Пробовал в корень диска D положить и назвать базу без русских букв — естественно тоже не помогло

Данкинг

Yersinia pestis

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130

Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.11.2011

Репутация: нет
Всего: нет

Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.11.2011

Репутация: нет
Всего: нет

Код
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:myFoldermyAccess2007file.accdb;Persist Security Info=False;

Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.11.2011

Репутация: нет
Всего: нет

Бывалый

Профиль
Группа: Участник
Сообщений: 158
Регистрация: 26.11.2005

Репутация: нет
Всего: 2

Цитата(Shift1834 @ 10.11.2011, 12:06 )
Запустите пожалуйста этот файлик (621 КВ) у кого Win 7 или Vista.

Запустил на обоих ноутах, XP32, Win7 64..
и там и там все норм

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »

[ Время генерации скрипта: 0.1217 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Читайте также:  40 b5511u mad4g прошивка

Adblock
detector

Добрый день, всем.
Буду признателен за советы, мысли, как решить неожиданно возникшую проблему с 1С 8.3. Имеем 1С 8.3.5.15.17, через MSSQL2008, MSOffice 2007. Всё лицензионное.
Недавно перешли с 8.2 на 8.3 . До переход использовалась специальная процедура: записать в file MSAccess2007 некоторую информацию, выглядело это так:

1C
1
2
3
4
5
6
7
8
9
10
    СтрокаПодключения="Provider=Microsoft.Ace.OLEDB.12.0;Data Source=E:MyDBMyFile.accDB;Persist Security Info=False;";
    Connection=Новый ComObject("ADODB.Connection");
    // Подключение
    Попытка
        Connection.Open(СтрокаПодключения);
    Исключение
        Сообщить("Ошибка подключения к Access: " + ОписаниеОшибки());
        Вовзрат;
    КонецПопытки;
    // работаем с accDB

И всё работало на ура без всяких проблем.
После перехода на 8.3 столкнулся с проблемою, что Open не даёт соединения — просто упорно выдаёт ошибку.

Ошибка подключения к Access: {ОбщийМодуль.АС_ОСЧ.Модуль(212)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Access Database Engine): ‘E:MyDBMyFile.accDB’ is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.

Ошибки на создания ComObject нет. Появляется на любой машине с любыми правами.
Естественно (для тестов) диск Е взят локальный (не сетевой) к базе вообще (MyFile.accDB) вообще никто не подключен; запускается от имени администратора — т.е. все полные права. Если взять запустить через WIndows->RUN «E:MyDBMyFile.accDB», то всё открывается, всё видно. Для тестов вообщен сделал E:MyDBMyFile.accDB как простой file без каких-либо ограничений.
Пробовал совершенно разные варианты команды «СтрокаПодключения» в различных исполнениях — ничего, всё в одном и том же: не открвает accDB никак.
Пробовал установить с Microsoft’а «AccessDatabaseEngine» — не помогает.

Самое интересное… При этом код

1C
1
2
3
4
5
6
7
8
9
10
11
12
    СтрокаПодключения="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=e:MyDBbook1.xlsx;Extended Properties=Excel 12.0;";
    // создание соединения
        Connection=Новый ComObject("ADODB.Connection");
    // Подключение
    Попытка
        Connection.Open(СтрокаПодключения);
    Исключение
        Возврат
        Сообщить("Ошибка подключения к EXCEL: " + ОписаниеОшибки());
        Возврат
    КонецПопытки;
    сообщить("УСПЕШНО EXCEL");

работает успешно.

Большое спасибо за комментарии.

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

Содержание:

1.       Формирование объекта ADOdb.Connection

2.       Отправка команды серверу

3.       Получение и обработка результата работы команды

В данной статье будет рассмотрено взаимодействие 1С и ADOdb. Но вначале вкратце опишем, что из себя представляет ADOdb. Итак, ADOdb – это библиотека-функция для программного обеспечения, которая создает прикладной интерфейс для способа доступа к базам данных таких языков, как Python и PHP. Данная библиотека даёт разработчику инструменты, которые позволяют делать приложения не программируя каждый возможный тип источника данных. Также используя ADOdb, программист 1С получает возможность перемены в СУБД (Система управления базами данных), не внося исправлений в главную часть кода.

ADOdb может применяться совместно с системами 1С, например, для получения доступа к таблицам в базе данных 1С при помощи методов ADO. Методы ADO и SQL-DMO разрешают исполнять командование доступом и модификацию данных при помощи функций T-SQL (расширение SQL). В обоих случаях порядок действий будет одинаковым. Рассмотрим же его подробнее!  


1.     Формирование объекта ADOdb.Connection

формирование объекта в ADOdb.Connection

Формирование объекта ADOdb.Connection

Реализовали мы данное действие в глобальном модуле, то есть существует объект до тех пор, пока сеанс в 1С открыт – по окончанию работы удалять не нужно. 

2.     Отправка команды серверу

Для того чтобы сформировать команду, необходимо создать объект ADOdb.Command, после чего привязываем его к нынешнему соединению:

Привязка объекта ADOdb.Connection к соединению

Привязка объекта ADOdb.Connection к соединению

Далее задаётся непосредственно команда:

 ADOdb.Connection тип команды

Команда для объекта ADOdb.Connection

Текст в команде – это некий оператор из T-SQL или имя процедуры из нашей базы данных.

Чтобы работа программы стала быстрее? можно отметить для объекта ADOdb тип команды (функция «ТипКомандыАдо()»).

Как отметить для объекта ADOdb.Connection тип команды

Как отметить для объекта ADOdb.Connection тип команды

Примечание: по внутренним настройкам при создании объекта ADOdb.Command стоит тип adCmdUnknow.

Тип команды по умолчанию для объекта ADOdb.Connection

В случае, когда используем процедуру с параметрами, которую храним – нужно внести их в собрание «Parameters» в объекте ADOdb.Command. Создание параметров происходит через функцию CreateParameter в объекте ADOdb.Command:

«CreateParamerer (Name, Value Type, Param type, Param Value)», где:

·        Name – название параметра (точно так же, как указано в процедуре, в которой он хранится);

·        Value Type – значение параметра по типу, определяем при помощи КонстантаАДО();

·        Param Type – тип в параметре («Output» или «Input»), определяем при помощи функции ТипПарамедраАДО();

·        Param Value – само значение.

создание в объекте ADOdb.Command

Создание параметров в объекте ADOdb.Command

Функция CreateParameter в объекте ADOdb.Command

Функция CreateParameter в объекте ADOdb.Command

работа в ADOdb.Command

Пример создания параметров в объекте ADOdb.Command

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

Примечание: параметры с типом Numeric нужно будет конвертировать в строки, а только потом передавать.  

3.     Получение и обработка результата работы команды

Можно вывести результаты двумя способами:

·        как набор с данными, который возвращаем функцией «Execute» из объекта ADOdb.Command;

·        как обособленные значения, которые можно передать из той процедуры, где они хранятся, по параметрам с типом OUTPUT.

Выведение результатов работы ADOdb.Command

Выведение результатов работы ADOdb.Command

Стоит обратить внимание, что параметры нумеруются начиная со значения «0». Параметры можно использовать ещё раз, если присвоить им значения через опцию Value.

Конечный набор с записями сможет проходить обработку с начала и до конца цикла и будет обращаться к полям по их названиям. Например:

Обработка набора с начала и до конца года

Обработка набора с начала и до конца года

Когда записи стали не нужными, закрываем их с помощью Rs.Close.

Таким образом, соединив 1С и методы ADOdb, мы получили набор записей при работе с базой данных SQL.

Специалист компании «Кодерлайн»

Айдар Фархутдинов

11 / 11 / 8

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

Сообщений: 514

1

Ошибка доступа при подключении

28.04.2014, 22:25. Показов 1180. Ответов 6


Студворк — интернет-сервис помощи студентам

Пытаюсь подключить БД Acces в формате MDB через Visual studio Выбираю источник данных Microsoft Acces указываю путь к базе, проверку подключения проходит а когда нажимаю на ОК пишет отказано в доступе



0



7535 / 6397 / 2917

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

Сообщений: 27,863

28.04.2014, 22:30

2

Может там имя и пароль нужны?



0



11 / 11 / 8

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

Сообщений: 514

28.04.2014, 23:32

 [ТС]

3

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

Может там имя и пароль нужны?

Базу сам создал естественно никаких логинов и паролей в БД не прописывал, раньше все нормально было а сейчас такая вот бяка, единственно что когда подключаю БД в поле логин Admin написанно, но раньше у меня все нормально подключалось



0



54 / 54 / 14

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

Сообщений: 170

28.04.2014, 23:41

4

откройте права доступа к файлу как everyone, может поможет



0



11 / 11 / 8

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

Сообщений: 514

02.06.2014, 22:35

 [ТС]

5

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

Миниатюры

Ошибка доступа при подключении
 

Ошибка доступа при подключении
 



0



pirat2k

11 / 11 / 8

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

Сообщений: 514

03.06.2014, 16:34

 [ТС]

6

попробовал через код подключилось

C#
1
2
3
4
5
6
string conn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\bd.mdb";
            string cmd = "SELECT * From Таблица1";
            OleDbDataAdapter DataAd = new OleDbDataAdapter(cmd,conn);
            DataSet ds = new DataSet();
            DataAd.Fill(ds,"Таблица1");
            dataGridView1.DataSource = ds.Tables["Таблица1"].DefaultView;

Добавлено через 17 часов 18 минут
Проблема решиласть путем переустановкой ОС, видать проблема с учетками была



0



1044 / 528 / 66

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

Сообщений: 4,093

03.06.2014, 16:42

7

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

Может там имя и пароль нужны?

вам сразу это и сказали



0



  • Ошибка при подключении интернета на телевизоре 6003
  • Ошибка при подключении интернета на xbox 360
  • Ошибка при подключении защищенного соединения
  • Ошибка при подключении жесткого диска к компьютеру
  • Ошибка при подключении внешней компоненты слк