powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Postgres
16 сообщений из 16, страница 1 из 1
Postgres
    #39762762
VRS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VRS
Гость
Может кто сталкивался.
Подключаю Postgres к Access под пользователем superuser.
Присоединяю таблицу.
Затем удаляю таб, подключаюсь под другим пользователем, у которого есть ограничения.
Вопрос: почему при переподключении ограничения установленные на пользователя не работают?
Если выйти из Access, затем зайти - все работает корректно.
Т.е чтобы все корректно работало, надо сразу подключаться под нужным пользователем. Переподключения не помогают
...
Рейтинг: 0 / 0
Postgres
    #39764154
VRS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VRS
Гость
может так будет понятней.
Код: 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.
Function PrisoedenitTablitsu(rstrTblSrc As String)
On Error GoTo Err_Handler
Dim lbl As Label
Dim tdf As TableDef
Dim rstrTblDest As String
Dim db As Database
Dim serverConn As String
  
  Set db = CurrentDb
  Set tdf = db.CreateTableDef(rstrTblSrc)
  
  serverConn = "ODBC;DSN=PostgreSQL35W" _
    & ";DATABASE=" & baseName _
    & ";SERVER=" & hostName _
    & ";PORT=" & portNo _
    & ";Uid=" & userName _
    & ";Pwd=" & psw
  
  Debug.Print serverConn
    
  tdf.Connect = serverConn
  tdf.SourceTableName = rstrTblSrc
  db.TableDefs.Append tdf
  'db.TableDefs.Refresh
  'db.TableDefs(tdf.Name).RefreshLink
  'tdf.RefreshLink
  RefreshDatabaseWindow
lbl:
  
  'закрываем лавочку
  Set tdf = Nothing
  db.Close
  Set db = Nothing
  
  Debug.Print "Подключена таб: " & rstrTblSrc
  
  Exit Function
  
Err_Handler:
    
  If Err.Number = 3010 Then 'таблица с таким уменем уже есть
  
    DoCmd.Close acTable, rstrTblSrc 'закрываем, если открыта
    
    If IsTableExist(rstrTblSrc) = 2 Then DoCmd.DeleteObject acTable, rstrTblSrc '2 - Таблица присоединенная. Удаляем
    
    db.TableDefs.Refresh
    Set tdf = Nothing
    db.Close
    Set db = Nothing
    
    Debug.Print "отключена таб " & rstrTblSrc
    
    Call PrisoedenitTablitsu(rstrTblSrc) 'линкуем по новой
    
  Else
    Debug.Print Err.Number, Err.Description
    'Stop
    'Resume 
    GoTo lbl
  End If
    
End Function



подключаюсь под пользователем "readonly". Данные в таб отображаются с ограничениями, как и должно быть.
Переподключаюсь под суперпользователем, а в таб данные так же с ограничениями что для "readonly", а должны быть все.
При открытии Access, первое подключение всегда правильное, переподключение - нет
Как переподключиться, чтобы данные отображались правильно?
...
Рейтинг: 0 / 0
Postgres
    #39764190
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
функция вызывающая саму себя... смело, но насколько правильно?
...
Рейтинг: 0 / 0
Postgres
    #39764223
VRS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VRS
Гость
alecko,

с этим проблем нет
...
Рейтинг: 0 / 0
Postgres
    #39764319
VRS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VRS
Гость
никто не сталкивался что-ли с перелинковкой?
...
Рейтинг: 0 / 0
Postgres
    #39764673
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleckoфункция вызывающая саму себя... смело, но насколько правильно?

Согласен...
У тебя получается зашел, прилинковал.
Второй раз зашел, уже прилинковано - пытаешься перелинковать, причем так кривовато, тут даже трудно сказать из-за чего трабл может быть, начиная с того что ошибка м.б. не равна 3010 и заканчивая чем угодно...

У меня была подобная задача только в MySql, сделал так:
- в бд есть локальная таблица со списком нужных таблиц на сервере.
- при подключении тупо по списочку игнорируя ошибки удаляю все присоединенные таблицы (возможно их даже и нет - на случай аварийного завершения прошлого сеанса).
- опять же по списочку подключаю их к бд по новой с нужным юзером
Перед завершением сеанса опять по списочку удаляю все присоединенные таблицы...

В вашем случае сейчас самый простой варант - запретить переподключение юзеров в одном сеансе, ну типа пароль ввел, зашел, поработал и теперь можно только завершить приложение, в принципе то так и должно быть имхо
...
Рейтинг: 0 / 0
Postgres
    #39764676
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VRSКак переподключиться, чтобы данные отображались правильно?

Ну как бэ должен быть полноценный режим выход из БД с удалением присоединенных таблиц, а не попытка заменить шило на мыло после ввода новой фамилии...
...
Рейтинг: 0 / 0
Postgres
    #39764915
VRS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VRS
Гость
vmag,
Да нет. При выходе таб удалять не обязательно.
При входе, соединяюсь под любым пользователем и работает правильно.
...
Рейтинг: 0 / 0
Postgres
    #39764929
VRS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VRS
Гость
vmag...У тебя получается зашел, прилинковал.
Второй раз зашел, уже прилинковано - пытаешься перелинковать, причем так кривовато...
старая таб удаляется, новая соединяется.
в каком месте криво?

vmag... ошибка м.б. не равна 3010 и заканчивая чем угодно...
проверял пошагово
...
Рейтинг: 0 / 0
Postgres
    #39765098
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VRSстарая таб удаляется, новая соединяется.
в каком месте криво?

Мне кажется тут
Call PrisoedenitTablitsu(rstrTblSrc) 'линкуем по новой

Ведь старая процедура висит пока она же не выполнится второй раз...
Попробуй временно задублировать процедуру, сделай такую же PrisoedenitTablitsu 2
и во второй раз дерни её, что получится ?
Просто уже ради спортивного интереса...
...
Рейтинг: 0 / 0
Postgres
    #39765174
VRS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VRS
Гость
vmag,

создал. попробовал. НЕ идет.

надо как-то "перегружать" программно Access
...
Рейтинг: 0 / 0
Postgres
    #39765183
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VRSсоздал. попробовал. НЕ идет.

- Таблица уже есть, идем на Err_Handler:
- Ошибка 3010
- Пытаемся закрыть (не открытую таблицу) получаем другую ошибку и опять идем на Err_Handler:
- так как ошибка уже не 3010 идем на выход (lbl:), оставляя старую таблицу

Не ????
...
Рейтинг: 0 / 0
Postgres
    #39765188
VRS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VRS
Гость
vmagVRSсоздал. попробовал. НЕ идет.

- Таблица уже есть, идем на Err_Handler:
- Ошибка 3010
- Пытаемся закрыть (не открытую таблицу) получаем другую ошибку и опять идем на Err_Handler:
- так как ошибка уже не 3010 идем на выход (lbl:), оставляя старую таблицу

Не ????

Нет. старая таблица удаляется однозначно.
таблица открыта, не открыта ошибку не дает.
если открыта, закрывает, удаляет и линкует поновой
еще раз проверил пошагово.
...
Рейтинг: 0 / 0
Postgres
    #39765227
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VRS,

ну тогда если искусственная пауза на пару-тройку секунд после удаления старой таблицы не поможет
(после Debug.Print "отключена таб " & rstrTblSrc), нужно что-то кардинальное...

А вообще такое ощущение что трабл в другом месте, пробовал выводить при каждой привязке в отладку
юзера и пароль, мож. они такие как надо только при старте?
...
Рейтинг: 0 / 0
Postgres
    #39765244
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VRS, может
Код: vbnet
1.
db.Close


убрать, зачем закрывать текущую базу данных в которой идет работа?
...
Рейтинг: 0 / 0
Postgres
    #39765327
VRS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VRS
Гость
alecko,
db.Close
Set db = Nothing
убрал, не помогает

vmag,
Debug.Print serverConn
при каждом подключении в строке подключения видно пользователя.
он действительно тот, под которым подключаюсь

Нужно типа перегрузки Accessa
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Postgres
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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