#vba #ms-access #odbc
#vba #ms-access #odbc
Вопрос:
У меня есть файл Access с запросами ДОБАВЛЕНИЯ и ОБНОВЛЕНИЯ, который связан с какой-либо базой данных SQL (по порядку). Я создаю отчеты и прочее, но кто-то еще в нашей компании в конечном итоге будет использовать его — возможно, разные люди — поэтому я поместил его на общий диск.
Однако, когда я обращаюсь к нему с другого компьютера (пытался продемонстрировать это диспетчеру операций), он теряет соединение с базой данных SQL, несмотря на то, что оба компьютера также имеют доступ к этому диску. Я новичок в этом, но я думаю, что файл ODBC / соединение, на которое он опирается, находится где-то на компьютере, который создал базу данных — сообщение об ошибке ODBC connection to 'Orderwise 2' failed.
.
Я пытался исследовать это, но не нашел ничего убедительного, похоже, это связано с файлами .mdb, но я не знаю, где они находятся, и поиск через настройки панели управления не дает возможности переместить odbc на общий диск.
Как я могу предоставить доступ к этой базе данных, чтобы все на общем диске могли использовать оперативное подключение для передачи данных?
Комментарии:
1. Вы должны настроить то же самое
ODBC
на другом компьютере. Или вам придется перепроектировать базу данных для выполненияINSERT
,UPDATE
команд с помощьюVBA
вашейSQL
базы данных. Тогда вам не нужно настраиватьODBC
для каждого компьютера. СозданиеPass-Through
запроса с помощьюVBA
поможет запустить отчет.2. ODBC должен быть создан с нуля. Сработает другая вещь. Вы должны указать пароль в строке подключения к
VBA
кодированию.3. У меня есть коды для подключения базы данных SQL с помощью VBA и запуска таких команд, как INSERT, DETELE, UPDATE и так далее. Я дам завтра, так как сейчас я пишу этот комментарий со своего мобильного телефона.
4. Взгляните на эту статью Статья Microsoft
Ответ №1:
Ниже приведен код для подключения базы данных SQL и выполнения команд.
Private Sub cmdTest_Click()
'Add reference Microsoft ActiveX Data Objects 2.1 Library
'Fix SQL Server Connection ERROR! See below link
'https://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server-microsoft-sql-server-error/
'Declare variables'
Dim objMyConn As ADODB.Connection
Dim objMyCmd As ADODB.Command
Dim objMyRecordset As ADODB.Recordset
Set objMyConn = New ADODB.Connection
Set objMyCmd = New ADODB.Command
Set objMyRecordset = New ADODB.Recordset
Dim strEmpID As String, strEmpName As String
Dim JoiningDate As Date
Dim eSalary As Integer
Dim myRate As Double
'Open Connection'
objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.0.150;User ID=sa;Password=saDBpassword;"
objMyConn.Open
'Another provider
'Provider=sqloledb;Data Source=192.168.0.150,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=myUsername;Password=myPassword;
'Set and Excecute SQL Command'
Set objMyCmd.ActiveConnection = objMyConn
' Insert data to SQL Database table.
strEmpID = InputBox("Enter Employee ID:", "Employee ID", "HO-300")
strEmpName = InputBox("Enter Employee Name:", "Employee Name", "Mr. SQL")
JoiningDate = InputBox("Enter Joining Date:", "Joining Date", Date)
eSalary = InputBox("Enter Salary:", "Salary", 10000)
myRate = InputBox("Enter Rate:", "Rate", 11.11)
objMyCmd.CommandText = "INSERT INTO [TestDB].[dbo].[tblEmpInfo] (EmpID, EmpName, jDate, Salary, HourRate) Values('" _
amp; strEmpID amp; "', '" _
amp; strEmpName amp; "', '" _
amp; JoiningDate amp; "', " _
amp; eSalary amp; ", " _
amp; myRate amp; ")"
objMyCmd.CommandType = adCmdText
objMyCmd.Execute 'Execute SQL command
End Sub
Вы должны добавить ActiveX Data Objects 2.5 Library
в ссылку. Я использую MS-Access-2013
. Ссылка на объект может отличаться в зависимости от версий MS-Access.
Пожалуйста, внимательно прочитайте эту статью, чтобы устранить барьер сетевой службы. Ошибка исправления SQL Server.