comment afficher le resultat dans les zones de texte ? (Resolue) - VB/VBA/VBS - Programmation
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 ...
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...
|
J'espère t'avoir aidé
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
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
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
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
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" ).
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
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" )
Marsh Posté le 07-06-2004 à 16:17:29
maintenant il me dit qu'il y a "trop peu de parametre.1 attendu
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
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
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
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
Marsh Posté le 07-06-2004 à 16:38:55
Code :
|
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.
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
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
|
Note bien les deux quotes ajoutées: '" & strNom & "'
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 ?
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é
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.
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 ?
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
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
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)
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
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';" )
Marsh Posté le 08-06-2004 à 11:06:11
Utilise un truc du genre
Code :
|
juste avant le "Set qdReq = .."
Ca posera la question à l'utilisateur. Et tu laisses la requete comme elle est.
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 !
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 ?
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
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 !
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 ben... bon ap' alors...
On remet les choses à plat. Colle tout ça pour remplacer ton code.
Code :
|
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.
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 ?
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
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
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