Dim ws As Workspace, db As Database
Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password", dbUseJ et)
Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
...
votre programme
....
db.close : set db=nothing
ws.close : set ws = nothing
"Jacques" a écrit dans le message de news:
Bonjour,
Ce code fonctionne pour rétablir les relations sur les tables d'une
base locale,
comment le modifier pour le faire fonctionner à partir d'une base
frontale ?
est-ce possible de rétablir des relations sur une base attachée ?
Sub CreationRelations()
Dim db As Database
Dim rel As Relation
Dim myField As DAO.Field
Dim strsql As String
Dim rs As DAO.Recordset
Dim cpt As Integer
cpt = 0
Set db = Application.CurrentDb
strsql = "Select * from [tbl Relations]"
Set rs = db.OpenRecordset(strsql)
If Not rs.EOF Then
cpt = cpt + 1
'MsgBox cpt
rs.MoveFirst
While Not rs.EOF
Set rel = db.CreateRelation(rs.Fields("NomRelat ion"),
rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
("relAttributes"))
Set myField = rel.CreateField(rs.Fields("ChampP rincipal"))
myField.ForeignName = rs.Fields("ChampSecondair e")
rel.Fields.Append myField
CurrentDb.Relations.Append rel
rs.MoveNext
Wend
End If
End Sub
Merci de votre aide.
Salutations
Dim ws As Workspace, db As Database
Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password", dbUseJ et)
Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
...
votre programme
....
db.close : set db=nothing
ws.close : set ws = nothing
"Jacques" <j...@neuf.fr> a écrit dans le message de news:
4ed8d93a-d40f-4643-b118-d27716a12...@a12g2000yqm.googlegroups.com...
Bonjour,
Ce code fonctionne pour rétablir les relations sur les tables d'une
base locale,
comment le modifier pour le faire fonctionner à partir d'une base
frontale ?
est-ce possible de rétablir des relations sur une base attachée ?
Sub CreationRelations()
Dim db As Database
Dim rel As Relation
Dim myField As DAO.Field
Dim strsql As String
Dim rs As DAO.Recordset
Dim cpt As Integer
cpt = 0
Set db = Application.CurrentDb
strsql = "Select * from [tbl Relations]"
Set rs = db.OpenRecordset(strsql)
If Not rs.EOF Then
cpt = cpt + 1
'MsgBox cpt
rs.MoveFirst
While Not rs.EOF
Set rel = db.CreateRelation(rs.Fields("NomRelat ion"),
rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
("relAttributes"))
Set myField = rel.CreateField(rs.Fields("ChampP rincipal"))
myField.ForeignName = rs.Fields("ChampSecondair e")
rel.Fields.Append myField
CurrentDb.Relations.Append rel
rs.MoveNext
Wend
End If
End Sub
Merci de votre aide.
Salutations
Dim ws As Workspace, db As Database
Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password", dbUseJ et)
Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
...
votre programme
....
db.close : set db=nothing
ws.close : set ws = nothing
"Jacques" a écrit dans le message de news:
Bonjour,
Ce code fonctionne pour rétablir les relations sur les tables d'une
base locale,
comment le modifier pour le faire fonctionner à partir d'une base
frontale ?
est-ce possible de rétablir des relations sur une base attachée ?
Sub CreationRelations()
Dim db As Database
Dim rel As Relation
Dim myField As DAO.Field
Dim strsql As String
Dim rs As DAO.Recordset
Dim cpt As Integer
cpt = 0
Set db = Application.CurrentDb
strsql = "Select * from [tbl Relations]"
Set rs = db.OpenRecordset(strsql)
If Not rs.EOF Then
cpt = cpt + 1
'MsgBox cpt
rs.MoveFirst
While Not rs.EOF
Set rel = db.CreateRelation(rs.Fields("NomRelat ion"),
rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
("relAttributes"))
Set myField = rel.CreateField(rs.Fields("ChampP rincipal"))
myField.ForeignName = rs.Fields("ChampSecondair e")
rel.Fields.Append myField
CurrentDb.Relations.Append rel
rs.MoveNext
Wend
End If
End Sub
Merci de votre aide.
Salutations
On 22 mar, 13:13, "CErnst" wrote:
> Dim ws As Workspace, db As Database
> Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password", dbUs eJet)
> Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> ...
> votre programme
> ....
> db.close : set db=nothing
> ws.close : set ws = nothing
> "Jacques" a écrit dans le message de news:
>
> Bonjour,
> Ce code fonctionne pour rétablir les relations sur les tables d'une
> base locale,
> comment le modifier pour le faire fonctionner à partir d'une base
> frontale ?
> est-ce possible de rétablir des relations sur une base attachée ?
> Sub CreationRelations()
> Dim db As Database
> Dim rel As Relation
> Dim myField As DAO.Field
> Dim strsql As String
> Dim rs As DAO.Recordset
> Dim cpt As Integer
> cpt = 0
> Set db = Application.CurrentDb
> strsql = "Select * from [tbl Relations]"
> Set rs = db.OpenRecordset(strsql)
> If Not rs.EOF Then
> cpt = cpt + 1
> 'MsgBox cpt
> rs.MoveFirst
> While Not rs.EOF
> Set rel = db.CreateRelation(rs.Fields("NomRel ation"),
> rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> ("relAttributes"))
> Set myField = rel.CreateField(rs.Fields("Cham pPrincipal"))
> myField.ForeignName = rs.Fields("ChampSeconda ire")
> rel.Fields.Append myField
> CurrentDb.Relations.Append rel
> rs.MoveNext
> Wend
> End If
> End Sub
> Merci de votre aide.
> Salutations
Bonjour CErnst,
Merci pour ta réponse, mais j'ai un problème sur "user" et "password" ;
j'ai essayé en les remplaçants par des quotes "" aucun résultat.
Est-il possible de zapper ces deux éléments ?.
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
On 22 mar, 13:13, "CErnst" <contact.nos...@micro-gestion.fr> wrote:
> Dim ws As Workspace, db As Database
> Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password", dbUs eJet)
> Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> ...
> votre programme
> ....
> db.close : set db=nothing
> ws.close : set ws = nothing
> "Jacques" <j...@neuf.fr> a écrit dans le message de news:
> 4ed8d93a-d40f-4643-b118-d27716a12...@a12g2000yqm.googlegroups.com...
> Bonjour,
> Ce code fonctionne pour rétablir les relations sur les tables d'une
> base locale,
> comment le modifier pour le faire fonctionner à partir d'une base
> frontale ?
> est-ce possible de rétablir des relations sur une base attachée ?
> Sub CreationRelations()
> Dim db As Database
> Dim rel As Relation
> Dim myField As DAO.Field
> Dim strsql As String
> Dim rs As DAO.Recordset
> Dim cpt As Integer
> cpt = 0
> Set db = Application.CurrentDb
> strsql = "Select * from [tbl Relations]"
> Set rs = db.OpenRecordset(strsql)
> If Not rs.EOF Then
> cpt = cpt + 1
> 'MsgBox cpt
> rs.MoveFirst
> While Not rs.EOF
> Set rel = db.CreateRelation(rs.Fields("NomRel ation"),
> rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> ("relAttributes"))
> Set myField = rel.CreateField(rs.Fields("Cham pPrincipal"))
> myField.ForeignName = rs.Fields("ChampSeconda ire")
> rel.Fields.Append myField
> CurrentDb.Relations.Append rel
> rs.MoveNext
> Wend
> End If
> End Sub
> Merci de votre aide.
> Salutations
Bonjour CErnst,
Merci pour ta réponse, mais j'ai un problème sur "user" et "password" ;
j'ai essayé en les remplaçants par des quotes "" aucun résultat.
Est-il possible de zapper ces deux éléments ?.
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
On 22 mar, 13:13, "CErnst" wrote:
> Dim ws As Workspace, db As Database
> Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password", dbUs eJet)
> Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> ...
> votre programme
> ....
> db.close : set db=nothing
> ws.close : set ws = nothing
> "Jacques" a écrit dans le message de news:
>
> Bonjour,
> Ce code fonctionne pour rétablir les relations sur les tables d'une
> base locale,
> comment le modifier pour le faire fonctionner à partir d'une base
> frontale ?
> est-ce possible de rétablir des relations sur une base attachée ?
> Sub CreationRelations()
> Dim db As Database
> Dim rel As Relation
> Dim myField As DAO.Field
> Dim strsql As String
> Dim rs As DAO.Recordset
> Dim cpt As Integer
> cpt = 0
> Set db = Application.CurrentDb
> strsql = "Select * from [tbl Relations]"
> Set rs = db.OpenRecordset(strsql)
> If Not rs.EOF Then
> cpt = cpt + 1
> 'MsgBox cpt
> rs.MoveFirst
> While Not rs.EOF
> Set rel = db.CreateRelation(rs.Fields("NomRel ation"),
> rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> ("relAttributes"))
> Set myField = rel.CreateField(rs.Fields("Cham pPrincipal"))
> myField.ForeignName = rs.Fields("ChampSeconda ire")
> rel.Fields.Append myField
> CurrentDb.Relations.Append rel
> rs.MoveNext
> Wend
> End If
> End Sub
> Merci de votre aide.
> Salutations
Bonjour CErnst,
Merci pour ta réponse, mais j'ai un problème sur "user" et "password" ;
j'ai essayé en les remplaçants par des quotes "" aucun résultat.
Est-il possible de zapper ces deux éléments ?.
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
On 22 mar, 13:13, "CErnst" wrote:
> Dim ws As Workspace, db As Database
> Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> dbUseJet)
> Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> ...
> votre programme
> ....
> db.close : set db=nothing
> ws.close : set ws = nothing
> "Jacques" a écrit dans le message de news:
>
> Bonjour,
> Ce code fonctionne pour rétablir les relations sur les tables d'une
> base locale,
> comment le modifier pour le faire fonctionner à partir d'une base
> frontale ?
> est-ce possible de rétablir des relations sur une base attachée ?
> Sub CreationRelations()
> Dim db As Database
> Dim rel As Relation
> Dim myField As DAO.Field
> Dim strsql As String
> Dim rs As DAO.Recordset
> Dim cpt As Integer
> cpt = 0
> Set db = Application.CurrentDb
> strsql = "Select * from [tbl Relations]"
> Set rs = db.OpenRecordset(strsql)
> If Not rs.EOF Then
> cpt = cpt + 1
> 'MsgBox cpt
> rs.MoveFirst
> While Not rs.EOF
> Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> ("relAttributes"))
> Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> myField.ForeignName = rs.Fields("ChampSecondaire")
> rel.Fields.Append myField
> CurrentDb.Relations.Append rel
> rs.MoveNext
> Wend
> End If
> End Sub
> Merci de votre aide.
> Salutations
Bonjour CErnst,
Merci pour ta réponse, mais j'ai un problème sur "user" et "password";
j'ai essayé en les remplaçants par des quotes "" aucun résultat.
Est-il possible de zapper ces deux éléments ?.
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
On 22 mar, 13:13, "CErnst" <contact.nos...@micro-gestion.fr> wrote:
> Dim ws As Workspace, db As Database
> Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> dbUseJet)
> Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> ...
> votre programme
> ....
> db.close : set db=nothing
> ws.close : set ws = nothing
> "Jacques" <j...@neuf.fr> a écrit dans le message de news:
> 4ed8d93a-d40f-4643-b118-d27716a12...@a12g2000yqm.googlegroups.com...
> Bonjour,
> Ce code fonctionne pour rétablir les relations sur les tables d'une
> base locale,
> comment le modifier pour le faire fonctionner à partir d'une base
> frontale ?
> est-ce possible de rétablir des relations sur une base attachée ?
> Sub CreationRelations()
> Dim db As Database
> Dim rel As Relation
> Dim myField As DAO.Field
> Dim strsql As String
> Dim rs As DAO.Recordset
> Dim cpt As Integer
> cpt = 0
> Set db = Application.CurrentDb
> strsql = "Select * from [tbl Relations]"
> Set rs = db.OpenRecordset(strsql)
> If Not rs.EOF Then
> cpt = cpt + 1
> 'MsgBox cpt
> rs.MoveFirst
> While Not rs.EOF
> Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> ("relAttributes"))
> Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> myField.ForeignName = rs.Fields("ChampSecondaire")
> rel.Fields.Append myField
> CurrentDb.Relations.Append rel
> rs.MoveNext
> Wend
> End If
> End Sub
> Merci de votre aide.
> Salutations
Bonjour CErnst,
Merci pour ta réponse, mais j'ai un problème sur "user" et "password";
j'ai essayé en les remplaçants par des quotes "" aucun résultat.
Est-il possible de zapper ces deux éléments ?.
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
On 22 mar, 13:13, "CErnst" wrote:
> Dim ws As Workspace, db As Database
> Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> dbUseJet)
> Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> ...
> votre programme
> ....
> db.close : set db=nothing
> ws.close : set ws = nothing
> "Jacques" a écrit dans le message de news:
>
> Bonjour,
> Ce code fonctionne pour rétablir les relations sur les tables d'une
> base locale,
> comment le modifier pour le faire fonctionner à partir d'une base
> frontale ?
> est-ce possible de rétablir des relations sur une base attachée ?
> Sub CreationRelations()
> Dim db As Database
> Dim rel As Relation
> Dim myField As DAO.Field
> Dim strsql As String
> Dim rs As DAO.Recordset
> Dim cpt As Integer
> cpt = 0
> Set db = Application.CurrentDb
> strsql = "Select * from [tbl Relations]"
> Set rs = db.OpenRecordset(strsql)
> If Not rs.EOF Then
> cpt = cpt + 1
> 'MsgBox cpt
> rs.MoveFirst
> While Not rs.EOF
> Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> ("relAttributes"))
> Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> myField.ForeignName = rs.Fields("ChampSecondaire")
> rel.Fields.Append myField
> CurrentDb.Relations.Append rel
> rs.MoveNext
> Wend
> End If
> End Sub
> Merci de votre aide.
> Salutations
Bonjour CErnst,
Merci pour ta réponse, mais j'ai un problème sur "user" et "password";
j'ai essayé en les remplaçants par des quotes "" aucun résultat.
Est-il possible de zapper ces deux éléments ?.
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Vous avez un problème de repérage de vos objets.
Il ne faut pas créer la relation dans Currentdb mais dans db, currentdb
étant la base dans laquelle le programme s'exécute (base courante).
Il faut dons créer la relation là où sont effectivement les tables, c'est à
dire l'objet Db.rs :
Db.Relations.Append rel
puisque rs est ouvert sur db et rel crée sur db
soit :
Sub CreationRelations()
Dim db As Database
Dim rel As Relation
Dim myField As DAO.Field
Dim strsql As String
Dim rs As DAO.Recordset
Dim cpt As Integer
Dim Ws as Workspace
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "" , dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
cpt = 0
strsql = "Select * from [tbl Relations]"
Set rs = db.OpenRecordset(strsql)
If Not rs.EOF Then
cpt = cpt + 1
rs.MoveFirst
While Not rs.EOF
Set rel = db.CreateRelation(rs.Field s("NomRelation"),
rs.Fields("TablePrincipale"), rs.Field s("TableSecondaire"),
rs.Fields("relAttributes"))
Set myField = rel.CreateField(rs.Fie lds("ChampPrincipal"))
myField.ForeignName = rs.Fields("Cha mpSecondaire")
rel.Fields.Append myField
Db.Relations.Append rel
rs.MoveNext
Wend
End If
End Sub
"jacques" a écrit dans le message de news:
On 22 mar, 17:44, jacques wrote:
> On 22 mar, 13:13, "CErnst" wrote:
> > Dim ws As Workspace, db As Database
> > Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> > dbUseJet)
> > Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> > ...
> > votre programme
> > ....
> > db.close : set db=nothing
> > ws.close : set ws = nothing
> > "Jacques" a écrit dans le message de news:
> >
> > Bonjour,
> > Ce code fonctionne pour rétablir les relations sur les tables d'une
> > base locale,
> > comment le modifier pour le faire fonctionner à partir d'une base
> > frontale ?
> > est-ce possible de rétablir des relations sur une base attachée ?
> > Sub CreationRelations()
> > Dim db As Database
> > Dim rel As Relation
> > Dim myField As DAO.Field
> > Dim strsql As String
> > Dim rs As DAO.Recordset
> > Dim cpt As Integer
> > cpt = 0
> > Set db = Application.CurrentDb
> > strsql = "Select * from [tbl Relations]"
> > Set rs = db.OpenRecordset(strsql)
> > If Not rs.EOF Then
> > cpt = cpt + 1
> > 'MsgBox cpt
> > rs.MoveFirst
> > While Not rs.EOF
> > Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> > rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> > ("relAttributes"))
> > Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> > myField.ForeignName = rs.Fields("ChampSecondaire")
> > rel.Fields.Append myField
> > CurrentDb.Relations.Append rel
> > rs.MoveNext
> > Wend
> > End If
> > End Sub
> > Merci de votre aide.
> > Salutations
> Bonjour CErnst,
> Merci pour ta réponse, mais j'ai un problème sur "user" et "passwor d";
> j'ai essayé en les remplaçants par des quotes "" aucun résultat.
> Est-il possible de zapper ces deux éléments ?.
> Salutations- Masquer le texte des messages précédents -
> - Afficher le texte des messages précédents -
Re bonjour,
J'ai ecrit la ligne de cette façons, et elle passe, Est-elle
correcte ?
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
strCheminBd doit bien être le chemin de la base dorsale ?
Le code se poursuit et j'ai l'erreur d'exécution 3047 Opération non
gérée sur les tables attachées sur cette ligne :
CurrentDb.Relations.Append rel
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Vous avez un problème de repérage de vos objets.
Il ne faut pas créer la relation dans Currentdb mais dans db, currentdb
étant la base dans laquelle le programme s'exécute (base courante).
Il faut dons créer la relation là où sont effectivement les tables, c'est à
dire l'objet Db.rs :
Db.Relations.Append rel
puisque rs est ouvert sur db et rel crée sur db
soit :
Sub CreationRelations()
Dim db As Database
Dim rel As Relation
Dim myField As DAO.Field
Dim strsql As String
Dim rs As DAO.Recordset
Dim cpt As Integer
Dim Ws as Workspace
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "" , dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
cpt = 0
strsql = "Select * from [tbl Relations]"
Set rs = db.OpenRecordset(strsql)
If Not rs.EOF Then
cpt = cpt + 1
rs.MoveFirst
While Not rs.EOF
Set rel = db.CreateRelation(rs.Field s("NomRelation"),
rs.Fields("TablePrincipale"), rs.Field s("TableSecondaire"),
rs.Fields("relAttributes"))
Set myField = rel.CreateField(rs.Fie lds("ChampPrincipal"))
myField.ForeignName = rs.Fields("Cha mpSecondaire")
rel.Fields.Append myField
Db.Relations.Append rel
rs.MoveNext
Wend
End If
End Sub
"jacques" <j...@neuf.fr> a écrit dans le message de news:
4930e8a2-bc88-425e-a0bc-e95bc3b16...@c36g2000yqn.googlegroups.com...
On 22 mar, 17:44, jacques <j...@neuf.fr> wrote:
> On 22 mar, 13:13, "CErnst" <contact.nos...@micro-gestion.fr> wrote:
> > Dim ws As Workspace, db As Database
> > Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> > dbUseJet)
> > Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> > ...
> > votre programme
> > ....
> > db.close : set db=nothing
> > ws.close : set ws = nothing
> > "Jacques" <j...@neuf.fr> a écrit dans le message de news:
> > 4ed8d93a-d40f-4643-b118-d27716a12...@a12g2000yqm.googlegroups.com...
> > Bonjour,
> > Ce code fonctionne pour rétablir les relations sur les tables d'une
> > base locale,
> > comment le modifier pour le faire fonctionner à partir d'une base
> > frontale ?
> > est-ce possible de rétablir des relations sur une base attachée ?
> > Sub CreationRelations()
> > Dim db As Database
> > Dim rel As Relation
> > Dim myField As DAO.Field
> > Dim strsql As String
> > Dim rs As DAO.Recordset
> > Dim cpt As Integer
> > cpt = 0
> > Set db = Application.CurrentDb
> > strsql = "Select * from [tbl Relations]"
> > Set rs = db.OpenRecordset(strsql)
> > If Not rs.EOF Then
> > cpt = cpt + 1
> > 'MsgBox cpt
> > rs.MoveFirst
> > While Not rs.EOF
> > Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> > rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> > ("relAttributes"))
> > Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> > myField.ForeignName = rs.Fields("ChampSecondaire")
> > rel.Fields.Append myField
> > CurrentDb.Relations.Append rel
> > rs.MoveNext
> > Wend
> > End If
> > End Sub
> > Merci de votre aide.
> > Salutations
> Bonjour CErnst,
> Merci pour ta réponse, mais j'ai un problème sur "user" et "passwor d";
> j'ai essayé en les remplaçants par des quotes "" aucun résultat.
> Est-il possible de zapper ces deux éléments ?.
> Salutations- Masquer le texte des messages précédents -
> - Afficher le texte des messages précédents -
Re bonjour,
J'ai ecrit la ligne de cette façons, et elle passe, Est-elle
correcte ?
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
strCheminBd doit bien être le chemin de la base dorsale ?
Le code se poursuit et j'ai l'erreur d'exécution 3047 Opération non
gérée sur les tables attachées sur cette ligne :
CurrentDb.Relations.Append rel
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Vous avez un problème de repérage de vos objets.
Il ne faut pas créer la relation dans Currentdb mais dans db, currentdb
étant la base dans laquelle le programme s'exécute (base courante).
Il faut dons créer la relation là où sont effectivement les tables, c'est à
dire l'objet Db.rs :
Db.Relations.Append rel
puisque rs est ouvert sur db et rel crée sur db
soit :
Sub CreationRelations()
Dim db As Database
Dim rel As Relation
Dim myField As DAO.Field
Dim strsql As String
Dim rs As DAO.Recordset
Dim cpt As Integer
Dim Ws as Workspace
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "" , dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
cpt = 0
strsql = "Select * from [tbl Relations]"
Set rs = db.OpenRecordset(strsql)
If Not rs.EOF Then
cpt = cpt + 1
rs.MoveFirst
While Not rs.EOF
Set rel = db.CreateRelation(rs.Field s("NomRelation"),
rs.Fields("TablePrincipale"), rs.Field s("TableSecondaire"),
rs.Fields("relAttributes"))
Set myField = rel.CreateField(rs.Fie lds("ChampPrincipal"))
myField.ForeignName = rs.Fields("Cha mpSecondaire")
rel.Fields.Append myField
Db.Relations.Append rel
rs.MoveNext
Wend
End If
End Sub
"jacques" a écrit dans le message de news:
On 22 mar, 17:44, jacques wrote:
> On 22 mar, 13:13, "CErnst" wrote:
> > Dim ws As Workspace, db As Database
> > Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> > dbUseJet)
> > Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> > ...
> > votre programme
> > ....
> > db.close : set db=nothing
> > ws.close : set ws = nothing
> > "Jacques" a écrit dans le message de news:
> >
> > Bonjour,
> > Ce code fonctionne pour rétablir les relations sur les tables d'une
> > base locale,
> > comment le modifier pour le faire fonctionner à partir d'une base
> > frontale ?
> > est-ce possible de rétablir des relations sur une base attachée ?
> > Sub CreationRelations()
> > Dim db As Database
> > Dim rel As Relation
> > Dim myField As DAO.Field
> > Dim strsql As String
> > Dim rs As DAO.Recordset
> > Dim cpt As Integer
> > cpt = 0
> > Set db = Application.CurrentDb
> > strsql = "Select * from [tbl Relations]"
> > Set rs = db.OpenRecordset(strsql)
> > If Not rs.EOF Then
> > cpt = cpt + 1
> > 'MsgBox cpt
> > rs.MoveFirst
> > While Not rs.EOF
> > Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> > rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> > ("relAttributes"))
> > Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> > myField.ForeignName = rs.Fields("ChampSecondaire")
> > rel.Fields.Append myField
> > CurrentDb.Relations.Append rel
> > rs.MoveNext
> > Wend
> > End If
> > End Sub
> > Merci de votre aide.
> > Salutations
> Bonjour CErnst,
> Merci pour ta réponse, mais j'ai un problème sur "user" et "passwor d";
> j'ai essayé en les remplaçants par des quotes "" aucun résultat.
> Est-il possible de zapper ces deux éléments ?.
> Salutations- Masquer le texte des messages précédents -
> - Afficher le texte des messages précédents -
Re bonjour,
J'ai ecrit la ligne de cette façons, et elle passe, Est-elle
correcte ?
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
strCheminBd doit bien être le chemin de la base dorsale ?
Le code se poursuit et j'ai l'erreur d'exécution 3047 Opération non
gérée sur les tables attachées sur cette ligne :
CurrentDb.Relations.Append rel
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Vous avez un problème de repérage de vos objets.
Il ne faut pas créer la relation dans Currentdb mais dans db, currentdb
étant la base dans laquelle le programme s'exécute (base courante).
Il faut dons créer la relation là où sont effectivement les tables, c'est
à
dire l'objet Db.rs :
Db.Relations.Append rel
puisque rs est ouvert sur db et rel crée sur db
soit :
Sub CreationRelations()
Dim db As Database
Dim rel As Relation
Dim myField As DAO.Field
Dim strsql As String
Dim rs As DAO.Recordset
Dim cpt As Integer
Dim Ws as Workspace
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
cpt = 0
strsql = "Select * from [tbl Relations]"
Set rs = db.OpenRecordset(strsql)
If Not rs.EOF Then
cpt = cpt + 1
rs.MoveFirst
While Not rs.EOF
Set rel = db.CreateRelation(rs.Fields("NomRelation"),
rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"),
rs.Fields("relAttributes"))
Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
myField.ForeignName = rs.Fields("ChampSecondaire")
rel.Fields.Append myField
Db.Relations.Append rel
rs.MoveNext
Wend
End If
End Sub
"jacques" a écrit dans le message de news:
On 22 mar, 17:44, jacques wrote:
> On 22 mar, 13:13, "CErnst" wrote:
> > Dim ws As Workspace, db As Database
> > Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> > dbUseJet)
> > Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> > ...
> > votre programme
> > ....
> > db.close : set db=nothing
> > ws.close : set ws = nothing
> > "Jacques" a écrit dans le message de news:
> >
> > Bonjour,
> > Ce code fonctionne pour rétablir les relations sur les tables d'une
> > base locale,
> > comment le modifier pour le faire fonctionner à partir d'une base
> > frontale ?
> > est-ce possible de rétablir des relations sur une base attachée ?
> > Sub CreationRelations()
> > Dim db As Database
> > Dim rel As Relation
> > Dim myField As DAO.Field
> > Dim strsql As String
> > Dim rs As DAO.Recordset
> > Dim cpt As Integer
> > cpt = 0
> > Set db = Application.CurrentDb
> > strsql = "Select * from [tbl Relations]"
> > Set rs = db.OpenRecordset(strsql)
> > If Not rs.EOF Then
> > cpt = cpt + 1
> > 'MsgBox cpt
> > rs.MoveFirst
> > While Not rs.EOF
> > Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> > rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> > ("relAttributes"))
> > Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> > myField.ForeignName = rs.Fields("ChampSecondaire")
> > rel.Fields.Append myField
> > CurrentDb.Relations.Append rel
> > rs.MoveNext
> > Wend
> > End If
> > End Sub
> > Merci de votre aide.
> > Salutations
> Bonjour CErnst,
> Merci pour ta réponse, mais j'ai un problème sur "user" et "password";
> j'ai essayé en les remplaçants par des quotes "" aucun résultat.
> Est-il possible de zapper ces deux éléments ?.
> Salutations- Masquer le texte des messages précédents -
> - Afficher le texte des messages précédents -
Re bonjour,
J'ai ecrit la ligne de cette façons, et elle passe, Est-elle
correcte ?
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
strCheminBd doit bien être le chemin de la base dorsale ?
Le code se poursuit et j'ai l'erreur d'exécution 3047 Opération non
gérée sur les tables attachées sur cette ligne :
CurrentDb.Relations.Append rel
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Vous avez un problème de repérage de vos objets.
Il ne faut pas créer la relation dans Currentdb mais dans db, currentdb
étant la base dans laquelle le programme s'exécute (base courante).
Il faut dons créer la relation là où sont effectivement les tables, c'est
à
dire l'objet Db.rs :
Db.Relations.Append rel
puisque rs est ouvert sur db et rel crée sur db
soit :
Sub CreationRelations()
Dim db As Database
Dim rel As Relation
Dim myField As DAO.Field
Dim strsql As String
Dim rs As DAO.Recordset
Dim cpt As Integer
Dim Ws as Workspace
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
cpt = 0
strsql = "Select * from [tbl Relations]"
Set rs = db.OpenRecordset(strsql)
If Not rs.EOF Then
cpt = cpt + 1
rs.MoveFirst
While Not rs.EOF
Set rel = db.CreateRelation(rs.Fields("NomRelation"),
rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"),
rs.Fields("relAttributes"))
Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
myField.ForeignName = rs.Fields("ChampSecondaire")
rel.Fields.Append myField
Db.Relations.Append rel
rs.MoveNext
Wend
End If
End Sub
"jacques" <j...@neuf.fr> a écrit dans le message de news:
4930e8a2-bc88-425e-a0bc-e95bc3b16...@c36g2000yqn.googlegroups.com...
On 22 mar, 17:44, jacques <j...@neuf.fr> wrote:
> On 22 mar, 13:13, "CErnst" <contact.nos...@micro-gestion.fr> wrote:
> > Dim ws As Workspace, db As Database
> > Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> > dbUseJet)
> > Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> > ...
> > votre programme
> > ....
> > db.close : set db=nothing
> > ws.close : set ws = nothing
> > "Jacques" <j...@neuf.fr> a écrit dans le message de news:
> > 4ed8d93a-d40f-4643-b118-d27716a12...@a12g2000yqm.googlegroups.com...
> > Bonjour,
> > Ce code fonctionne pour rétablir les relations sur les tables d'une
> > base locale,
> > comment le modifier pour le faire fonctionner à partir d'une base
> > frontale ?
> > est-ce possible de rétablir des relations sur une base attachée ?
> > Sub CreationRelations()
> > Dim db As Database
> > Dim rel As Relation
> > Dim myField As DAO.Field
> > Dim strsql As String
> > Dim rs As DAO.Recordset
> > Dim cpt As Integer
> > cpt = 0
> > Set db = Application.CurrentDb
> > strsql = "Select * from [tbl Relations]"
> > Set rs = db.OpenRecordset(strsql)
> > If Not rs.EOF Then
> > cpt = cpt + 1
> > 'MsgBox cpt
> > rs.MoveFirst
> > While Not rs.EOF
> > Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> > rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> > ("relAttributes"))
> > Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> > myField.ForeignName = rs.Fields("ChampSecondaire")
> > rel.Fields.Append myField
> > CurrentDb.Relations.Append rel
> > rs.MoveNext
> > Wend
> > End If
> > End Sub
> > Merci de votre aide.
> > Salutations
> Bonjour CErnst,
> Merci pour ta réponse, mais j'ai un problème sur "user" et "password";
> j'ai essayé en les remplaçants par des quotes "" aucun résultat.
> Est-il possible de zapper ces deux éléments ?.
> Salutations- Masquer le texte des messages précédents -
> - Afficher le texte des messages précédents -
Re bonjour,
J'ai ecrit la ligne de cette façons, et elle passe, Est-elle
correcte ?
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
strCheminBd doit bien être le chemin de la base dorsale ?
Le code se poursuit et j'ai l'erreur d'exécution 3047 Opération non
gérée sur les tables attachées sur cette ligne :
CurrentDb.Relations.Append rel
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Vous avez un problème de repérage de vos objets.
Il ne faut pas créer la relation dans Currentdb mais dans db, currentdb
étant la base dans laquelle le programme s'exécute (base courante).
Il faut dons créer la relation là où sont effectivement les tables, c'est
à
dire l'objet Db.rs :
Db.Relations.Append rel
puisque rs est ouvert sur db et rel crée sur db
soit :
Sub CreationRelations()
Dim db As Database
Dim rel As Relation
Dim myField As DAO.Field
Dim strsql As String
Dim rs As DAO.Recordset
Dim cpt As Integer
Dim Ws as Workspace
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
cpt = 0
strsql = "Select * from [tbl Relations]"
Set rs = db.OpenRecordset(strsql)
If Not rs.EOF Then
cpt = cpt + 1
rs.MoveFirst
While Not rs.EOF
Set rel = db.CreateRelation(rs.Fields("NomRelation"),
rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"),
rs.Fields("relAttributes"))
Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
myField.ForeignName = rs.Fields("ChampSecondaire")
rel.Fields.Append myField
Db.Relations.Append rel
rs.MoveNext
Wend
End If
End Sub
"jacques" a écrit dans le message de news:
On 22 mar, 17:44, jacques wrote:
> On 22 mar, 13:13, "CErnst" wrote:
> > Dim ws As Workspace, db As Database
> > Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> > dbUseJet)
> > Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> > ...
> > votre programme
> > ....
> > db.close : set db=nothing
> > ws.close : set ws = nothing
> > "Jacques" a écrit dans le message de news:
> >
> > Bonjour,
> > Ce code fonctionne pour rétablir les relations sur les tables d'une
> > base locale,
> > comment le modifier pour le faire fonctionner à partir d'une base
> > frontale ?
> > est-ce possible de rétablir des relations sur une base attachée ?
> > Sub CreationRelations()
> > Dim db As Database
> > Dim rel As Relation
> > Dim myField As DAO.Field
> > Dim strsql As String
> > Dim rs As DAO.Recordset
> > Dim cpt As Integer
> > cpt = 0
> > Set db = Application.CurrentDb
> > strsql = "Select * from [tbl Relations]"
> > Set rs = db.OpenRecordset(strsql)
> > If Not rs.EOF Then
> > cpt = cpt + 1
> > 'MsgBox cpt
> > rs.MoveFirst
> > While Not rs.EOF
> > Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> > rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fields
> > ("relAttributes"))
> > Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> > myField.ForeignName = rs.Fields("ChampSecondaire")
> > rel.Fields.Append myField
> > CurrentDb.Relations.Append rel
> > rs.MoveNext
> > Wend
> > End If
> > End Sub
> > Merci de votre aide.
> > Salutations
> Bonjour CErnst,
> Merci pour ta réponse, mais j'ai un problème sur "user" et "password";
> j'ai essayé en les remplaçants par des quotes "" aucun résultat.
> Est-il possible de zapper ces deux éléments ?.
> Salutations- Masquer le texte des messages précédents -
> - Afficher le texte des messages précédents -
Re bonjour,
J'ai ecrit la ligne de cette façons, et elle passe, Est-elle
correcte ?
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
Set db = ws.OpenDatabase(strCheminBd)
strCheminBd doit bien être le chemin de la base dorsale ?
Le code se poursuit et j'ai l'erreur d'exécution 3047 Opération non
gérée sur les tables attachées sur cette ligne :
CurrentDb.Relations.Append rel
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Il y a plus simple pour supprimer les relations :
Dim WS as workspace, DB As Database,pr%
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJ et)
Set db = ws.OpenDatabase(strCheminBd)
On Error Resume Next
While DB.Relations.Count > 0
DB.Relations.Delete DB.Relations(0).Name
Wend
db.close: set db=nothing
set ws=nothing
"jacques" a écrit dans le message de news:
On 22 mar, 21:01, "CErnst" wrote:
> Vous avez un problème de repérage de vos objets.
> Il ne faut pas créer la relation dans Currentdb mais dans db, current db
> étant la base dans laquelle le programme s'exécute (base courante).
> Il faut dons créer la relation là où sont effectivement les table s, c'est
> à
> dire l'objet Db.rs :
> Db.Relations.Append rel
> puisque rs est ouvert sur db et rel crée sur db
> soit :
> Sub CreationRelations()
> Dim db As Database
> Dim rel As Relation
> Dim myField As DAO.Field
> Dim strsql As String
> Dim rs As DAO.Recordset
> Dim cpt As Integer
> Dim Ws as Workspace
> Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
> Set db = ws.OpenDatabase(strCheminBd)
> cpt = 0
> strsql = "Select * from [tbl Relations]"
> Set rs = db.OpenRecordset(strsql)
> If Not rs.EOF Then
> cpt = cpt + 1
> rs.MoveFirst
> While Not rs.EOF
> Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"),
> rs.Fields("relAttributes"))
> Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> myField.ForeignName = rs.Fields("ChampSecondaire")
> rel.Fields.Append myField
> Db.Relations.Append rel
> rs.MoveNext
> Wend
> End If
> End Sub
> "jacques" a écrit dans le message de news:
>
> On 22 mar, 17:44, jacques wrote:
> > On 22 mar, 13:13, "CErnst" wrote:
> > > Dim ws As Workspace, db As Database
> > > Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> > > dbUseJet)
> > > Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> > > ...
> > > votre programme
> > > ....
> > > db.close : set db=nothing
> > > ws.close : set ws = nothing
> > > "Jacques" a écrit dans le message de news:
> > > .
> > > Bonjour,
> > > Ce code fonctionne pour rétablir les relations sur les tables d'u ne
> > > base locale,
> > > comment le modifier pour le faire fonctionner à partir d'une base
> > > frontale ?
> > > est-ce possible de rétablir des relations sur une base attachée ?
> > > Sub CreationRelations()
> > > Dim db As Database
> > > Dim rel As Relation
> > > Dim myField As DAO.Field
> > > Dim strsql As String
> > > Dim rs As DAO.Recordset
> > > Dim cpt As Integer
> > > cpt = 0
> > > Set db = Application.CurrentDb
> > > strsql = "Select * from [tbl Relations]"
> > > Set rs = db.OpenRecordset(strsql)
> > > If Not rs.EOF Then
> > > cpt = cpt + 1
> > > 'MsgBox cpt
> > > rs.MoveFirst
> > > While Not rs.EOF
> > > Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> > > rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fiel ds
> > > ("relAttributes"))
> > > Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> > > myField.ForeignName = rs.Fields("ChampSecondaire")
> > > rel.Fields.Append myField
> > > CurrentDb.Relations.Append rel
> > > rs.MoveNext
> > > Wend
> > > End If
> > > End Sub
> > > Merci de votre aide.
> > > Salutations
> > Bonjour CErnst,
> > Merci pour ta réponse, mais j'ai un problème sur "user" et "passw ord";
> > j'ai essayé en les remplaçants par des quotes "" aucun résultat .
> > Est-il possible de zapper ces deux éléments ?.
> > Salutations- Masquer le texte des messages précédents -
> > - Afficher le texte des messages précédents -
> Re bonjour,
> J'ai ecrit la ligne de cette façons, et elle passe, Est-elle
> correcte ?
> Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
> Set db = ws.OpenDatabase(strCheminBd)
> strCheminBd doit bien être le chemin de la base dorsale ?
> Le code se poursuit et j'ai l'erreur d'exécution 3047 Opération non
> gérée sur les tables attachées sur cette ligne :
> CurrentDb.Relations.Append rel
> Salutations- Masquer le texte des messages précédents -
> - Afficher le texte des messages précédents -
Bonsoir CErnst,
Merci pour le code modifier est tes explications très utile.
Pour effacer mes relations j'utilise ce code et je voudrais
l'intégrer
à la procédure rétablir les liaisons. Est-ce possible ?
Private Sub SupprimerRelations()
Dim rel As Relation
Dim sqlString As String
sqlString = "Create table [tbl Relations] (NomRelation varchar
(200),TablePrincipale varchar(30), " & _
"TableSecondaire varchar(30),relAttributes varcha r (30), "
& _
"ChampPrincipal varchar(30), ChampSecondaire varc har(30))"
DoCmd.RunSQL sqlString
For Each rel In CurrentDb.Relations
sqlString = "Insert into [tbl Relations] values ('" & rel.Name &
"', '" & rel.Table & "', '" & _
r el.ForeignTable & "','" &
rel.Attributes & "','" & _
r el.Fields(0).Name & "','" &
rel.Fields(0).ForeignName & "')"
DoCmd.SetWarnings (False)
DoCmd.RunSQL sqlString
DoCmd.SetWarnings (True)
CurrentDb.Relations.Delete rel.Name
Next rel
End Sub
Merci pour ton aide.
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Il y a plus simple pour supprimer les relations :
Dim WS as workspace, DB As Database,pr%
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJ et)
Set db = ws.OpenDatabase(strCheminBd)
On Error Resume Next
While DB.Relations.Count > 0
DB.Relations.Delete DB.Relations(0).Name
Wend
db.close: set db=nothing
set ws=nothing
"jacques" <j...@neuf.fr> a écrit dans le message de news:
cb4c7566-eb02-417a-b846-d8a6d8247...@w34g2000yqm.googlegroups.com...
On 22 mar, 21:01, "CErnst" <contact.nos...@micro-gestion.fr> wrote:
> Vous avez un problème de repérage de vos objets.
> Il ne faut pas créer la relation dans Currentdb mais dans db, current db
> étant la base dans laquelle le programme s'exécute (base courante).
> Il faut dons créer la relation là où sont effectivement les table s, c'est
> à
> dire l'objet Db.rs :
> Db.Relations.Append rel
> puisque rs est ouvert sur db et rel crée sur db
> soit :
> Sub CreationRelations()
> Dim db As Database
> Dim rel As Relation
> Dim myField As DAO.Field
> Dim strsql As String
> Dim rs As DAO.Recordset
> Dim cpt As Integer
> Dim Ws as Workspace
> Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
> Set db = ws.OpenDatabase(strCheminBd)
> cpt = 0
> strsql = "Select * from [tbl Relations]"
> Set rs = db.OpenRecordset(strsql)
> If Not rs.EOF Then
> cpt = cpt + 1
> rs.MoveFirst
> While Not rs.EOF
> Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"),
> rs.Fields("relAttributes"))
> Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> myField.ForeignName = rs.Fields("ChampSecondaire")
> rel.Fields.Append myField
> Db.Relations.Append rel
> rs.MoveNext
> Wend
> End If
> End Sub
> "jacques" <j...@neuf.fr> a écrit dans le message de news:
> 4930e8a2-bc88-425e-a0bc-e95bc3b16...@c36g2000yqn.googlegroups.com...
> On 22 mar, 17:44, jacques <j...@neuf.fr> wrote:
> > On 22 mar, 13:13, "CErnst" <contact.nos...@micro-gestion.fr> wrote:
> > > Dim ws As Workspace, db As Database
> > > Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> > > dbUseJet)
> > > Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> > > ...
> > > votre programme
> > > ....
> > > db.close : set db=nothing
> > > ws.close : set ws = nothing
> > > "Jacques" <j...@neuf.fr> a écrit dans le message de news:
> > > 4ed8d93a-d40f-4643-b118-d27716a12...@a12g2000yqm.googlegroups.com.. .
> > > Bonjour,
> > > Ce code fonctionne pour rétablir les relations sur les tables d'u ne
> > > base locale,
> > > comment le modifier pour le faire fonctionner à partir d'une base
> > > frontale ?
> > > est-ce possible de rétablir des relations sur une base attachée ?
> > > Sub CreationRelations()
> > > Dim db As Database
> > > Dim rel As Relation
> > > Dim myField As DAO.Field
> > > Dim strsql As String
> > > Dim rs As DAO.Recordset
> > > Dim cpt As Integer
> > > cpt = 0
> > > Set db = Application.CurrentDb
> > > strsql = "Select * from [tbl Relations]"
> > > Set rs = db.OpenRecordset(strsql)
> > > If Not rs.EOF Then
> > > cpt = cpt + 1
> > > 'MsgBox cpt
> > > rs.MoveFirst
> > > While Not rs.EOF
> > > Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> > > rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fiel ds
> > > ("relAttributes"))
> > > Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> > > myField.ForeignName = rs.Fields("ChampSecondaire")
> > > rel.Fields.Append myField
> > > CurrentDb.Relations.Append rel
> > > rs.MoveNext
> > > Wend
> > > End If
> > > End Sub
> > > Merci de votre aide.
> > > Salutations
> > Bonjour CErnst,
> > Merci pour ta réponse, mais j'ai un problème sur "user" et "passw ord";
> > j'ai essayé en les remplaçants par des quotes "" aucun résultat .
> > Est-il possible de zapper ces deux éléments ?.
> > Salutations- Masquer le texte des messages précédents -
> > - Afficher le texte des messages précédents -
> Re bonjour,
> J'ai ecrit la ligne de cette façons, et elle passe, Est-elle
> correcte ?
> Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
> Set db = ws.OpenDatabase(strCheminBd)
> strCheminBd doit bien être le chemin de la base dorsale ?
> Le code se poursuit et j'ai l'erreur d'exécution 3047 Opération non
> gérée sur les tables attachées sur cette ligne :
> CurrentDb.Relations.Append rel
> Salutations- Masquer le texte des messages précédents -
> - Afficher le texte des messages précédents -
Bonsoir CErnst,
Merci pour le code modifier est tes explications très utile.
Pour effacer mes relations j'utilise ce code et je voudrais
l'intégrer
à la procédure rétablir les liaisons. Est-ce possible ?
Private Sub SupprimerRelations()
Dim rel As Relation
Dim sqlString As String
sqlString = "Create table [tbl Relations] (NomRelation varchar
(200),TablePrincipale varchar(30), " & _
"TableSecondaire varchar(30),relAttributes varcha r (30), "
& _
"ChampPrincipal varchar(30), ChampSecondaire varc har(30))"
DoCmd.RunSQL sqlString
For Each rel In CurrentDb.Relations
sqlString = "Insert into [tbl Relations] values ('" & rel.Name &
"', '" & rel.Table & "', '" & _
r el.ForeignTable & "','" &
rel.Attributes & "','" & _
r el.Fields(0).Name & "','" &
rel.Fields(0).ForeignName & "')"
DoCmd.SetWarnings (False)
DoCmd.RunSQL sqlString
DoCmd.SetWarnings (True)
CurrentDb.Relations.Delete rel.Name
Next rel
End Sub
Merci pour ton aide.
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Il y a plus simple pour supprimer les relations :
Dim WS as workspace, DB As Database,pr%
Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJ et)
Set db = ws.OpenDatabase(strCheminBd)
On Error Resume Next
While DB.Relations.Count > 0
DB.Relations.Delete DB.Relations(0).Name
Wend
db.close: set db=nothing
set ws=nothing
"jacques" a écrit dans le message de news:
On 22 mar, 21:01, "CErnst" wrote:
> Vous avez un problème de repérage de vos objets.
> Il ne faut pas créer la relation dans Currentdb mais dans db, current db
> étant la base dans laquelle le programme s'exécute (base courante).
> Il faut dons créer la relation là où sont effectivement les table s, c'est
> à
> dire l'objet Db.rs :
> Db.Relations.Append rel
> puisque rs est ouvert sur db et rel crée sur db
> soit :
> Sub CreationRelations()
> Dim db As Database
> Dim rel As Relation
> Dim myField As DAO.Field
> Dim strsql As String
> Dim rs As DAO.Recordset
> Dim cpt As Integer
> Dim Ws as Workspace
> Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
> Set db = ws.OpenDatabase(strCheminBd)
> cpt = 0
> strsql = "Select * from [tbl Relations]"
> Set rs = db.OpenRecordset(strsql)
> If Not rs.EOF Then
> cpt = cpt + 1
> rs.MoveFirst
> While Not rs.EOF
> Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"),
> rs.Fields("relAttributes"))
> Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> myField.ForeignName = rs.Fields("ChampSecondaire")
> rel.Fields.Append myField
> Db.Relations.Append rel
> rs.MoveNext
> Wend
> End If
> End Sub
> "jacques" a écrit dans le message de news:
>
> On 22 mar, 17:44, jacques wrote:
> > On 22 mar, 13:13, "CErnst" wrote:
> > > Dim ws As Workspace, db As Database
> > > Set ws = DBEngine.CreateWorkspace("Nouveau", "user", "password",
> > > dbUseJet)
> > > Set db = ws.OpenDatabase("C:RépertoireBaseDeDonnées.mdb")
> > > ...
> > > votre programme
> > > ....
> > > db.close : set db=nothing
> > > ws.close : set ws = nothing
> > > "Jacques" a écrit dans le message de news:
> > > .
> > > Bonjour,
> > > Ce code fonctionne pour rétablir les relations sur les tables d'u ne
> > > base locale,
> > > comment le modifier pour le faire fonctionner à partir d'une base
> > > frontale ?
> > > est-ce possible de rétablir des relations sur une base attachée ?
> > > Sub CreationRelations()
> > > Dim db As Database
> > > Dim rel As Relation
> > > Dim myField As DAO.Field
> > > Dim strsql As String
> > > Dim rs As DAO.Recordset
> > > Dim cpt As Integer
> > > cpt = 0
> > > Set db = Application.CurrentDb
> > > strsql = "Select * from [tbl Relations]"
> > > Set rs = db.OpenRecordset(strsql)
> > > If Not rs.EOF Then
> > > cpt = cpt + 1
> > > 'MsgBox cpt
> > > rs.MoveFirst
> > > While Not rs.EOF
> > > Set rel = db.CreateRelation(rs.Fields("NomRelation"),
> > > rs.Fields("TablePrincipale"), rs.Fields("TableSecondaire"), rs.Fiel ds
> > > ("relAttributes"))
> > > Set myField = rel.CreateField(rs.Fields("ChampPrincipal"))
> > > myField.ForeignName = rs.Fields("ChampSecondaire")
> > > rel.Fields.Append myField
> > > CurrentDb.Relations.Append rel
> > > rs.MoveNext
> > > Wend
> > > End If
> > > End Sub
> > > Merci de votre aide.
> > > Salutations
> > Bonjour CErnst,
> > Merci pour ta réponse, mais j'ai un problème sur "user" et "passw ord";
> > j'ai essayé en les remplaçants par des quotes "" aucun résultat .
> > Est-il possible de zapper ces deux éléments ?.
> > Salutations- Masquer le texte des messages précédents -
> > - Afficher le texte des messages précédents -
> Re bonjour,
> J'ai ecrit la ligne de cette façons, et elle passe, Est-elle
> correcte ?
> Set ws = DBEngine.CreateWorkspace("Nouveau", "Admin", "", dbUseJet)
> Set db = ws.OpenDatabase(strCheminBd)
> strCheminBd doit bien être le chemin de la base dorsale ?
> Le code se poursuit et j'ai l'erreur d'exécution 3047 Opération non
> gérée sur les tables attachées sur cette ligne :
> CurrentDb.Relations.Append rel
> Salutations- Masquer le texte des messages précédents -
> - Afficher le texte des messages précédents -
Bonsoir CErnst,
Merci pour le code modifier est tes explications très utile.
Pour effacer mes relations j'utilise ce code et je voudrais
l'intégrer
à la procédure rétablir les liaisons. Est-ce possible ?
Private Sub SupprimerRelations()
Dim rel As Relation
Dim sqlString As String
sqlString = "Create table [tbl Relations] (NomRelation varchar
(200),TablePrincipale varchar(30), " & _
"TableSecondaire varchar(30),relAttributes varcha r (30), "
& _
"ChampPrincipal varchar(30), ChampSecondaire varc har(30))"
DoCmd.RunSQL sqlString
For Each rel In CurrentDb.Relations
sqlString = "Insert into [tbl Relations] values ('" & rel.Name &
"', '" & rel.Table & "', '" & _
r el.ForeignTable & "','" &
rel.Attributes & "','" & _
r el.Fields(0).Name & "','" &
rel.Fields(0).ForeignName & "')"
DoCmd.SetWarnings (False)
DoCmd.RunSQL sqlString
DoCmd.SetWarnings (True)
CurrentDb.Relations.Delete rel.Name
Next rel
End Sub
Merci pour ton aide.
Salutations- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -