OVH Cloud OVH Cloud

Trop bizarre!!

4 réponses
Avatar
Dominic Feron
Bonjour à tous,

J'ai un module qui permet de se connecter à une BD que j'ai conçu et que
j'utilise depuis longtemps. Ce module marche très bien.

Aujourd'hui, je ne sais pas pourquoi mais je ne suis plus capable d'utiliser
la propriété RecordCount d'un RecordSet, ça me retourne toujours -1.

Pourquoi? Pourtant, je suis toujours capable de récupérer l'information de
mes champs dont je suis aller chercher dans une BD. Oui, pour trouver le
nombre d'enregistrement avec une requête SQL, je peux toujours utiliser un
SELECT COUNT(*), mais j'aimais bien utiliser recordCount :(.

Quelqu'un a une idée pourquoi j'ai toujours ce résultat?

Voici un indice comment je fais appelle à ça:

Public Sub OpenRecordSet(ByVal strRequete As String, ByRef rs As
ADODB.Recordset)
On Error GoTo Gestion_Erreurs

'On cré le record set et on exécute la requête
Set rs = New ADODB.Recordset

Set rs = cnn.Execute(strRequete)

'ME RETOUNRE TOUJOURS -1 MEME SI J'AI DE L'INFORMATION, POURQUOI??
msgbox rs.RecordCount


Exit Sub
Gestion_Erreurs:

MsgBox "Message d'erreur: " & Err.Number & ". --> " & Err.Description

Un gros merci à tous!

4 réponses

Avatar
RABILLOUD JMARC [MVP]
Car tu l'ouvre avec ses paramètres par défaut, il est donc forwardOnly et ne
peut valoriser la propriété RecordCount
Donc


"Dominic Feron" a écrit dans le message de
news: %
Bonjour à tous,

J'ai un module qui permet de se connecter à une BD que j'ai conçu et que
j'utilise depuis longtemps. Ce module marche très bien.

Aujourd'hui, je ne sais pas pourquoi mais je ne suis plus capable
d'utiliser
la propriété RecordCount d'un RecordSet, ça me retourne toujours -1.

Pourquoi? Pourtant, je suis toujours capable de récupérer l'information de
mes champs dont je suis aller chercher dans une BD. Oui, pour trouver le
nombre d'enregistrement avec une requête SQL, je peux toujours utiliser un
SELECT COUNT(*), mais j'aimais bien utiliser recordCount :(.

Quelqu'un a une idée pourquoi j'ai toujours ce résultat?

Voici un indice comment je fais appelle à ça:

Public Sub OpenRecordSet(ByVal strRequete As String, ByRef rs As
ADODB.Recordset)
On Error GoTo Gestion_Erreurs

'On cré le record set et on exécute la requête
Set rs = New ADODB.Recordset

Set rs = cnn.Execute(strRequete)

'ME RETOUNRE TOUJOURS -1 MEME SI J'AI DE L'INFORMATION, POURQUOI??
msgbox rs.RecordCount


Exit Sub
Gestion_Erreurs:

MsgBox "Message d'erreur: " & Err.Number & ". --> " & Err.Description

Un gros merci à tous!




Avatar
Dominic Feron
Merci de la piste mais même si je le met en OpenDynamic, j'ai le même
résultat.

En passant, je travaille sur Excel, je fais des macros.. p-e important comme
détail...

"RABILLOUD JMARC [MVP]" a écrit
dans le message de news:
Car tu l'ouvre avec ses paramètres par défaut, il est donc forwardOnly et


ne
peut valoriser la propriété RecordCount
Donc


"Dominic Feron" a écrit dans le message


de
news: %
> Bonjour à tous,
>
> J'ai un module qui permet de se connecter à une BD que j'ai conçu et que
> j'utilise depuis longtemps. Ce module marche très bien.
>
> Aujourd'hui, je ne sais pas pourquoi mais je ne suis plus capable
> d'utiliser
> la propriété RecordCount d'un RecordSet, ça me retourne toujours -1.
>
> Pourquoi? Pourtant, je suis toujours capable de récupérer l'information


de
> mes champs dont je suis aller chercher dans une BD. Oui, pour trouver le
> nombre d'enregistrement avec une requête SQL, je peux toujours utiliser


un
> SELECT COUNT(*), mais j'aimais bien utiliser recordCount :(.
>
> Quelqu'un a une idée pourquoi j'ai toujours ce résultat?
>
> Voici un indice comment je fais appelle à ça:
>
> Public Sub OpenRecordSet(ByVal strRequete As String, ByRef rs As
> ADODB.Recordset)
> On Error GoTo Gestion_Erreurs
>
> 'On cré le record set et on exécute la requête
> Set rs = New ADODB.Recordset
>
> Set rs = cnn.Execute(strRequete)
>
> 'ME RETOUNRE TOUJOURS -1 MEME SI J'AI DE L'INFORMATION, POURQUOI??
> msgbox rs.RecordCount
>
>
> Exit Sub
> Gestion_Erreurs:
>
> MsgBox "Message d'erreur: " & Err.Number & ". --> " & Err.Description
>
> Un gros merci à tous!
>
>




Avatar
RABILLOUD JMARC [MVP]
Excel n'y est pour rien; Tu ne peux pas modifier le cursorType en passant
par Connection.Execute.

Si tu fais
Set MaConn = New ADODB.Connection
MaConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:JMARCbiblio.mdb;Persist Security Infoúlse"
MaConn.Open
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
Set rs = MaConn.Execute("Select * FROM Authors")
MsgBox rs.CursorType
Tu verras que ton cursortype reviens à 0 après le Execute. Tu dois forcément
ouvrir avec la méthode Open de l'objet Recordset tel que
Dim MaConn As ADODB.Connection, rs As ADODB.Recordset

Set MaConn = New ADODB.Connection
MaConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:JMARCbiblio.mdb;Persist Security Infoúlse"
MaConn.Open
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
rs.Open "SELECT * FROM Authors", MaConn, adOpenKeyset, adLockReadOnly
MsgBox rs.CursorType


"Dominic Feron" a écrit dans le message de
news: %
Merci de la piste mais même si je le met en OpenDynamic, j'ai le même
résultat.

En passant, je travaille sur Excel, je fais des macros.. p-e important
comme
détail...

"RABILLOUD JMARC [MVP]" a écrit
dans le message de news:
Car tu l'ouvre avec ses paramètres par défaut, il est donc forwardOnly et


ne
peut valoriser la propriété RecordCount
Donc


"Dominic Feron" a écrit dans le message


de
news: %
> Bonjour à tous,
>
> J'ai un module qui permet de se connecter à une BD que j'ai conçu et
> que
> j'utilise depuis longtemps. Ce module marche très bien.
>
> Aujourd'hui, je ne sais pas pourquoi mais je ne suis plus capable
> d'utiliser
> la propriété RecordCount d'un RecordSet, ça me retourne toujours -1.
>
> Pourquoi? Pourtant, je suis toujours capable de récupérer l'information


de
> mes champs dont je suis aller chercher dans une BD. Oui, pour trouver
> le
> nombre d'enregistrement avec une requête SQL, je peux toujours utiliser


un
> SELECT COUNT(*), mais j'aimais bien utiliser recordCount :(.
>
> Quelqu'un a une idée pourquoi j'ai toujours ce résultat?
>
> Voici un indice comment je fais appelle à ça:
>
> Public Sub OpenRecordSet(ByVal strRequete As String, ByRef rs As
> ADODB.Recordset)
> On Error GoTo Gestion_Erreurs
>
> 'On cré le record set et on exécute la requête
> Set rs = New ADODB.Recordset
>
> Set rs = cnn.Execute(strRequete)
>
> 'ME RETOUNRE TOUJOURS -1 MEME SI J'AI DE L'INFORMATION, POURQUOI??
> msgbox rs.RecordCount
>
>
> Exit Sub
> Gestion_Erreurs:
>
> MsgBox "Message d'erreur: " & Err.Number & ". --> " &
> Err.Description
>
> Un gros merci à tous!
>
>








Avatar
Dominic Feron
Merci l'ami! C'est exactement ce qui m'échapait. Merci encore!


"RABILLOUD JMARC [MVP]" a écrit
dans le message de news:
Excel n'y est pour rien; Tu ne peux pas modifier le cursorType en passant
par Connection.Execute.

Si tu fais
Set MaConn = New ADODB.Connection
MaConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:JMARCbiblio.mdb;Persist Security Infoúlse"
MaConn.Open
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
Set rs = MaConn.Execute("Select * FROM Authors")
MsgBox rs.CursorType
Tu verras que ton cursortype reviens à 0 après le Execute. Tu dois


forcément
ouvrir avec la méthode Open de l'objet Recordset tel que
Dim MaConn As ADODB.Connection, rs As ADODB.Recordset

Set MaConn = New ADODB.Connection
MaConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:JMARCbiblio.mdb;Persist Security Infoúlse"
MaConn.Open
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
rs.Open "SELECT * FROM Authors", MaConn, adOpenKeyset, adLockReadOnly
MsgBox rs.CursorType


"Dominic Feron" a écrit dans le message


de
news: %
> Merci de la piste mais même si je le met en OpenDynamic, j'ai le même
> résultat.
>
> En passant, je travaille sur Excel, je fais des macros.. p-e important
> comme
> détail...
>
> "RABILLOUD JMARC [MVP]" a écrit
> dans le message de news:
>> Car tu l'ouvre avec ses paramètres par défaut, il est donc forwardOnly


et
> ne
>> peut valoriser la propriété RecordCount
>> Donc
>>
>>
>> "Dominic Feron" a écrit dans le


message
> de
>> news: %
>> > Bonjour à tous,
>> >
>> > J'ai un module qui permet de se connecter à une BD que j'ai conçu et
>> > que
>> > j'utilise depuis longtemps. Ce module marche très bien.
>> >
>> > Aujourd'hui, je ne sais pas pourquoi mais je ne suis plus capable
>> > d'utiliser
>> > la propriété RecordCount d'un RecordSet, ça me retourne toujours -1.
>> >
>> > Pourquoi? Pourtant, je suis toujours capable de récupérer


l'information
> de
>> > mes champs dont je suis aller chercher dans une BD. Oui, pour trouver
>> > le
>> > nombre d'enregistrement avec une requête SQL, je peux toujours


utiliser
> un
>> > SELECT COUNT(*), mais j'aimais bien utiliser recordCount :(.
>> >
>> > Quelqu'un a une idée pourquoi j'ai toujours ce résultat?
>> >
>> > Voici un indice comment je fais appelle à ça:
>> >
>> > Public Sub OpenRecordSet(ByVal strRequete As String, ByRef rs As
>> > ADODB.Recordset)
>> > On Error GoTo Gestion_Erreurs
>> >
>> > 'On cré le record set et on exécute la requête
>> > Set rs = New ADODB.Recordset
>> >
>> > Set rs = cnn.Execute(strRequete)
>> >
>> > 'ME RETOUNRE TOUJOURS -1 MEME SI J'AI DE L'INFORMATION, POURQUOI??
>> > msgbox rs.RecordCount
>> >
>> >
>> > Exit Sub
>> > Gestion_Erreurs:
>> >
>> > MsgBox "Message d'erreur: " & Err.Number & ". --> " &
>> > Err.Description
>> >
>> > Un gros merci à tous!
>> >
>> >
>>
>>
>
>