Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Connexion à Access protégé par password via Outlook

3 réponses
Avatar
Yvan
Hello tout le monde !

Je plante là... je tente d'accéder à une table access pour mettre à jour une
combobox dans un formulaire Outlook. J'ai le code suivant mais j'obtiens un
message d'erreur:

"Impossible de lire les enregistrements; pas d'autorisation de lecture sur
'Liste_Articles_pr_Form_Rdv_Outlook'.

Voici mon code:

'-------------------------------------------------------------------------------
Sub Bouton_CherchArticle_click()

Dim rst
Dim dao
Dim wks
Dim dbs
Dim cbbox
Dim strOfficePath
Dim appAccess
Dim ArtArray (5000, 2)

'Pick up path to Access database directory from Access and Office
'version from Outlook
Set appAccess = Item.Application.CreateObject("Access.Application")
strOfficePath = appAccess.SysCmd(9)
' MsgBox "Access folder: " & strOfficePath
strVersion = Item.Application.Version
strDBPath = "C:\Documents and Settings\Magnin\Mes
documents\ACCESS\Apps4Biz\Tables_A4B_ak_mappage.mdb"
' MsgBox "DBName: " & strDBName

Set dbe = Application.CreateObject("DAO.DBEngine.36")

Set wks = dbe.Workspaces(0)
Set dbs = wks.OpenDatabase(strDBPath)
appAccess.Quit

msgbox "1"
Set rst = dbs.OpenRecordset("Liste_Articles_pr_Form_Rdv_Outlook")
msgbox "2"
Set cbbox =
Item.GetInspector.ModifiedFormPages("Mouvements").Controls("ComboBox35")

cbbox.ColumnCount = 3
cbbox.ColumnWidths = "25; 75 pt; 200 pt"

'Assign Access data to an array of 3 columns and 100 rows
ArtArray(5000, 2) = rst.GetRows(1000)

cbbox.Column() = ArtArray(5000, 2)

End sub
'-------------------------------------------------------------------------------

Vous l'aurez compris, le message d'erreur survient entre la msgbox 1 et la
2...

Quelqu'un peut m'aider ? Je suis obligé de garder le groupe de travail
actuel pour ma base Access. Comme donc pourrais-je faire la connection en
donnant un user et un password ?

Merci d'avance !

3 réponses

Avatar
Michel_D
Voici deux exemples d'ouverture de base sécurisée au niveau utilisateur
(Le fichier de groupe de travail étant ici 'SYSTEM.MDW')

DAO
Sub DAOOpenSecuredDatabase()
Dim wks As DAO.Workspace
Dim db As DAO.Database
DBEngine.SystemDB = _
"C:Program FilesMicrosoft OfficeOfficeSYSTEM.MDW"
Set wks = DBEngine.CreateWorkspace("", "Admin", "")
Set db = wks.OpenDatabase(".Comptoir.mdb")

' tu insère ton code ici

db.Close
wks.Close
End Sub

ADO
Sub ADOOpenSecuredDatabase()
Dim cnn As New ADODB.connection
cnn.Provider = "Microsoft.Jet.OLEDB.4.0;"
cnn.Properties("Jet OLEDB:System database") = _
"C:Program FilesMicrosoft OfficeOfficeSYSTEM.MDW"
cnn.Open "Data Source=.Comptoir.mdb;User Id­min;Password=;"
cnn.Close
End Sub



"Yvan" a écrit dans le message de news:
Hello tout le monde !

Je plante là... je tente d'accéder à une table access pour mettre à jour une
combobox dans un formulaire Outlook. J'ai le code suivant mais j'obtiens un
message d'erreur:

"Impossible de lire les enregistrements; pas d'autorisation de lecture sur
'Liste_Articles_pr_Form_Rdv_Outlook'.

Voici mon code:

'-------------------------------------------------------------------------------
Sub Bouton_CherchArticle_click()

Dim rst
Dim dao
Dim wks
Dim dbs
Dim cbbox
Dim strOfficePath
Dim appAccess
Dim ArtArray (5000, 2)

'Pick up path to Access database directory from Access and Office
'version from Outlook
Set appAccess = Item.Application.CreateObject("Access.Application")
strOfficePath = appAccess.SysCmd(9)
' MsgBox "Access folder: " & strOfficePath
strVersion = Item.Application.Version
strDBPath = "C:Documents and SettingsMagninMes
documentsACCESSApps4BizTables_A4B_ak_mappage.mdb"
' MsgBox "DBName: " & strDBName

Set dbe = Application.CreateObject("DAO.DBEngine.36")

Set wks = dbe.Workspaces(0)
Set dbs = wks.OpenDatabase(strDBPath)
appAccess.Quit

msgbox "1"
Set rst = dbs.OpenRecordset("Liste_Articles_pr_Form_Rdv_Outlook")
msgbox "2"
Set cbbox > Item.GetInspector.ModifiedFormPages("Mouvements").Controls("ComboBox35")

cbbox.ColumnCount = 3
cbbox.ColumnWidths = "25; 75 pt; 200 pt"

'Assign Access data to an array of 3 columns and 100 rows
ArtArray(5000, 2) = rst.GetRows(1000)

cbbox.Column() = ArtArray(5000, 2)

End sub
'-------------------------------------------------------------------------------

Vous l'aurez compris, le message d'erreur survient entre la msgbox 1 et la
2...

Quelqu'un peut m'aider ? Je suis obligé de garder le groupe de travail
actuel pour ma base Access. Comme donc pourrais-je faire la connection en
donnant un user et un password ?

Merci d'avance !


Avatar
Michel_D
Autant pour moi, j'avais pas fait attention à "via Outlook", mais bon
avec les exemples tu devrais pouvoir t'en sortir quand même.
(regarder éventuellement l'aide sur "CreateWorkspace")

[...]

Set dbe = Application.CreateObject("DAO.DBEngine.36")
dbe.SystemDB = "C:Program FilesMicrosoft OfficeOfficeSYSTEM.MDW"
Set wks = dbe.CreateWorkspace("", "Admin", "")
Set dbs = wks.OpenDatabase(strDBPath)
msgbox "1"
Set rst = dbs.OpenRecordset("Liste_Articles_pr_Form_Rdv_Outlook")
msgbox "2"

PS: Je n'ai pas testé.


"Michel_D" a écrit dans le message de news:f84nvq$2cl$
Voici deux exemples d'ouverture de base sécurisée au niveau utilisateur
(Le fichier de groupe de travail étant ici 'SYSTEM.MDW')

DAO
Sub DAOOpenSecuredDatabase()
Dim wks As DAO.Workspace
Dim db As DAO.Database
DBEngine.SystemDB = _
"C:Program FilesMicrosoft OfficeOfficeSYSTEM.MDW"
Set wks = DBEngine.CreateWorkspace("", "Admin", "")
Set db = wks.OpenDatabase(".Comptoir.mdb")

' tu insère ton code ici

db.Close
wks.Close
End Sub

ADO
Sub ADOOpenSecuredDatabase()
Dim cnn As New ADODB.connection
cnn.Provider = "Microsoft.Jet.OLEDB.4.0;"
cnn.Properties("Jet OLEDB:System database") = _
"C:Program FilesMicrosoft OfficeOfficeSYSTEM.MDW"
cnn.Open "Data Source=.Comptoir.mdb;User Id­min;Password=;"
cnn.Close
End Sub



"Yvan" a écrit dans le message de news:
Hello tout le monde !

Je plante là... je tente d'accéder à une table access pour mettre à jour une
combobox dans un formulaire Outlook. J'ai le code suivant mais j'obtiens un
message d'erreur:

"Impossible de lire les enregistrements; pas d'autorisation de lecture sur
'Liste_Articles_pr_Form_Rdv_Outlook'.

Voici mon code:

'-------------------------------------------------------------------------------
Sub Bouton_CherchArticle_click()

Dim rst
Dim dao
Dim wks
Dim dbs
Dim cbbox
Dim strOfficePath
Dim appAccess
Dim ArtArray (5000, 2)

'Pick up path to Access database directory from Access and Office
'version from Outlook
Set appAccess = Item.Application.CreateObject("Access.Application")
strOfficePath = appAccess.SysCmd(9)
' MsgBox "Access folder: " & strOfficePath
strVersion = Item.Application.Version
strDBPath = "C:Documents and SettingsMagninMes
documentsACCESSApps4BizTables_A4B_ak_mappage.mdb"
' MsgBox "DBName: " & strDBName

Set dbe = Application.CreateObject("DAO.DBEngine.36")

Set wks = dbe.Workspaces(0)
Set dbs = wks.OpenDatabase(strDBPath)
appAccess.Quit

msgbox "1"
Set rst = dbs.OpenRecordset("Liste_Articles_pr_Form_Rdv_Outlook")
msgbox "2"
Set cbbox > > Item.GetInspector.ModifiedFormPages("Mouvements").Controls("ComboBox35")

cbbox.ColumnCount = 3
cbbox.ColumnWidths = "25; 75 pt; 200 pt"

'Assign Access data to an array of 3 columns and 100 rows
ArtArray(5000, 2) = rst.GetRows(1000)

cbbox.Column() = ArtArray(5000, 2)

End sub
'-------------------------------------------------------------------------------

Vous l'aurez compris, le message d'erreur survient entre la msgbox 1 et la
2...

Quelqu'un peut m'aider ? Je suis obligé de garder le groupe de travail
actuel pour ma base Access. Comme donc pourrais-je faire la connection en
donnant un user et un password ?

Merci d'avance !





Avatar
Yvan
Hello Michel,

Merci bien pour tes infos. Entre temps, en bidouillant, j'ai découvert
presque par mégarde que si dans le Workgroup Access l'administrateur a les
droits de lecture sur la table que je dois ouvrir depuis Outlook b'en ça
passe. Donc pour le moment ça me convient comme tactique.

Mais je garde tes exemples au chaud pour l'avenir !

A+ et encore merci !