Avec Excel, je lis/ecrit sur une BDD Acces qui se trouve sur un autre poste
(en DAO)
J'ai cru comprendre que lorsqu'on execute une requete sur une BDD qui se
trouve sur un poste différent, la BDD est importée sur le PC puis la requete
est executée.
Que se passe t-il si plusieurs utilisateurs écrivent en même temps sur le
même element de la BDD ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FILK
Bonjour Emcy,
En DAO, la base n'est pas importée (en tout cas pas à ma connaissance). Pour monter des infos en vba dans une base de données :
- j'ouvre une connection à une bdd - j'execute une requête permettant de monter les données (requête sql d'ajout) - je referme la connection
Le moteur DAO permet de piloter Access. Donc il faut que : - Access soit installé sur ton poste - Access soit installé en mode serveur
Pour les utilisations concomitantes d'access, je te donne ce lien d'enfer, le mec a bien testé l'affaire : http://www.info-3000.com/access/limite.php
Bon courage.
Philippe
Bonjours,
Avec Excel, je lis/ecrit sur une BDD Acces qui se trouve sur un autre poste (en DAO)
J'ai cru comprendre que lorsqu'on execute une requete sur une BDD qui se trouve sur un poste différent, la BDD est importée sur le PC puis la requete est executée.
Que se passe t-il si plusieurs utilisateurs écrivent en même temps sur le même element de la BDD ?
Bonjour Emcy,
En DAO, la base n'est pas importée (en tout cas pas à ma connaissance). Pour
monter des infos en vba dans une base de données :
- j'ouvre une connection à une bdd
- j'execute une requête permettant de monter les données (requête sql d'ajout)
- je referme la connection
Le moteur DAO permet de piloter Access. Donc il faut que :
- Access soit installé sur ton poste
- Access soit installé en mode serveur
Pour les utilisations concomitantes d'access, je te donne ce lien d'enfer,
le mec a bien testé l'affaire :
http://www.info-3000.com/access/limite.php
Bon courage.
Philippe
Bonjours,
Avec Excel, je lis/ecrit sur une BDD Acces qui se trouve sur un autre poste
(en DAO)
J'ai cru comprendre que lorsqu'on execute une requete sur une BDD qui se
trouve sur un poste différent, la BDD est importée sur le PC puis la requete
est executée.
Que se passe t-il si plusieurs utilisateurs écrivent en même temps sur le
même element de la BDD ?
En DAO, la base n'est pas importée (en tout cas pas à ma connaissance). Pour monter des infos en vba dans une base de données :
- j'ouvre une connection à une bdd - j'execute une requête permettant de monter les données (requête sql d'ajout) - je referme la connection
Le moteur DAO permet de piloter Access. Donc il faut que : - Access soit installé sur ton poste - Access soit installé en mode serveur
Pour les utilisations concomitantes d'access, je te donne ce lien d'enfer, le mec a bien testé l'affaire : http://www.info-3000.com/access/limite.php
Bon courage.
Philippe
Bonjours,
Avec Excel, je lis/ecrit sur une BDD Acces qui se trouve sur un autre poste (en DAO)
J'ai cru comprendre que lorsqu'on execute une requete sur une BDD qui se trouve sur un poste différent, la BDD est importée sur le PC puis la requete est executée.
Que se passe t-il si plusieurs utilisateurs écrivent en même temps sur le même element de la BDD ?
jb
Bonjour,
Il n'y a pas d'import de la BDD. Exemple de lecture/Création (on suppose sur l'exemple que la BD est dans le même répertoire que l'appli Excel)
Sub Lit_client() 'Cocher DAO 3.6 dans Outils/Référence rep_appli = ActiveWorkbook.Path Dim db As Database Dim rs As Recordset Set db = OpenDatabase(rep_appli & "access2000.mdb") Set rs = db.OpenRecordset("Select * FROM client") i = 2 Do While Not rs.EOF Cells(i, 10) = rs!nom_client Cells(i, 11) = rs!ville rs.MoveNext i = i + 1 Loop End Sub
Sub ajout() If Range("B3").Value <> "" Then Dim db As Database Dim rs As Recordset rep_appli = ActiveWorkbook.Path Set db = OpenDatabase(rep_appli & "access2000.mdb") Set rs = db.OpenRecordset("client", dbOpenTable) rs.AddNew ' Création enregistrement rs!nom_client = Range("B3").Value ' Transfert rs!ville = Range("B4").Value rs.Update ' Validation rs.Close Range("B3").Value = "" Range("B4").Value = "" Else MsgBox "Saisir un nom!" End If End Sub
Pour la modif. Il y a Erreur si on écrit en même temps dans le même Enreg. (Utiliser la gestion d'erreur)
On error Resume Next Err=0 Rs.Edit IF Err=0 then rs!nom_client = Range("B3").Value ' Transfert rs!ville = Range("B4").Value rs.Update ' Validation rs.Close Else
End If On Error Goto 0 ' annule gestion erreur
Cordialement JB
Bonjour,
Il n'y a pas d'import de la BDD.
Exemple de lecture/Création (on suppose sur l'exemple que la BD est
dans le même répertoire que l'appli Excel)
Sub Lit_client()
'Cocher DAO 3.6 dans Outils/Référence
rep_appli = ActiveWorkbook.Path
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase(rep_appli & "access2000.mdb")
Set rs = db.OpenRecordset("Select * FROM client")
i = 2
Do While Not rs.EOF
Cells(i, 10) = rs!nom_client
Cells(i, 11) = rs!ville
rs.MoveNext
i = i + 1
Loop
End Sub
Sub ajout()
If Range("B3").Value <> "" Then
Dim db As Database
Dim rs As Recordset
rep_appli = ActiveWorkbook.Path
Set db = OpenDatabase(rep_appli & "access2000.mdb")
Set rs = db.OpenRecordset("client", dbOpenTable)
rs.AddNew ' Création enregistrement
rs!nom_client = Range("B3").Value ' Transfert
rs!ville = Range("B4").Value
rs.Update ' Validation
rs.Close
Range("B3").Value = ""
Range("B4").Value = ""
Else
MsgBox "Saisir un nom!"
End If
End Sub
Pour la modif. Il y a Erreur si on écrit en même temps dans le même
Enreg. (Utiliser la gestion d'erreur)
On error Resume Next
Err=0
Rs.Edit
IF Err=0 then
rs!nom_client = Range("B3").Value ' Transfert
rs!ville = Range("B4").Value
rs.Update ' Validation
rs.Close
Else
Il n'y a pas d'import de la BDD. Exemple de lecture/Création (on suppose sur l'exemple que la BD est dans le même répertoire que l'appli Excel)
Sub Lit_client() 'Cocher DAO 3.6 dans Outils/Référence rep_appli = ActiveWorkbook.Path Dim db As Database Dim rs As Recordset Set db = OpenDatabase(rep_appli & "access2000.mdb") Set rs = db.OpenRecordset("Select * FROM client") i = 2 Do While Not rs.EOF Cells(i, 10) = rs!nom_client Cells(i, 11) = rs!ville rs.MoveNext i = i + 1 Loop End Sub
Sub ajout() If Range("B3").Value <> "" Then Dim db As Database Dim rs As Recordset rep_appli = ActiveWorkbook.Path Set db = OpenDatabase(rep_appli & "access2000.mdb") Set rs = db.OpenRecordset("client", dbOpenTable) rs.AddNew ' Création enregistrement rs!nom_client = Range("B3").Value ' Transfert rs!ville = Range("B4").Value rs.Update ' Validation rs.Close Range("B3").Value = "" Range("B4").Value = "" Else MsgBox "Saisir un nom!" End If End Sub
Pour la modif. Il y a Erreur si on écrit en même temps dans le même Enreg. (Utiliser la gestion d'erreur)
On error Resume Next Err=0 Rs.Edit IF Err=0 then rs!nom_client = Range("B3").Value ' Transfert rs!ville = Range("B4").Value rs.Update ' Validation rs.Close Else