OVH Cloud OVH Cloud

PRobleme avec un Record set

4 réponses
Avatar
Hugues
J'ai une macro dont le code est ci dessus. JE m'apercois que lors de
l'utilisation de la macro, il prend des chiffres dejà stocker dans le
recorset. Je voudrais savoir le code pour nettoyer ce recorset et ou
l'insérer dans la macro
Sub fcI() '
'(nomtable, bodyseries)

Dim WS As Workspace
Dim BD As DAO.Database
Dim RS As DAO.Recordset

NomBD = "S:\cor2004.mdb"
Set WS = DBEngine.Workspaces(0)
Set BD = WS.OpenDatabase(NomBD)
nomtable = "fciii04"


req = "SELECT DISTINCT Sum([JAN1]+[FEB1]+[MAR1]) AS CA"
req = req + " FROM " + nomtable
req = req + " GROUP BY [Additional Field 2],[Account Position], [Business
Unit],[Additional Field 1]"
req = req + " HAVING [Additional Field 2]=" + Chr(34) + "E 52 Roadster" +
Chr(34)
req = req + " AND [Account Position]=" + Chr(34) + "invoiced sales" + Chr(34)
req = req + " AND [Business Unit]=" + Chr(34) + "cars" + Chr(34)
req = req + " AND [Additional Field 1]=" + Chr(34) + "Cars New BMW" + Chr(34)


Set RS = BD.OpenRecordset(req)

Set RS = BD.OpenRecordset(req)
n = RS.RecordCount
If RS.RecordCount = 0 Then
Range("e1").CopyFromRecordset RS
Else
Range("d2") = RS.Fields("CA").Value
End If
End Sub
Merci d'avance

4 réponses

Avatar
isabelle
bonjour Hugues,

on ne peut pas supprimer un objet Container de la collection Containers d'un objet Database, par contre

lorsque tu ouvre un objet Recordset contenant au moins un enregistrement, le premier est l'enregistrement en cours. les
propriétés BOF et EOF ont alors la valeur False qu'elles conservent jusqu'à ce que l'on se déplace au-delà du début ou
de la fin de l'objet Recordset à l'aide des méthodes MovePrevious ou MoveNext respectivement. il n'y a alors pas
d'enregistrement en cours, voire aucun enregistrement.

isabelle




J'ai une macro dont le code est ci dessus. JE m'apercois que lors de
l'utilisation de la macro, il prend des chiffres dejà stocker dans le
recorset. Je voudrais savoir le code pour nettoyer ce recorset et ou
l'insérer dans la macro
Sub fcI() '
'(nomtable, bodyseries)

Dim WS As Workspace
Dim BD As DAO.Database
Dim RS As DAO.Recordset

NomBD = "S:cor2004.mdb"
Set WS = DBEngine.Workspaces(0)
Set BD = WS.OpenDatabase(NomBD)
nomtable = "fciii04"

req = "SELECT DISTINCT Sum([JAN1]+[FEB1]+[MAR1]) AS CA"
req = req + " FROM " + nomtable
req = req + " GROUP BY [Additional Field 2],[Account Position], [Business
Unit],[Additional Field 1]"
req = req + " HAVING [Additional Field 2]=" + Chr(34) + "E 52 Roadster" +
Chr(34)
req = req + " AND [Account Position]=" + Chr(34) + "invoiced sales" + Chr(34)
req = req + " AND [Business Unit]=" + Chr(34) + "cars" + Chr(34)
req = req + " AND [Additional Field 1]=" + Chr(34) + "Cars New BMW" + Chr(34)

Set RS = BD.OpenRecordset(req)

Set RS = BD.OpenRecordset(req)
n = RS.RecordCount
If RS.RecordCount = 0 Then
Range("e1").CopyFromRecordset RS
Else
Range("d2") = RS.Fields("CA").Value
End If
End Sub
Merci d'avance


Avatar
michdenis
Bonjour Hughes,

Je ne comprends pas ce que tu veux faire !

" Je voudrais savoir le code pour nettoyer ce recordset "

Qu'est-ce que cela veut dire ? Effacer les données dans la table d'origine d'où origine ces données ? Vider la VARIABLE
contenant le recordset ? Autre chose ?


Salutations!


"Hugues" a écrit dans le message de news:

J'ai une macro dont le code est ci dessus. JE m'apercois que lors de
l'utilisation de la macro, il prend des chiffres dejà stocker dans le
recorset. Je voudrais savoir le code pour nettoyer ce recorset et ou
l'insérer dans la macro
Sub fcI() '
'(nomtable, bodyseries)

Dim WS As Workspace
Dim BD As DAO.Database
Dim RS As DAO.Recordset

NomBD = "S:cor2004.mdb"
Set WS = DBEngine.Workspaces(0)
Set BD = WS.OpenDatabase(NomBD)
nomtable = "fciii04"


req = "SELECT DISTINCT Sum([JAN1]+[FEB1]+[MAR1]) AS CA"
req = req + " FROM " + nomtable
req = req + " GROUP BY [Additional Field 2],[Account Position], [Business
Unit],[Additional Field 1]"
req = req + " HAVING [Additional Field 2]=" + Chr(34) + "E 52 Roadster" +
Chr(34)
req = req + " AND [Account Position]=" + Chr(34) + "invoiced sales" + Chr(34)
req = req + " AND [Business Unit]=" + Chr(34) + "cars" + Chr(34)
req = req + " AND [Additional Field 1]=" + Chr(34) + "Cars New BMW" + Chr(34)


Set RS = BD.OpenRecordset(req)

Set RS = BD.OpenRecordset(req)
n = RS.RecordCount
If RS.RecordCount = 0 Then
Range("e1").CopyFromRecordset RS
Else
Range("d2") = RS.Fields("CA").Value
End If
End Sub
Merci d'avance
Avatar
Hugues
Je sais que je stocke des données dans ce recordset.
Ce que je voudrais, c'est vider les données contenues dans le recordset afin
que quand je fais tourner la macro, il ne affiche pas des données anciennes
mais les nouvelles.
Je voudrais qu'avant de stocker des valeurs le Recordset soit vierge, qu'il
ne contienne pas de données

Salutations

Hugues

"michdenis" wrote:

Bonjour Hughes,

Je ne comprends pas ce que tu veux faire !

" Je voudrais savoir le code pour nettoyer ce recordset "

Qu'est-ce que cela veut dire ? Effacer les données dans la table d'origine d'où origine ces données ? Vider la VARIABLE
contenant le recordset ? Autre chose ?


Salutations!


"Hugues" a écrit dans le message de news:

J'ai une macro dont le code est ci dessus. JE m'apercois que lors de
l'utilisation de la macro, il prend des chiffres dejà stocker dans le
recorset. Je voudrais savoir le code pour nettoyer ce recorset et ou
l'insérer dans la macro
Sub fcI() '
'(nomtable, bodyseries)

Dim WS As Workspace
Dim BD As DAO.Database
Dim RS As DAO.Recordset

NomBD = "S:cor2004.mdb"
Set WS = DBEngine.Workspaces(0)
Set BD = WS.OpenDatabase(NomBD)
nomtable = "fciii04"


req = "SELECT DISTINCT Sum([JAN1]+[FEB1]+[MAR1]) AS CA"
req = req + " FROM " + nomtable
req = req + " GROUP BY [Additional Field 2],[Account Position], [Business
Unit],[Additional Field 1]"
req = req + " HAVING [Additional Field 2]=" + Chr(34) + "E 52 Roadster" +
Chr(34)
req = req + " AND [Account Position]=" + Chr(34) + "invoiced sales" + Chr(34)
req = req + " AND [Business Unit]=" + Chr(34) + "cars" + Chr(34)
req = req + " AND [Additional Field 1]=" + Chr(34) + "Cars New BMW" + Chr(34)


Set RS = BD.OpenRecordset(req)

Set RS = BD.OpenRecordset(req)
n = RS.RecordCount
If RS.RecordCount = 0 Then
Range("e1").CopyFromRecordset RS
Else
Range("d2") = RS.Fields("CA").Value
End If
End Sub
Merci d'avance





Avatar
michdenis
Bonjour Hughes,

à chaque fois que tu utilises une ligne de commande comme celle-ci ,

Set RS = BD.OpenRecordset(req)

Nonobstant ce que contenait le RS(recordset) avant cette d'exécuter cette ligne de commande, après l'exécution, seules
les nouvelles données contenues dans la nouvelle requête feront parti du recordset ....

Si tu veux vider la variable Rs, comme celle-ci représente un objet de type RecordSet, il s'agit tout simplement de
fermer le recordset avec une ligne de code comme ceci ;`

Rs.Close


Salutations!




"Hugues" a écrit dans le message de news:

Je sais que je stocke des données dans ce recordset.
Ce que je voudrais, c'est vider les données contenues dans le recordset afin
que quand je fais tourner la macro, il ne affiche pas des données anciennes
mais les nouvelles.
Je voudrais qu'avant de stocker des valeurs le Recordset soit vierge, qu'il
ne contienne pas de données

Salutations

Hugues

"michdenis" wrote:

Bonjour Hughes,

Je ne comprends pas ce que tu veux faire !

" Je voudrais savoir le code pour nettoyer ce recordset "

Qu'est-ce que cela veut dire ? Effacer les données dans la table d'origine d'où origine ces données ? Vider la
VARIABLE
contenant le recordset ? Autre chose ?


Salutations!


"Hugues" a écrit dans le message de news:

J'ai une macro dont le code est ci dessus. JE m'apercois que lors de
l'utilisation de la macro, il prend des chiffres dejà stocker dans le
recorset. Je voudrais savoir le code pour nettoyer ce recorset et ou
l'insérer dans la macro
Sub fcI() '
'(nomtable, bodyseries)

Dim WS As Workspace
Dim BD As DAO.Database
Dim RS As DAO.Recordset

NomBD = "S:cor2004.mdb"
Set WS = DBEngine.Workspaces(0)
Set BD = WS.OpenDatabase(NomBD)
nomtable = "fciii04"


req = "SELECT DISTINCT Sum([JAN1]+[FEB1]+[MAR1]) AS CA"
req = req + " FROM " + nomtable
req = req + " GROUP BY [Additional Field 2],[Account Position], [Business
Unit],[Additional Field 1]"
req = req + " HAVING [Additional Field 2]=" + Chr(34) + "E 52 Roadster" +
Chr(34)
req = req + " AND [Account Position]=" + Chr(34) + "invoiced sales" + Chr(34)
req = req + " AND [Business Unit]=" + Chr(34) + "cars" + Chr(34)
req = req + " AND [Additional Field 1]=" + Chr(34) + "Cars New BMW" + Chr(34)


Set RS = BD.OpenRecordset(req)

Set RS = BD.OpenRecordset(req)
n = RS.RecordCount
If RS.RecordCount = 0 Then
Range("e1").CopyFromRecordset RS
Else
Range("d2") = RS.Fields("CA").Value
End If
End Sub
Merci d'avance