Bonjour,
J'aimerais voir dans une MsgBox si ma requête SQL renvoie qqch, il faut que j'utilise quoi ?
Merci
Bonjour,
J'aimerais voir dans une MsgBox si ma requête SQL renvoie qqch, il faut que j'utilise quoi ?
Merci
Si c'est juste pour savoir si elle renvoie quelque chose, tu peux par exemple écrire ceci :
Ou alors
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 dim db as DAO.Database dim rs as DAO.Recordset dim sql as String set db = CurrentDb sql = "SELECT * FROM ..." set rs = db.OpenRecordset(sql) MsgBox "Ma requête comporte " & rs.RecordCount & " enregistrement(s)"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 dim db as DAO.Database dim rs as DAO.Recordset dim sql as String set db = CurrentDb sql = "SELECT * FROM ..." set rs = db.OpenRecordset(sql) while not rs.EOF ' Traitement à faire sur chaque enregistrement rs.MoveNext wend
Lol t'as devancé mes pensées j'étais justement sur les recordset et je trouvais pas l'opérateur qu'il me fallait (RecordCount)
Nickel merci
Pense au bouton résolu en bas de la page.
2 questions :
- ta 2e méthode permet de lire les enregistrements 1 par 1 ?
- j'ai déjà défini le recordset dans une "Public Sub" et pour tant VB Editor n'a pas l'air de le reconnaitre pourtant vu que j'ai mi "public" ça devrait non ?
lol tkt pas mais avec l'infrmatique j'attend d'être bien sûr pour clicquer sur "résolu"
HeuEnvoyé par dalmasma
Le fait de déclarer ton recordset dans une public Sub ne donnera rien, il faut que tu le déclare en Public dans l'Entête d'un module de la maniére suivante :
Car je suis sûr que tu as écrit Dim à la place de Public dans ta sub, n'est-ce-pas ? et que ton code qui suit est dans une autre partie de ton appli.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public rst as DAO.Recordset
Starec
Si tu veux dire que tu as déclaré et affecté le recordset dans une procédure, alors ce ne marchera pas. Il faut que tu déclare ton recordset à l'extérieur de toute fonction ou procédure, en haut de ta page.Envoyé par dalmasma
Maintenant, le recordset g_rs est accessible dans toutes les procédures de la page. Tu peux le définir et l'utiliser là où tu veux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Option Compare Database Option Explicit Dim g_rs DAO.Recordset
C'est tout à fait ça (erreur classique apparemment )
J'ai tapé ça :
et le débugger se lance et affiche : erreur 424 : Objet Requis
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox rsPFT.RecordCount
Il faut peut-être que je passe en public tout ce qui sert à définir mon recordset (en particulier la requete) non?
Merci
Bonjour
Met nous le code, avec les déclarations comprises.
Starec
Re,
voici le moment du code :s :
(il n'y a pas de
)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Option Compare Database Option Explicit
et ça c'est la MsgBox qui doit apparaitre une fois que j'ai sélectionné l'équipement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Public Sub Update_All_Same_Proj_Fam_Type() Dim IDETemp As Integer Dim SQL As String Dim SQLallUpd As String Public rsPFT As DAO.Recordset Dim db As DAO.Database Set db = CurrentDb SQL = " SELECT [Equipments].[IDEquipment] FROM Equipments" SQL = SQL & " WHERE [Equipments].[IDFamily] IN (SELECT [Equipments].[IDFamily] FROM Equipments " SQL = SQL & " WHERE [Equipments]![IDEquipment] = " SQL = SQL & cmb_IDEq & ") And [Equipments].[IDType] IN (SELECT [Equipments].[IDType] FROM Equipments " SQL = SQL & " WHERE [Equipments]![IDEquipment] = " SQL = SQL & cmb_IDEq & ") And [Equipments]![IDEquipment] <> " SQL = SQL & cmb_IDEq & ";" SQLallUpd = "INSERT INTO EquipmentCharacteristics ( IDCharacteristic , IDEquipment ,CharacValue ) VALUES(0,0,0)" Set rsPFT = db.OpenRecordset(SQL, dbOpenDynaset) 'If rsPFT.RecordCount = 0 Then ' MsgBox "No similar equipment" 'Else ' DoCmd.RunSQL SQLallUpd 'End If 'Dim IDETemp As Integer 'Dim SQL As String 'FOR EACH IDETemp IN ListIDE (SELECT [Equipments].[IDEquipment] FROM Equipments WHERE [Equipments].[IDFamily] IN (SELECT [Equipments].[IDFamily] FROM Equipments WHERE [Equipments].[IDEquipment] = " 'SQL = SQL & cmb_IDEq & " AND [Equipments].[IDType] IN (SELECT [Equipments].[IDType] FROM Equipments WHERE [Equipments].[IDEquipment] = " 'SQL = SQL & cmb_IDEq & ";" 'SQL = "INSERT INTO EquipmentCharacteristics ( IDCharacteristic , IDEquipment , CharacValue ) " 'SQL = SQL & "VALUES (" & cmb_IDcharacteristic & ", NULL," & txt_value & " )" DoCmd.RunSQL SQL End Sub
Voilà Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub cmb_IDEq_Change() AllKindDisp ' ça ça affiche juste une requete dans une liste Me.chk_allKind.Enabled = True ' ça on s'en fout aussi MsgBox rsPFT.RecordCount ' c'est là :D End Sub
Bonjour dalmasma,Envoyé par dalmasma
Voila une bonne quinzaine de jour que tu es sur ce forum.
Tu postes près de 10 messages par jour.
Ne crois-tu pas qu'il serait temps, au vu de la question basique que tu poses ci-dessus, de te mettre à étudier le langage que tu utilises?
Il y a, sur le site developpez.com, des tas de tutoriels et FAQs que tu pourrais consulter.
Je te conseille vivement de faire un tour dans tout ce qui est VBA et même VB(6) car les bases du langage sont identiques.
On ne peut pas, en permanence, te servir d'aide en ligne ni même de professeurs particuliers.
Commence par étudier avant de chercher à programmer, sinon tu vas poster à chaque question que tu te poses (ce que je pense que tu fais).
Le problème, c'est que tu risques de lasser ceux qui te répondent et ils pourraient ne plus être là le jour où tu seras devant des difficultés plus importantes que celles que tu rencontres maintenant.
Mais ça je sais le faire maintenant ça date du 17 ce sujet !!
Et j'ai pas le temps d'étudier, je suis en stage on m'a dit de reprendre le travail de quelqu'un alors qu'en arrivant je connaissais ni Access ni VBA mais mon stage fini demain tu n'auras pas longtemps à me supporter.
Et encore j'ai étudié le java cette année alors je pige le VBA mais il y a des nuances de syntaxe et des manières de faire que je n'ai pas. Mais je n'ai pas le choix on m'a forcé à faire ça pendant 5 semaines alors désolé mais avec le nombre de choses qu'on me demande de faire j'ai pas le temps d'étudier trop longuement, j'ai déjà mi une semaine à me familiariser avec Access alors bon...
Et le vocabulaire je ne l'ai pas: procédure, déclarations etc... c'est nouveau.
Si tu me parles d'objets, de variable d'instances, de méthodes de sous-classes héritées je comprends. Mais là je sais peut-être ce que c'est mais je ne connais pas le nom c'est tout...
J'ai quand même répondu à certains post ne me concernant pas pour en aider d'autres, et mes questions peuvent aider d'autres gens (surtout les invités non membres)
Partager