Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Contribuez
Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/05/2006, 11h37   #1
Membre du Club
 
Inscription : août 2005
Messages : 99
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 99
Points : 57
Points : 57
Par défaut [VBA]recupération du nombre d'enregistrements concernés par une requête action

Bonjour,
je ne parviens pas à savoir si l'on peut recuperer les infos contenues dans le message emis lors du lancement d'une requete insert (requete objet MS Access).
Je souhaite en particulier obtenir le nb de lignes qui vont être insérées sans avoir à faire de "select count" avant (ou apres)... si c'est possible.
c'est le XXX du:
"you are about to insert XXX rws..."
merci de votre aide,
a+
b.
borisa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 12h15   #2
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
voici un exemple de code qui utilise les ADO (Microsoft ActiveX Data Object x.xx Library)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Sub test()
    Const REQUETE As String = "raaa"
    Dim c As ADODB.Command
    Dim n As Long
    Set c = New ADODB.Command
 
    c.ActiveConnection = CurrentProject.Connection
    c.CommandText = REQUETE
    c.CommandType = adCmdStoredProc
    c.Execute n
    MsgBox n
End Sub
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 14h17   #3
Membre du Club
 
Inscription : août 2005
Messages : 99
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 99
Points : 57
Points : 57
salut maxence et merci pour ton bout de code,

je n'ai pas précisé que j'utilise acc 97... donc j'ai remplacé currentproject par currentdb, mais j'ai :
Code :
operation not supported for this type of object
sur Acc 97 permet-il d'executer ton code?
merci de ton aide.
a+
b.
borisa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 14h55   #4
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
non.
Tu n'as pas ADO avec Access 97
par contre, tu peux le faire en DAO comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
 
 
Sub test2()
    Const REQUETE As String = "raaa"
    Dim q As DAO.QueryDef
    Dim n As Long
    Set q = CurrentDb.QueryDefs(REQUETE)
    q.Execute
    MsgBox q.RecordsAffected
End Sub

tu avais l'info dans la FAQ, ici :
http://access.developpez.com/faq/?page=SQL#qryActions
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 15h03   #5
Membre du Club
 
Inscription : août 2005
Messages : 99
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 99
Points : 57
Points : 57
Oups, je réedite mon post : en fait ça amarche, mais je cherchais à faire ça avant execution, là c'est après puisqu'il faut passer execute avant de recupérer recordsaffected...j'ai testé ton code avant de regarder ce qu'il y avait dedans...desolé .

question subsidiaire : à quoi sert la référence ADO (MS activeX data object library 2.8..) dans access 97 si il n'y a pas d'ADO?
merci,
a+
b.
borisa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 15h10   #6
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE

Ben, c'est que tu dois avoir un truc d'installé sur ton PC qui nécessite les ADO. Sinon, la référence ne serait pas là.
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 15h17   #7
Membre du Club
 
Inscription : août 2005
Messages : 99
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 99
Points : 57
Points : 57
ah ok, ça doit venir du fait que j'ai installé 97 en ecrasant 2000.
sinon, à ton avis récupérer l'info recordsaffected avant d'executer (pour proposer un message perso à la place de celui d'access par exemple) ça ne peut se faire que par des "select count" avant l'execution du insert into...?
a+
b.
borisa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 15h22   #8
Rédacteur

 
Avatar de Tofalu
 
Christophe Warin
Inscription : octobre 2004
Messages : 8 635
Détails du profil
Informations personnelles :
Nom : Christophe Warin
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 8 635
Points : 13 718
Points : 13 718
Ou bien avec une transaction je pense.

Citation:
Sub test2()
Const REQUETE As String = "raaa"
Dim q As DAO.QueryDef

Dim n As Long
DBEngine.BeginTrans
Set q = CurrentDb.QueryDefs(REQUETE)
q.Execute
If MsgBox("Vous allez insérer " & q.RecordsAffected & _
" nouveaux enregistrements." & vbCrLf & _
"Etes vous sûr de vouloir continuer ?", vbYesNo + vbQuestion, "Insertion") = vbYes Then

DBEngine.CommitTrans
Else
DBEngine.Rollback
End If
End Sub

Pas testé
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 15h27   #9
Membre du Club
 
Inscription : août 2005
Messages : 99
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 99
Points : 57
Points : 57
ouuula! ça c'est magnifique! je teste pour voir...meme si dans mon cas c'est un peu le bulldozer pour enlever trois brins d'herbe, ça peut toujours servir.
a+
b.
borisa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 15h31   #10
Membre du Club
 
Inscription : août 2005
Messages : 99
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 99
Points : 57
Points : 57
Ok c'est parfait et en plus j'aime bien, c'est propre et c'est exactement ce que je voulais. Merci à tous les deux!
a+
b.
borisa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h20.


 
 
 
 
Partenaires

Hébergement Web