Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 19/09/2011, 10h20   #1
Membre du Club
 
beauchat symba
Inscription : janvier 2010
Messages : 95
Détails du profil
Informations personnelles :
Nom : beauchat symba

Informations forums :
Inscription : janvier 2010
Messages : 95
Points : 50
Points : 50
Par défaut affecter le résultat d'une Requête Dynamique

Bonjour

Mon code est issu du Tutoriel de Tofalu : Création et Paramétrage Dynamique de Reqêtes (merci Tofalu )
J'ai bien créer un Recordset qui est alimenté par ma requête et vérifier l'existence d'Enregistrements
Mais je ne parviens pas à affecter le NomClient de la première valeur trouvée à une zone de texte Indépendante
Cette zone de Texte est située sur le formulaire sous le BoutonValider

Code :
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
40
41
42
43
44
45
46
47
48
49
50
51
52
Private Sub btValider_Click()
 
    Dim Db As DAO.Database
    Dim QryModele As DAO.QueryDef
    Dim strSQLModele As String
    Dim rst As DAO.Recordset
 
    Set Db = CurrentDb
    Set QryModele = Db.QueryDefs("qryClientParPays_modele")
    strSQLModele = QryModele.SQL
    'Effectue le remplacement du critere par la valeur
    strSQLModele = Replace(strSQLModele, "[criterepays]", Chr(34) & Nz(cboPays) & Chr(34))
    'Si la requête existe déjà alors
    If TesteExistenceRequete("qryClientParPays") Then
     'alors modifier le code de la requête
    DoCmd.Close acQuery, "qryClientParPays", acSaveNo
    Db.QueryDefs("qryClientParPays").SQL = strSQLModele
    'Sinon
     Else
    'Créer la nouvelle requête
    'laisser le Nom de requête vide-->ce qui provoque un NonEnregistrement de la Requête
    Db.CreateQueryDef "qryClientParPays", strSQLModele
    End If
 
    'Ouvrir la Requête
    DoCmd.OpenQuery "qryClientParPays"
 
    Set rst = Db.OpenRecordset("qryClientParPays")
 
    'Vérifier si le jeux d'Enregistrements est Vide
    If Not rst.EOF Then
    MsgBox "Le jeu d'enregistrements n'est pas vide"
 Dim strCritere As String
    strCritere = "NomClient LIKE " & Chr(34) & "TOTO" & Chr(34)
    MsgBox strCritere 'ça Affiche: NomClient LIKE"TOTO"
'*************************** Erreur de Syntaxe sur FindFirst*****************
 Me.zdtNomClient = rst.FindFirst strCritere 'erreur de syntaxe ??????
 
    Else
    MsgBox "Le jeu d'enregistrements est vide"
    End If
 
    'aprés récup du champ voulu Fermer la Requête
    DoCmd.Close acQuery, "qryClientParPays", acSaveNo
 
   'libère la mémoire
    rst.Close
    Db.Close
    Set Recordset = Nothing
    Set Db = Nothing
 
End Sub
Le NomClient TOTO existe bien dans la Table

Merci pour le coup de main
Bien cordialement
symbabeauchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 18h22   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

La méthode FindFirst positionne l'enregistrement actif sur le premier enregistrement répondant au critère.
Il faut tester la propriété NoMatch pour déterminer le succès de la recherche.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    If Not rst.EOF Then
       MsgBox "Le jeu d'enregistrements n'est pas vide"
       Dim strCritere As String
       strCritere = "NomClient LIKE " & Chr(34) & "TOTO" & Chr(34)
       MsgBox strCritere 'ça Affiche: NomClient LIKE "TOTO"
       ' Rechercher enregistrement correpondant au critère
       rst.FindFirst strCritere
       ' Si trouvé
       If rst.NoMatch = False Then 
          Me.zdtNomClient = rst("NomClient")
       ' Sinon   
       Else
          MsgBox "Client non trouvé"
       End If
    Else
       MsgBox "Le jeu d'enregistrements est vide"
    End If
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/09/2011, 18h48   #3
Membre du Club
 
beauchat symba
Inscription : janvier 2010
Messages : 95
Détails du profil
Informations personnelles :
Nom : beauchat symba

Informations forums :
Inscription : janvier 2010
Messages : 95
Points : 50
Points : 50
Par défaut Merci LedZepII

Un grand merci LedZepII
Ton code répond exactement à mon problème
Bonne soirée
symbabeauchat 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 02h25.


 
 
 
 
Partenaires

Hébergement Web