Sortir saisi requête dans état

ctaveau Messages postés 15 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 9 juillet 2007 - 6 juil. 2007 à 12:16
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 - 10 juil. 2007 à 08:00
Bonjour,

Question a priori simple, mais je ne trouve pas de soluc sur le net alors voici

Enfin mon souci est le suivant. J'ai un état qui me ressort une liste selon une requête de sélection. Donc lorsque je lance l'état je saisi le critère défini par la requête suivant
WHERE (([Table principale].artiste)=[Saisir Artiste]))
Là je saisi l'artiste, et ce que je voudrais c'est que sur l'état ressorte en titre, le nom de l'artiste que je viens précédemment de saisir correspondant ?
Si avec le générateur d'expression je renseigne bien dans mon champ d'état
=[xf Requête pour 1 mois]![artiste]
j'obtiens le message d'erreur suivant #nom?
Autrement j'ai bien essayé d'"encapsuler" la variable et de la reporter, mais là je manque de repère : où dois-je déclarer ma variable exactement > dans la requête, mais en mode SQL je n'y arrive pas. Et ensuite ça ne fonctionne pas, même si j'essaie de renseigner en VBA

Autrement j'applique en même temps dans la requête un filtre par date
WHERE ((([Table principale].date) Between [Saisir la date de début] And [Saisir la date de fin]) AND (([Table principale].artiste)=[Saisir Artiste]))
Ayant plusieurs types de listes (albums, titres chansons...) dans le même état, reprenant cette requête, comment faire pour ne pas se voir répéter plusieurs fois la saisie des dates et de l'artiste ?

Merci pour l'aide, j'espère avoir clairement exposé mon souci.



Cyril

10 réponses

cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
6 juil. 2007 à 14:10
Salut,

j'ai un peu de mal a comprendre mais je pense que tu essaies de rajouter un parametre a ta requete SQL. Le truc que je ne comprend pas c'est via quoi tu veux saisir l'artiste.
0
ctaveau Messages postés 15 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 9 juillet 2007
6 juil. 2007 à 14:19
Salut,

J'ai en fait un état basé sur une requête toute simple.

Lorsque je lance l'état, j'ai donc l'invite à saisir le nom d'artiste, et la si je saisi par exemple "Bruel", l'état ressort toute la liste des albums et titres de Bruel.

Le truc est que je n'arrive pas à faire ressortir en titre alors sur l'état Bruel, pour savoir que c'est le listing de cet artiste.

J'ai essayé de générer une expression à partir du requêteur en prenant bien soin d'essayer plusieurs solutions, rien à faire.

J'ai parouru le net, où j'ai vu qu'il faisait souvent référence au problème pour les variables : encapsuler la variable dans une fonction, pour la rappeler à ce moment dans mon état. Mais comment déclarer une variable en fonction dans une requête, il n'y a que le SQL, et là j'avoue que je sèche.

Cyril
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
6 juil. 2007 à 14:27
L'invite pour saisir c'est quoi un textbox, ou autre chose. Ensuite, que veux tu dire par en titre, tout en haut, en titre du datareport.

Car pour cela tu fais,

Nom_etat.caption = Artiste_saisie
0
ctaveau Messages postés 15 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 9 juillet 2007
6 juil. 2007 à 14:52
L'invite est le résultat d'une requête du type
WHERE (([Table principale].artiste)=[Saisir Artiste]))
ce qui revient à une combox il me semble lorsqu'on saisi dans la fenêtre.

Le truc c'est que c'est uniquement en SQL, alors comment déclaré la variable avec Liste_album.caption = artiste, et où plus exactement.

Autrement, par titre, j'entends dans l'entête de l'état . Je ne sais pas ce que c'est datareport

Cyril
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
6 juil. 2007 à 22:24
Je suis desolé mais etant donné que je ne suis pas devant ton ecran, il m'est difficile de voir ce dont tu veux parler.

Un datareport, c'est le nom d'un objet etat (report = etat).

Pour bien comprendre, j'aimerai savoir chronolgiquement ce qui se passe.

Ex: J'appuie sur le bouton "Afficher état" dans mon formulaire, une fois dans l'etat ...........

De plus, je ne vois pas le lien entre une requete et une invite de saisie d'artiste. Si c'est un combobox, OK, mais dans ce cas, tu dois pouvoir ecrire du code dans un evenement de ta combobox.

L'entete de ton etat possede un controle dans lequel tu veux afficher l'artiste. Et bien dans le code, tu donnes la valeur de ton comboxbox dans la propriété caption de ton controle en entete.
0
ctaveau Messages postés 15 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 9 juillet 2007
9 juil. 2007 à 14:44
Ok merci.

Je vois ce que tu veux dire.

J'ai en effet fait un bouton pour lancer l'état.

Lorsque je clique dessus, l'état se lance et j'ai alors une fenêtre d'invite pour saisir l'Artiste dû à la requête.

Je saisi bien l'artiste, mais je ne sais pas récupérer la valeur de la comboxbox alors.

Et j'ai essayé dans le code, avec l'aide du générateur d'expression, mais comment se nomme alors cette comboxbox ?? Je ne sais même pas retrouver ça dans le SQL...

Cyril
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
9 juil. 2007 à 16:07
Alors si tu saisies l'artiste "a la main" et pas en le selectionnant (mais de tout maniere je crois que c'est pareil), tu peux recupérer sa valeur en faisant Nom_ComboBox.value.

Maintenant, je ne sais pas d'ou sort ta requete. Mais ce qui est sur, c'est que tu devrais l'executer via le code.

Dim SQL as String

SQL = ta_requete.

Une fois l'artiste saisie, tu integres son nom dans la requete.

SQL = SQL & Nom_ComboBox.value

Alors je me doute que ca va pas etre aussi simple car l'artiste doit se trouver a un certain endroit dans la requete et pas forcement a la fin.

C'est pour ca que tu m'aiderais beaucoup a comprendre comment tu fais si tu me montrais ton code et la requete.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
9 juil. 2007 à 16:13
Alors attend, je viens de tilter. Est ce que tu ne me parlerais pas de la boite de dialogue qui s'affiche quand tu dois saisir un parametre manquant dans ta requete.

Enfin je sais plus car dans ce cas, il n'y a pas de comboxbox dans ce cas mais un textbox normal. Je sais plus ????????
Je pense quand meme que par code ca serait plus simple.

Tu as du code dans l'etat.
0
ctaveau Messages postés 15 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 9 juillet 2007
9 juil. 2007 à 17:19
Ok, j'ai vu le message.

Non je n'ai pas mis de code dans l'état. Je l'ai réalisé avec l'assistant me basant sur la requête contenant le code SQL j'ai précédemment évoqué.

Autrement oui, il s'agit d'une boîte de dialogue qui s'affiche, car dans ma requête je demande de saisir le critère de sélection 'Artiste' par l'invitation par défaut du système par défaut.

Cyril
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
10 juil. 2007 à 08:00
1) Je vois pas comment faire pour recupérer la valeur saisie. comment s'execute ta requete. Tu l'execute via le code ou en la placant dans une propriété de ton etat (report).

Peut etre quand affichant la source de l'etat ce serait possible. Ca serait la solution la plus simple mais repond moi sur ce point.
MsgBox Dataport.DataSource ou un truc dans le genre.

2) Par contre, tu peux gérer ca par code.

Dans la fenetre de Visual, en haut a gauche, tu choisis ton report, ensuite a droite, l'evenement open. Le code que tu placera dans cet evenemtn s'executera lors de l'ouverture de ton etat.

Ensuite, tu recopies ta requete dans une chaine de caracteres.

Dim SQL as String
SQL = Ta_requete

Ensuite tu invites l'utilisateur a saisir le critere. Pour cela tu peux faire InputBox (je sais pas si ca existe en VB6) ou sinon faire un petit formulaire que tu appelles.

Tu recupérer la valeur saisie et tu l'inseres dans ta requete. Je pense que la fonction replace peut t'aider.

Enfin tu mets cette requete dans la bonne propriété de ton état (DataSource je pense).

J'attends ta reponse.
0
Rejoignez-nous