OVH Cloud OVH Cloud

Stocker recordset en mémoire

3 réponses
Avatar
Laurent Merlet
Bonjour à tous,

J'aurais aimé savoir si il y avait un moyen de stocker un recordset en
mémoire, de manière à pouvoir relire les données après l'avoir fermé.

Exemple :

Set rs = currentdb.openrecordset ("SELECT * FROM Tbl1")

<stocker en mémoire ... ??>

rs.close
set rs = nothing

Je crois que ça doit être possible au moyen d'un tableau associatif, mais
...

Merciiiiiiiiiii

Laurent

3 réponses

Avatar
Pierre CFI [mvp]
bonjour
regarde dans l'aide GetRows()

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Laurent Merlet" a écrit dans le message de news:425288e0$0$11701$
Bonjour à tous,

J'aurais aimé savoir si il y avait un moyen de stocker un recordset en
mémoire, de manière à pouvoir relire les données après l'avoir fermé.

Exemple :

Set rs = currentdb.openrecordset ("SELECT * FROM Tbl1")

<stocker en mémoire ... ??>

rs.close
set rs = nothing

Je crois que ça doit être possible au moyen d'un tableau associatif, mais
...

Merciiiiiiiiiii

Laurent




Avatar
Laurent Merlet
Merci, mais mon aide d'Office 2000 ne m'affiche rien concernant cette
fonction ...

"Pierre CFI [mvp]" a écrit dans le message de
news:eS4Z9$
bonjour
regarde dans l'aide GetRows()

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Laurent Merlet" a écrit dans le message de
news:425288e0$0$11701$

Bonjour à tous,

J'aurais aimé savoir si il y avait un moyen de stocker un recordset en
mémoire, de manière à pouvoir relire les données après l'avoir fermé.

Exemple :

Set rs = currentdb.openrecordset ("SELECT * FROM Tbl1")

<stocker en mémoire ... ??>

rs.close
set rs = nothing

Je crois que ça doit être possible au moyen d'un tableau associatif,
mais


...

Merciiiiiiiiiii

Laurent








Avatar
Pierre CFI [mvp]
ah bon
copier coller aide
*************
Exemple de méthode GetRows (VB)


Cet exemple utilise la méthode GetRows pour extraire un nombre défini de lignes d'un objet Recordset et remplir un tableau avec les
données obtenues. La méthode GetRows renvoie un nombre inférieur à celui désiré dans deux cas : EOF a été atteint ou GetRows a
essayé de récupérer un enregistrement supprimé par un autre utilisateur. La fonction renvoie la valeur False seulement dans le
second cas. L'exécution de cette procédure requiert la fonction GetRowsOK.

Public Sub GetRowsX()

Dim rstEmployees As ADODB.Recordset
Dim strCnn As String
Dim strMessage As String
Dim intRows As Integer
Dim avarRecords As Variant
Dim intRecord As Integer

' Ouvrir le jeu d'enregistrements avec les noms et les dates
' d'embauche de la table des employés.
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=Pubs;User Id=sa;Password=; "
Set rstEmployees = New ADODB.Recordset
rstEmployees.Open "SELECT fName, lName, hire_date " & _
"FROM Employee ORDER BY lName", strCnn, , , adCmdText

Do While True
' Obtenir l'entrée utilisateur pour le nombre de lignes.
strMessage = "Enter number of rows to retrieve."
intRows = Val(InputBox(strMessage))

If intRows <= 0 Then Exit Do

' Si GetRowsOK réussit, imprimer les résultats,
' en notant si la fin du fichier a été atteinte.
If GetRowsOK(rstEmployees, intRows, _
avarRecords) Then
If intRows > UBound(avarRecords, 2) + 1 Then
Debug.Print "(Not enough records in " & _
"Recordset to retrieve " & intRows & _
" rows.)"
End If
Debug.Print UBound(avarRecords, 2) + 1 & _
" records found."

' Imprimer les données extraites.
For intRecord = 0 To UBound(avarRecords, 2)
Debug.Print " " & _
avarRecords(0, intRecord) & " " & _
avarRecords(1, intRecord) & ", " & _
avarRecords(2, intRecord)
Next intRecord
Else
' En considérant que l'erreur GetRows était due à des
' modifications de données par un autre utilisateur,
' utiliser Requery pour actualiser le jeu
' d'enregistrements et recommencer.
If MsgBox("GetRows failed--retry?", _
vbYesNo) = vbYes Then
rstEmployees.Requery
Else
Debug.Print "GetRows failed!"
Exit Do
End If
End If

' Dans la mesure où l'utilisation de GetRows laisse le
' pointeur d'enregistrement en cours sur le dernier
' enregistrement atteint, replacer le pointeur au début du
' jeu d'enregistrements avant de se reboucler sur une autre
' recherche.
rstEmployees.MoveFirst
Loop

rstEmployees.Close

End Sub

Public Function GetRowsOK(rstTemp As ADODB.Recordset, _
intNumber As Integer, avarData As Variant) As Boolean

' Stocker les résultats de la méthode GetRows dans un tableau.
avarData = rstTemp.GetRows(intNumber)
' Renvoyer la valeur False uniquement si le nombre de lignes
' renvoyé est inférieur à celui souhaité, mais pas parce que la
' fin du jeu d'enregistrements a été atteinte.
If intNumber > UBound(avarData, 2) + 1 And _
Not rstTemp.EOF Then
GetRowsOK = False
Else
GetRowsOK = True
End If

End Function

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Laurent Merlet" a écrit dans le message de news:425293bd$0$19329$
Merci, mais mon aide d'Office 2000 ne m'affiche rien concernant cette
fonction ...

"Pierre CFI [mvp]" a écrit dans le message de
news:eS4Z9$
bonjour
regarde dans l'aide GetRows()

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Laurent Merlet" a écrit dans le message de
news:425288e0$0$11701$

Bonjour à tous,

J'aurais aimé savoir si il y avait un moyen de stocker un recordset en
mémoire, de manière à pouvoir relire les données après l'avoir fermé.

Exemple :

Set rs = currentdb.openrecordset ("SELECT * FROM Tbl1")

<stocker en mémoire ... ??>

rs.close
set rs = nothing

Je crois que ça doit être possible au moyen d'un tableau associatif,
mais


...

Merciiiiiiiiiii

Laurent