OVH Cloud OVH Cloud

VBA et tables liées

3 réponses
Avatar
Eddie
Bonjour =E0 tous,

Voici mon code

Public Sub Entr=E9eDonn=E9es()
Dim db As Database
Dim rst As Recordset
Dim i As Integer
=20
Set db =3D Application.CurrentDb
Set rst =3D db.OpenRecordset("test", dbOpenTable,=20
dbAppendOnly)
=20
For i =3D 1 To 360
With rst
.AddNew
!nom =3D "Nom " & i
!X =3D i
!Y =3D Sin(i)
!Z =3D Cos(i)
.Update
End With
Next i
rst.Close
Set rst =3D Nothing
Set db =3D Nothing
End Sub

Il fonctionne tr=E8s bien si la table test n'est pas une=20
table li=E9e. Si la table est li=E9e j'ai le message "objet=20
non valide" au moment d'ouvrir le recordset.
Je ne sais pas comment faire pour ouvrir une table qui=20
n'est pas de la base courante.

Merci pour l'aide que vous m'apporterez

3 réponses

Avatar
Raymond [mvp]
Bonsoir.

essaie:

Set rst = db.OpenRecordset("select * from test")

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Eddie" a écrit dans le message de
news:00e801c3b505$f4c87e30$
Bonjour à tous,

Voici mon code

Public Sub EntréeDonnées()
Dim db As Database
Dim rst As Recordset
Dim i As Integer

Set db = Application.CurrentDb
Set rst = db.OpenRecordset("test", dbOpenTable,
dbAppendOnly)

For i = 1 To 360
With rst
.AddNew
!nom = "Nom " & i
!X = i
!Y = Sin(i)
!Z = Cos(i)
.Update
End With
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
End Sub

Il fonctionne très bien si la table test n'est pas une
table liée. Si la table est liée j'ai le message "objet
non valide" au moment d'ouvrir le recordset.
Je ne sais pas comment faire pour ouvrir une table qui
n'est pas de la base courante.

Merci pour l'aide que vous m'apporterez
Avatar
je ne comprend pas pourquoi mais ça marche.
Merci

-----Message d'origine-----
Bonsoir.

essaie:

Set rst = db.OpenRecordset("select * from test")

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Eddie" a écrit
dans le message de

news:00e801c3b505$f4c87e30$
Bonjour à tous,

Voici mon code

Public Sub EntréeDonnées()
Dim db As Database
Dim rst As Recordset
Dim i As Integer

Set db = Application.CurrentDb
Set rst = db.OpenRecordset("test", dbOpenTable,
dbAppendOnly)

For i = 1 To 360
With rst
.AddNew
!nom = "Nom " & i
!X = i
!Y = Sin(i)
!Z = Cos(i)
.Update
End With
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
End Sub

Il fonctionne très bien si la table test n'est pas une
table liée. Si la table est liée j'ai le message "objet
non valide" au moment d'ouvrir le recordset.
Je ne sais pas comment faire pour ouvrir une table qui
n'est pas de la base courante.

Merci pour l'aide que vous m'apporterez


.



Avatar
Benoit Compoint [MS]
Bonsoir,

Vous auriez aussi pu utiliser l'instruction suivante :
Set rst = db.OpenRecordset("test")
ou encore :
Set rst = db.OpenRecordset("test",dbOpenDynaset)

Par contre, votre instruction "Set rst = db.OpenRecordset("test",
dbOpenTable,dbAppendOnly)" était incorrecte parce que la table "test" est
une table attachée.
La constante dbOpenTable ne peut être passée comme deuxième paramètre de la
méthode OpenRecordset que lorsque le premier paramètre est le nom d'une
table locale.

Benoît Compoint.


wrote in message
news:007f01c3b50d$e4e15200$
je ne comprend pas pourquoi mais ça marche.
Merci

-----Message d'origine-----
Bonsoir.

essaie:

Set rst = db.OpenRecordset("select * from test")

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Eddie" a écrit
dans le message de

news:00e801c3b505$f4c87e30$
Bonjour à tous,

Voici mon code

Public Sub EntréeDonnées()
Dim db As Database
Dim rst As Recordset
Dim i As Integer

Set db = Application.CurrentDb
Set rst = db.OpenRecordset("test", dbOpenTable,
dbAppendOnly)

For i = 1 To 360
With rst
.AddNew
!nom = "Nom " & i
!X = i
!Y = Sin(i)
!Z = Cos(i)
.Update
End With
Next i
rst.Close
Set rst = Nothing
Set db = Nothing
End Sub

Il fonctionne très bien si la table test n'est pas une
table liée. Si la table est liée j'ai le message "objet
non valide" au moment d'ouvrir le recordset.
Je ne sais pas comment faire pour ouvrir une table qui
n'est pas de la base courante.

Merci pour l'aide que vous m'apporterez


.