Разрешить другим пользователям на общем диске использовать подключение access odbc

#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

5. Еще одна хорошая статья здесь.

Ответ №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.