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

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

2 réponses
Avatar
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

2 réponses

Avatar
Jessy Sempere
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



Avatar
Clicnik
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