Différence entre BD avec tables intégrées / liées ???

Le
Clicnik
Bonjour,
Ma question va paraître bizarre, mais je me casse la tête sur un problème
qui ne devrait, à priori pas être. Dites-moi si je me trompe.

Je me suis inspiré de la Function IsFerie(Jour As Variant) As Boolean de Ole
P Erlandsen.
Celle-là étant parfaite pour les jours de congé, je l'ai adapté pour des
jours variant d'une année à l'autre que j'ai mis dans une table :
Liste_Holliday.
Je vais donc lire la table et mettre chaque enregistrement dans une matrice.
Voici le début du code qui me pose problème

Dim ListeH() As Long
Dim iCpt As Integer
Dim dbs As Database
Dim rstH As Recordset

Set dbs = CurrentDb()
Set rstH = dbs.OpenRecordset("Liste_Holliday")
iCpt = rstH.RecordCount
ReDim ListeH(iCpt)

un peu plus loin, j'ai

If Not rstH.EOF Then
rstH.MoveFirst
i = 1
While Not rstH.EOF
ListeH(i) = rstH!Jour
rstH.MoveNext
i = i + 1
Wend
End If
et puis le suite.

Le problème que j'ai est le suivant :
En ayant la table "Liste_Holliday" dans ma base de données, le programme
passe par cette fonction sans aucun problème :o)

Comme il y aura 2 utilisateurs sur la même BD, j'ai sorti les tables dans
une BD à part, et j'ai lié les tables dans ma BD où se trouve le programme.
Quand la fonction est activée, j'ai une erreur de type "Out of range" :(
En faisant un DEBUG.PRINT, je constate que iCpt et rstH.RecordCount sont à
1 alors que j'ai 3 lignes (pour le moment) dans ma table.
Par contre, quand je passe le curseur sur rstH.RecordCount, j'obtiens 3.

Quelqu'un a-t-il une idée du pourquoi ?
Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jessy Sempere
Le #6264191
Bonjour

C'est normal, pour que la valeur retourner par recordcount soit juste, il
faut au préalable parcourir le recordset...

Essais de remplacer par :

Set rstH = dbs.OpenRecordset("Liste_Holliday")
rstH.MoveLast
iCpt = rstH.RecordCount
rst.MoveFirst

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------



Bonjour,
Ma question va paraître bizarre, mais je me casse la tête sur un problème
qui ne devrait, à priori pas être. Dites-moi si je me trompe.

Je me suis inspiré de la Function IsFerie(Jour As Variant) As Boolean de Ole
P Erlandsen.
Celle-là étant parfaite pour les jours de congé, je l'ai adapté pour des
jours variant d'une année à l'autre que j'ai mis dans une table :
Liste_Holliday.
Je vais donc lire la table et mettre chaque enregistrement dans une matrice.
Voici le début du code qui me pose problème

Dim ListeH() As Long
Dim iCpt As Integer
Dim dbs As Database
Dim rstH As Recordset

Set dbs = CurrentDb()
Set rstH = dbs.OpenRecordset("Liste_Holliday")
iCpt = rstH.RecordCount
ReDim ListeH(iCpt)

... un peu plus loin, j'ai ...

If Not rstH.EOF Then
rstH.MoveFirst
i = 1
While Not rstH.EOF
ListeH(i) = rstH!Jour
rstH.MoveNext
i = i + 1
Wend
End If
... et puis le suite.

Le problème que j'ai est le suivant :
En ayant la table "Liste_Holliday" dans ma base de données, le programme
passe par cette fonction sans aucun problème :o)

Comme il y aura 2 utilisateurs sur la même BD, j'ai sorti les tables dans
une BD à part, et j'ai lié les tables dans ma BD où se trouve le programme.
Quand la fonction est activée, j'ai une erreur de type "Out of range" :(
En faisant un DEBUG.PRINT, je constate que iCpt et rstH.RecordCount sont à
1 alors que j'ai 3 lignes (pour le moment) dans ma table.
Par contre, quand je passe le curseur sur rstH.RecordCount, j'obtiens 3.

Quelqu'un a-t-il une idée du pourquoi ?
Merci d'avance



Clicnik
Le #6263751
Merci Jessy, ça fonctionne impeccablement maintenant ;)




Bonjour

C'est normal, pour que la valeur retourner par recordcount soit juste, il
faut au préalable parcourir le recordset...

Essais de remplacer par :

Set rstH = dbs.OpenRecordset("Liste_Holliday")
rstH.MoveLast
iCpt = rstH.RecordCount
rst.MoveFirst

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------



Bonjour,
Ma question va paraître bizarre, mais je me casse la tête sur un problème
qui ne devrait, à priori pas être. Dites-moi si je me trompe.

Je me suis inspiré de la Function IsFerie(Jour As Variant) As Boolean de Ole
P Erlandsen.
Celle-là étant parfaite pour les jours de congé, je l'ai adapté pour des
jours variant d'une année à l'autre que j'ai mis dans une table :
Liste_Holliday.
Je vais donc lire la table et mettre chaque enregistrement dans une matrice.
Voici le début du code qui me pose problème

Dim ListeH() As Long
Dim iCpt As Integer
Dim dbs As Database
Dim rstH As Recordset

Set dbs = CurrentDb()
Set rstH = dbs.OpenRecordset("Liste_Holliday")
iCpt = rstH.RecordCount
ReDim ListeH(iCpt)

... un peu plus loin, j'ai ...

If Not rstH.EOF Then
rstH.MoveFirst
i = 1
While Not rstH.EOF
ListeH(i) = rstH!Jour
rstH.MoveNext
i = i + 1
Wend
End If
... et puis le suite.

Le problème que j'ai est le suivant :
En ayant la table "Liste_Holliday" dans ma base de données, le programme
passe par cette fonction sans aucun problème :o)

Comme il y aura 2 utilisateurs sur la même BD, j'ai sorti les tables dans
une BD à part, et j'ai lié les tables dans ma BD où se trouve le programme.
Quand la fonction est activée, j'ai une erreur de type "Out of range" :(
En faisant un DEBUG.PRINT, je constate que iCpt et rstH.RecordCount sont à
1 alors que j'ai 3 lignes (pour le moment) dans ma table.
Par contre, quand je passe le curseur sur rstH.RecordCount, j'obtiens 3.

Quelqu'un a-t-il une idée du pourquoi ?
Merci d'avance





Publicité
Poster une réponse
Anonyme