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] Источник данных не найден и не указан драйвер, используемый по умолчанию
1 — 25.04.17 — 13:06
http://shot.qip.ru/00Tn5Q-418qb6UGi/
драйвер есть, он x32, кто-то знает как его использовать или где взять для x64 версии?
2 — 08.05.17 — 10:28
ап
3 — 11.05.17 — 07:41
Подскажите, что в данном случае выступает как источник данных? и где указать драйвер по умолчанию 🙂
4 — 11.05.17 — 08:12
5 — 11.05.17 — 08:40
(4) Михаил, можете пояснить?
6 — 11.05.17 — 08:58
7 — 11.05.17 — 10:15
с другой стороны клиент 1С же x32? и по идее драйвер как раз и должен быть x32 независимо от того, что винда x64?
8 — 11.05.17 — 10:27
9 — 11.05.17 — 10:43
(8) у меня файловая версия, не серверная
10 — 11.05.17 — 10:51
(9) не важно . читайте всю ветку.
11 — 11.05.17 — 12:23
скурил все эти ссылки, но так и взлетает.
когда пытаюсь протестить через udl
http://shot.qip.ru/00TvW3-6f35S7oPa/
12 — 11.05.17 — 12:26
(10) через Viewer получилось открыть, но все равно непонятно как из 1Ски подключаться
13 — 11.05.17 — 12:30
14 — 11.05.17 — 12:56
Михаил, выручайте, судя по всему больше никто не зашарил этот момент 🙂
15 — 11.05.17 — 13:51
добавьте к «Driver={Driver do Microsoft Paradox (*.db )};»
строку из ViewODBC.html
16 — 11.05.17 — 14:13
(15) попробовал, такая же ошибка
17 — 11.05.17 — 14:15
создать пустой файл .udl, открыть двойным кликом, настроить подключение, сохранить, открыть блокнотом
18 — 11.05.17 — 14:17
(17) хорошая идея, но есть ограничение связанное с тем, что там нет нужного драйвера
19 — 11.05.17 — 14:18
(18) так поставь его
20 — 11.05.17 — 14:22
(19) нет такого драйвера для x64, да и зачем он если 1Ска x32?
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 архитектура драйвера и архитектура приложения не соответствуют друг другу.
22 — 11.05.17 — 14:53
23 — 11.05.17 — 15:00
так, немного сдвинулся, оказалось, что 1Ску накатил x64. Переставил, получается теперь подключиться, но
}: Ошибка при вызове метода контекста (Open)
rs.Open(ТекстЗапроса, cn);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Paradox] Внешняя таблица не имеет предполагаемый формат.
24 — 11.05.17 — 15:08
таблица .DB естественно
25 — 11.05.17 — 15:11
(24)
если в ViewODBC таблица читается, то в 1с читается.
иначе ищите другой драйвер
26 — 11.05.17 — 15:17
(25) таблица отображается, но не открывается
http://shot.qip.ru/00TvW3-2f35S7oPl
27 — 11.05.17 — 15:20
28 — 12.05.17 — 07:23
Залейте пожалуйста драйвер или подскажите ссылку, не могу нашарить в интернете почему-то
29 — 12.05.17 — 07:55
они в файлике odbcjt32.dll лежат
30 — 12.05.17 — 17:08
У меня родственная проблема. Только у меня вылетает на уровне
Новый COMОбъект(«ADODB.Connection»);
31 — 12.05.17 — 17:28
Драйвер настроен через х32 оснастку?
32 — 12.05.17 — 18:33
(28)
выкладывайте файл-таблицу из бд.
чтобы подобрать драйвер
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, потом подключаюсь по строке. Файлы в таком случае читает, но там кракозябры
34 — 16.05.17 — 09:22
35 — 16.05.17 — 09:22
(31) пробовал и так и так
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);
и т.д.
данные загружает, но там кракозябры (
37 — 16.05.17 — 10:30
38 — 16.05.17 — 10:33
через Paradox Data Editor смотрю — данные в норме.
через ODBC Viewer — кракозябры
39 — 16.05.17 — 10:35
кодировка не та
40 — 16.05.17 — 10:39
(39) согласен =)
не могу понять как настроить
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 | ||
|
И всё работало на ура без всяких проблем.
После перехода на 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 | ||
|
работает успешно.
Большое спасибо за комментарии.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
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="data source=***********;initial catalog=********;persist security info=True;user id=*********;password=********;MultipleActiveResultSets=True;App=EntityFramework"" 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="
data source=myserver;
initial catalog=mydatabase;
Persist Security Info=True;
User ID=myusername;
Password=mypassword;
MultipleActiveResultSets=True;
application name=EntityFramework
"
большинство людей, которые сталкиваются с этой проблемой, похоже, вырезали строку подключения 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="
metadata=res://*/XxDbContext.csdl|
res://*/XxDbContext.ssdl|
res://*/XxDbContext.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 попытался использовать ее для подключения к базе данных, она сгенерировала эту ошибку.
другими словами, когда вы вставляете строки подключения в диалоги публикации, вам нужно вставить строку подключения 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 создан», таможни работает хорошо.

проверьте это место
<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)
надеюсь, это может помочь кому-то еще нужна.