(Resolue) comment afficher le resultat dans les zones de texte ?

comment afficher le resultat dans les zones de texte ? (Resolue) - VB/VBA/VBS - Programmation

Marsh Posté le 07-06-2004 à 11:13:48    

Bonjour messieur
j'ai un petit probleme : je doit effectuer un formulaire sous access
sur la gestion des clients et prospection. Jusque la pas de probleme
seulement l'entreprise a plus de 2000 contact et je doit donc y inclure un bouton de recherche sur le nom de l'entreprise et replir les zone de texte avec le resultat . j'ai pensé a un requete qui marche ( le resultat est celui attendu mais je ne sait pas comment mettre le resultat dans les zones de texte
si quelqu'un peut m'aider ...
merci d'avance


Message édité par Mr Mazurier le 24-06-2004 à 14:46:21
Reply

Marsh Posté le 07-06-2004 à 11:13:48   

Reply

Marsh Posté le 07-06-2004 à 11:21:59    

je pense que ca doit se faire avec du vba mais j'ai du mal avec ca ...

Reply

Marsh Posté le 07-06-2004 à 12:51:48    

Ta zone de texte a un nom
Il suffit de faire:  
nom_zone_de_texte = résultat
 
Maintenant je ne suis pas sûr de comprendre sous quelle forme tu obtiens ton résultat.
S'il s'agit d'un résultat issu de l'exécution d'une requête, ça complique un peu les choses.
Cela peut dépendre aussi de l'événement déclencheur.
 
La syntaxe suivante vaut pour un résultat obtenu par une requête nommée "Requête1" renvoyant au moins un champ nommé "resultat", déclenchée en cliquant sur un bouton "Command1". La zone de texte est nommé "ZoneTexte".
 
Dans les propriétés du bouton, aller dans l'événement "Sur Clic" et choisir [procédure événementielle]" puis cliquer sur le bouton [...] à côté.
Copier le code suivant à la place des lignes existantes en adaptant les noms de variables, requetes...


Private Sub Commande1_Click()
    Dim rs As Recordset ' déclaration variable de type jeu d'enregistrements
     
 ' exécution requete
    Set rs = DBEngine.Workspaces(0)(0).OpenRecordset("Requête1" )
 
 ' vérification si le jeu d'enregistrements est vide
    If Not rs.BOF Then
        ZoneTexte = rs!resultat
    End If
     
 ' fermeture du jeu d'enregistrements
    rs.Close
 
 ' désinitialisation de la variable de jeu d'enregsitrements
    Set rs = Nothing
End Sub


J'espère t'avoir aidé


Message édité par tegu le 07-06-2004 à 12:53:09
Reply

Marsh Posté le 07-06-2004 à 14:10:02    

je te remercie ca m'avance beaucoup je vais essayer mais le probleme c'est que cette requete renvoi plusieur champs
donc je ne sais pas si cela marchera de toute facon je vais essayer je te remercie

Reply

Marsh Posté le 07-06-2004 à 15:02:42    

je rencontre un petit souci : il me dit qu'il ne peut pas trouver la table ou la requete source
pourtant le nom est bien le meme il me met en jaune la ligne d'execution de la requete

Reply

Marsh Posté le 07-06-2004 à 15:34:52    

Montre un peu le code....

Reply

Marsh Posté le 07-06-2004 à 15:49:47    

voila mon code (je suis pas un pro mais j'ai repris l'exemple)
Private Sub Commande146_Click()
    Dim rs As Recordset ' déclaration variable de type jeu d'enregistrements
     
 ' exécution requete
    Set rs = DBEngine.Workspaces(0)(0).OpenRecordset(Requête_Recherche)
 
 ' vérification si le jeu d'enregistrements est vide
    If Not rs.BOF Then
        Texte147.Text = rs!resultat
    End If
     
 ' fermeture du jeu d'enregistrements
    rs.Close
 
 ' désinitialisation de la variable de jeu d'enregsitrements
    Set rs = Nothing
End Sub

Reply

Marsh Posté le 07-06-2004 à 15:50:39    

c'est l'execution requete qui foire ou en tout cas au moins elle
il la surligne en jaune

Reply

Marsh Posté le 07-06-2004 à 15:53:10    

Il faut mettre le nom de la requête entre guillemets:
Set rs = DBEngine.Workspaces(0)(0).OpenRecordset("Requête_Recherche" ).

Reply

Marsh Posté le 07-06-2004 à 16:04:50    

j'ai essayé au debut mais il m'a dit la meme chose alors j'ai testé sans

Reply

Marsh Posté le 07-06-2004 à 16:04:50   

Reply

Marsh Posté le 07-06-2004 à 16:12:04    

Essaie plutot ça parce que le Workspaces(0)(0) est louche.
 
Set rs = CurrentDb.OpenRecordset("Requête_Recherche" )

Reply

Marsh Posté le 07-06-2004 à 16:17:29    

maintenant il me dit qu'il y a "trop peu de parametre.1 attendu

Reply

Marsh Posté le 07-06-2004 à 16:17:54    

oki j'essaie

Reply

Marsh Posté le 07-06-2004 à 16:20:05    

il dit comme plus haut : "trop peu de parametre.1 attendu  
Private Sub Commande146_Click()
    Dim rs As Recordset ' déclaration variable de type jeu d'enregistrements
     
 ' exécution requete
    Set rs = CurrentDb.OpenRecordset("Recherche" )
 
 ' vérification si le jeu d'enregistrements est vide
    If Not rs.BOF Then
        Texte147.Text = rs!resultat
    End If
     
 ' fermeture du jeu d'enregistrements
    rs.Close
 
 ' désinitialisation de la variable de jeu d'enregsitrements
    Set rs = Nothing
End Sub
j'ai aussi changé le nom de la requete mais c'est pas ca le pb

Reply

Marsh Posté le 07-06-2004 à 16:25:49    

C'est parce que la requête attend un paramètre.

Reply

Marsh Posté le 07-06-2004 à 16:27:25    

je pense bien mais je voudrais savoir quoi
je me debrouille avec access mais j'ai encore un peu de mal avec vba

Reply

Marsh Posté le 07-06-2004 à 16:35:19    

en fait je suis en bts info et je fais mon stage de 1ere année maisj'arrive pas a faire ce truc je comprend pas  
enfin merci quand meme a vous pour l'aide
on devrai y arriver

Reply

Marsh Posté le 07-06-2004 à 16:38:31    

a je crois comprendre
il veut le nom de l'entreprise
excuse j'avais pas compris le sens de ta phrase
mais alors je met quoi comme code pour que le nom de l'entreprise soit envoyé a la requete ?
voila ma requete : (rien de plus simple )
 
SELECT *
FROM entreprise
WHERE ent_nom=[Quel est le nom de l'entreprise ?];
 
donc je pense qu'il veut le nom
j'y ait meme pas pensé
mais je sais pas comment faire

Reply

Marsh Posté le 07-06-2004 à 16:38:55    

Code :
  1. Dim rs As Recordset
  2. Dim qdReq As QueryDef
  3. Dim strNom As String
  4.     Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM FaEnCours WHERE FaEnCours.Initiales=" & strNom & ";" )
  5.     Set rs = qdReq.OpenRecordset


 
Perso, j'utilise plutot ça. Ca permet de passer construire la chaine SQL avec le paramètre dedans. C'est moins rapide qu'une requête stockée, mais c'est plus simple.

Reply

Marsh Posté le 07-06-2004 à 16:46:15    

j'ai tapé ca  
 
Private Sub Commande146_Click()
    Dim rs As Recordset
  Dim qdReq As QueryDef
  Dim strNom As String
   
      Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise WHERE ent_nom.entreprise=" & strNom & ";" )
      Set rs = qdReq.OpenRecordset
 
End Sub
 
 
il me mets : type defini par l'utilisateur non defini
desole je suis pas tres bon .... snif
 

Reply

Marsh Posté le 07-06-2004 à 17:01:16    

En regardant vite fait, ça doit être la clause WHERE où il manque des quotes parce que ton champ contient du texte
 


Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise WHERE ent_nom.entreprise='" & strNom & "';" )


 
Note bien les deux quotes ajoutées:  '" & strNom & "'


Message édité par tegu le 07-06-2004 à 17:02:21
Reply

Marsh Posté le 07-06-2004 à 17:06:11    

ok merci mais il me dit la meme chose et souligne ca :
 
Dim qdReq As QueryDef
 
c'est mal defini ?

Reply

Marsh Posté le 07-06-2004 à 17:57:52    

si quelqu'un a une solution, vous pouvez poster mais je reviens que demain a 9h00
merci a tous ceux qui m'ont aidé

Reply

Marsh Posté le 08-06-2004 à 07:51:33    

Désolé pour les quotes. Elles ont disparues pendant le bidouillage du Copier/Coller posté + haut.
 
Dans la menu Outils, Références, assure toi que "Microsoft DAO ....." est bien coché, pour avoir QueryDef défini.

Reply

Marsh Posté le 08-06-2004 à 09:36:05    

ok mais y a le meme message d'erreur mais sur :
     Set rs = qdReq.OpenRecordset
 
si je comprend bien cette commande va ouvrir un champ pour le resultat de la requete c'est ca ?

Reply

Marsh Posté le 08-06-2004 à 10:10:31    

Vi, c'est presque ça. La liste des enregistrements retournés par la requête est dans rs. Après, tu accèdes à chaque champ d'un enregistrement par rs.Fields("Nom_champ" ). Donc, tu boucles sur tous les enregistrements de rs et tu extraits ce dont tu as besoin.
Do While Not rs.EOF
    Debug.Print rs.Fields("Nom_champ1" )
    Debug.Print rs.Fields("Nom_champ2" )
    rs.MoveNext
Loop
 

Reply

Marsh Posté le 08-06-2004 à 10:22:24    

ok et pour le mettre dans une zone de texte je tape
texte1.text=debug.print rs.field("nom_champ1" )
 
c'est ca ?
on arrive au bout quand meme

Reply

Marsh Posté le 08-06-2004 à 10:26:30    

Non tu tapes simplement

texte1.text = rs.field("nom_champ1" )


 
La fonction debug.print permet d'afficher le contenu d'une variable dans la fenetre d'execution (une fenetre de debugage quoi)
 

Reply

Marsh Posté le 08-06-2004 à 10:28:46    

je vous remerci tous les mecs je vais essayer comme ca  
je repasse si j'ai un probleme
euh juste une question, vous faites de la prog depuis combien de temps et avec quel langage

Reply

Marsh Posté le 08-06-2004 à 10:39:25    

voila ce que j'ai ecris
 
 
Private Sub Commande146_Click()
  Dim rs As Recordset
  Dim qdReq As QueryDef
  Dim strNom As String
   
      Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise WHERE ent_nom.entreprise='" & strNom & "';" )
      Set rs = qdReq.OpenRecordset
       
Do While Not rs.EOF
    Debug.Print rs.Fields("ent_nom" )
    Debug.Print rs.Fields("ent_adr" )
    rs.MoveNext
Loop
      Texte147.Text = rs.Fields("ent_nom" )
      texte148.Text = rs.Fields("ent_adr" )
End Sub
 
seulement moi je veux que ce soit l'utilisateur qui tape le nom de l'entreprise mais l'ordi ne me le demande pas je pensais qu'il me mettrai une boite de dialogue ou bien faut il que je tape le nom de l'entreprise dans un texte box et que l'rodi recupere cette valeur ?
dans ce cas la ce serait un truc comme ca non ?
 
Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise WHERE ent_nom.entreprise='texte1';" )

Reply

Marsh Posté le 08-06-2004 à 11:06:11    

Utilise un truc du genre

Code :
  1. strNom = InputBox("Nom de l'entreprise?" )


juste avant le "Set qdReq = .."
Ca posera la question à l'utilisateur. Et tu laisses la requete comme elle est.

Reply

Marsh Posté le 08-06-2004 à 11:15:11    

merci beaucoup

Reply

Marsh Posté le 08-06-2004 à 11:38:06    

Bon maintenant ca donne ceci
 
 
Private Sub Commande146_Click()
  Dim rs As Recordset
  Dim qdReq As QueryDef
  Dim strNom As String
      strNom = InputBox("Nom de l'entreprise?" )
      Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise WHERE ent_nom.entreprise='" & strNom & "';" )
      Set rs = qdReq.OpenRecordset
       
  Do While Not rs.EOF
      Debug.Print rs.Fields("ent_nom" )
      Debug.Print rs.Fields("ent_adr" )
      rs.MoveNext
  Loop
  Texte147.Text = rs.Fields("ent_nom" )
  Texte149.Text = rs.Fields("ent_adr" )
End Sub
 
 
et il me dit encore qu'il manque un paramtre :
trop peu de parrametre. 1 attendue
je comprend pas !

Reply

Marsh Posté le 08-06-2004 à 11:58:27    

Ben mon vieux! Tu rames grave!!
 
Avant le InputBox, ça marchait ?
Sur quelle ligne il bloque ?

Reply

Marsh Posté le 08-06-2004 à 12:07:42    

il bloque sur : Set rs = qdReq.OpenRecordset
je sais mais j'ai pas l'habitude vba et je commence en prog
enfin c'est vite dit
desole  
en tout cas au moins vous me prenez pas de haut
c'est cool merci

Reply

Marsh Posté le 08-06-2004 à 12:08:20    

ah j'oublié je reviens a 2 heure alors vous étonnez pas si je repond pas  
bon ap a tous !

Reply

Marsh Posté le 08-06-2004 à 12:29:23    

Mr Mazurier a écrit :

ah j'oublié je reviens a 2 heure alors vous étonnez pas si je repond pas  
bon ap a tous !

Bon ben... bon ap' alors...
 
On remet les choses à plat. Colle tout ça pour remplacer ton code.

Code :
  1. Dim rs As Recordset
  2. Dim qdReq As QueryDef
  3. Dim strNom As String
  4.     strNom = InputBox("Nom de l'entreprise?" )
  5.     Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise  WHERE ent_nom LIKE '" & strNom & "';" )
  6.     Set rs = qdReq.OpenRecordset
  7.      
  8.     Texte147.Text = rs.Fields("ent_nom" )
  9.     Texte149.Text = rs.Fields("ent_adr" )

Si ça ne marche pas, je sais plus... :??:  
Remarque que le signe = est remplacé par LIKE dans la clause WHERE. C'est pour s'affranchir de pbs d'auretograffe. Après, on affinera.

Reply

Marsh Posté le 08-06-2004 à 14:21:08    

maintenant il me dit ca ..... j'en ai marre !
 
erreur de type '13'
icompatibilité de type
      Set rs = qdReq.OpenRecordset
 
 
ca voudrait dire si je comprend bien que les déclaration ne sont compatible avec le type de données du resultat mais pourtant le resulat c'est du texte alors je vois pas
 
ah au fait, les Commande SQL, je les comprends je vois ca en cours mais c'est pour le VBA . j'ai l'habitude avec VB mais je fais pas programme dans ce genre la  
 
en gros ce ki devrai se passé c'est :
             Nom de l'entreprise ?
                    BlueCom
             et là il devrai renvoyer Bluecom et son adresse
             ( je pense que vous aviez compris )
 
je pense que j'ai fait une toute petite conneries et ca fait tout foirés
 
dernier chose : le truc DAO c'est Microsoft DAO 3.6 Library Object c'est bien ca ?

Reply

Marsh Posté le 08-06-2004 à 14:31:08    

Oui, c'est celle la. Précise dans les déclarations:
Dim rs As DAO.Recordset
Dim qdReq As DAO.QueryDef

Reply

Marsh Posté le 08-06-2004 à 14:39:58    

je comprend pas ce coup ci :
 
erreur de compilation
declaration existante dans la portée en cour
 
  il souligne ca : Dim rs As DAO.Recordset
 
il a pas aimé la modif
 
 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed