powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / CurrentProject.Connection в accdb
7 сообщений из 7, страница 1 из 1
CurrentProject.Connection в accdb
    #40019584
Andrey.dav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,


Есть проблема. Перевожу adp в accdb и сталкиваюсь с проблемами.
В adp я при входе вбивал login и пароль и в дальнейшем у меня появлялся CurrentProject.Connection с моими логин и паролем.
Вся безопасность была на MS SQL сервере.

В accdb подключил связанные таблицы и представления, тоже указываю при входе Логин и пароль, но оно в CurrentProject.Connection они не сохраняются.
Вот что сохраняется в CurrentProject.Connection.

Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=d:\Users\dav\Desktop\ACCESS\NEWWW PROC.accdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database=d:\Users\dav\AppData\Roaming\Microsoft\Access\System.mdw;Jet OLEDB:Registry Path=Software\Microsoft\Office\14.0\Access\Access Connectivity Engine;Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=True;Jet OLEDB:Bypass UserInfo Validation=False


Как мне сохранить соединение с логином и паролем текущего пользователя, с его правами?
Если 20 пользователей, как создать для каждого уникальный Connection с его логином и паролем?

Потом должна выполняться хранимая процедура, но она не выполняется, так как User ID передается Admin? а не Петров/ Сидоров.

Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "st_userid"
cmd.CommandType = adCmdStoredProc
Set prm = cmd.CreateParameter("st_userid", adChar, adParamReturnValue, 50)
cmd.Parameters.Append prm
cmd.Execute
CurrentUser_Id = cmd.Parameters("st_userid")

Спасибо!
...
Рейтинг: 0 / 0
CurrentProject.Connection в accdb
    #40020374
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так у вас же в строке явно авторUser ID=Admin; прописано, вот оно под локальным админом accdb и лезет.
Уберите, будет под текущей доменной учёткой подключаться.
...
Рейтинг: 0 / 0
CurrentProject.Connection в accdb
    #40020381
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ accdb подключил связанные таблицы и представления
Кстати вопрос, а как планируете разграничивать доступ к записям таблиц, чтобы через связанные пользователи на ацесс-клиенте не подлезли к чужим записям? Будете представления создавать на сервере с WHERE = CURRENTUSER() чтобы зафильтровывало по доменной учётке, от имени которой присоединённая коннекция открыта?
Или вообще закроете таблицы от пользователей правами сервера, чтобы формы работали только через хранимки, возвращающие рекордсеты (recordsource экранных форм)?
...
Рейтинг: 0 / 0
CurrentProject.Connection в accdb
    #40020394
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ldfanate
так у вас же в строке явно авторUser ID=Admin;
прописано, вот оно под локальным админом accdb и лезет.
Уберите, будет под текущей доменной учёткой подключаться.не будет
Это строка подключения к JET/ACE, а не к серверу, и в ней, по умолчанию используется Admin
А с учетом того, что ТС использует accdb, где уже самоЁ понятие рабочих групп / пользователей "отменили", то только Admin
Andrey.dav
Перевожу adp в accdb и сталкиваюсь с проблемами.
...
Вся безопасность была на MS SQL сервере

А кто говорил, что будет легко ? :)
Нее, ТС, теперь быстренько забываем про "плюшки" сервера, и начинаем жизнь с "чистого листа" пилить свою систему прав доступа
...
Рейтинг: 0 / 0
CurrentProject.Connection в accdb
    #40020423
Andrey.dav
В accdb подключил связанные таблицы и представления, тоже указываю при входе Логин и пароль, но оно в CurrentProject.Connection они не сохраняются.
А в конструкторе таблицы, в ее св-ве "Описание" (Description) что написано?
...
Рейтинг: 0 / 0
CurrentProject.Connection в accdb
    #40020644
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey.dav
Добрый день,


Есть проблема. Перевожу adp в accdb и сталкиваюсь с проблемами.
Спасибо!


Можно забыть про плюшки adp сразу.
CurrentProject всегда будет выдавать подключение к аксесовском базе, а не к серверу.

Нужно отдельно поднимать соединение, вносить в переменную, и потом юзать его в качестве основного.
Но вот беда, при этом линки отваливаются?) и не получается использовать одновременно и линки и сохранённые процедуры?)

Выход есть-DAO через odbc, там ещё раскривушки держатся и работают, правда в полуобморочном состоянии.
...
Рейтинг: 0 / 0
CurrentProject.Connection в accdb
    #40020692
Odess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делюсь древней процедурой для линка связанных таблиц. Работает как с таблицами в базе данных акцесса так и скл сервера.
В базе с которой работаем создаем таблицу TablesDefine
В ней прописываем пути к базе или свойства соединения к скл.
Я эту процедуру выполнял при каждом запуске программы, но это необязательно.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
Public Sub Join_Database()
Dim MyBase As String 'Строка подключения
Dim DB As Database   'оно самое
Dim R As Recordset   'оно самое
Dim Pth As String    'Путь к mdb
Dim tbl As String    'Имя таблицы
Dim tbl2 As String   'Имя таблицы
Dim i, j As Long     'Енто для цикла
Dim par As Boolean
SQQ = True
Set DB = CurrentDb()
  
Set R = DB.OpenRecordset("TablesDefine", dbOpenTable)      'таблица с исходными данными

j = R.RecordCount                                'определения количества проходов для подключения таблиц

For i = 1 To j Step 1                                'цикл перебора путей и таблиц из _base_path
    Pth = R![Path] & R![base]                        'смотрим путь к базе данных
    tbl = R![Tables]                                 'смотрим имя таблицы
    tbl2 = IIf(IsNull(R![TablesN]), "", R![TablesN]) 'смотрим имя таблицы
    par = R![IsNew]
    If R![SQQ] Then
        MyBase = R![Path] & ";DATABASE=" & R![base]
    Else
        MyBase = ";DATABASE=" & Pth              'определяем строку пути к базе данных
    End If
        a = SysCmd(SYSCMD_SETSTATUS, "* Присоединяем таблицу [" & tbl & "]  { " & MyBase & " }")
        Call Conn_Tbl(tbl, tbl2, MyBase, par)          'вызов функции подключения выбранной таблицы
    R.MoveNext                                   'переходим на следующую запись таблицы _base_path
Next i

a = SysCmd(SYSCMD_SETSTATUS, " ")

End Sub

Private Function Conn_Tbl(tblName, tblName2, MyBase As String, par As Boolean)
Dim MyTable As TableDef, txtt As String
Dim DB As Database, dbsTbl As Database   'оно самое
Dim R As Recordset, tblDefine As Recordset, tdfEdit As TableDef, fldNew As Field
On Error Resume Next                                     'Выключение обработчика ошибок
    DoCmd.DeleteObject acTable, IIf(Len(tblName2) = 0, tblName, tblName2)
                                                         'Удаление таблицы, если она есть
    Err = 0                                              'Очистка кода ошибки.

On Error GoTo Error
    Set MyTable = CurrentDb.CreateTableDef(IIf(Len(tblName2) = 0, tblName, tblName2))
    MyTable.Connect = MyBase                             'Задаем строку подключения
    MyTable.SourceTableName = tblName                    'Задаем имя исходной таблицы
    CurrentDb.TableDefs.Append MyTable                   'Присоединение таблицы
Set MyTable = Nothing                                    'Очистка
Exit Function                                            'Все тип-топ. Вываливаемся из функции

Error:
If par Then
    Set DB = CurrentDb()
    Set R = DB.OpenRecordset("TablesDefine", dbOpenDynaset)       ', dbOpenTable)
    Set tblDefine = DB.OpenRecordset("TablesStructure", dbOpenDynaset)
    txtt = "[Tables] = '" & tblName & "'"
    R.MoveFirst
    R.FindFirst txtt
    Set dbsTbl = DBEngine.Workspaces(0).OpenDatabase(R![Path] & R![base])
    Set tdfEdit = dbsTbl.CreateTableDef(tblName)
    txtt = "[TablesName] = '" & tblName & "'"
    tblDefine.FindFirst txtt
    Do While Not tblDefine.NoMatch
        Set fldNew = tdfEdit.CreateField(tblDefine![Name], tblDefine![Type])
        fldNew.Size = tblDefine![Size]
        fldNew.Attributes = tblDefine![Attributes]
        fldNew.Required = tblDefine![Required]
        tdfEdit.Fields.Append fldNew
        tblDefine.FindNext txtt
    Loop
    dbsTbl.TableDefs.Append tdfEdit        'добавляем созданную таблицу в cемейство таблиц БД
    dbsTbl.TableDefs.Refresh           'обновляем cемейство таблиц
    R.Edit
    R![IsNew] = False
    R.Update
    R.Close
    tblDefine.Close
    dbsTbl.Close
    DB.Close
    Set dbsTbl = Nothing
    Set tdfEdit = Nothing
    Set R = Nothing
    Set DB = Nothing
    Set tblDefine = Nothing
    
    Set MyTable = CurrentDb.CreateTableDef(tblName)
    MyTable.Connect = MyBase                             'Задаем строку подключения
    MyTable.SourceTableName = tblName                    'Задаем имя исходной таблицы
    CurrentDb.TableDefs.Append MyTable                   'Присоединение таблицы
Else
    MsgBox "Ошибка BB$0002 *** Невозможно подключение таблицы [" & tblName & "]" 'Сообщение об ошибке подключения
End If
End Function
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / CurrentProject.Connection в accdb
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]