Fanny:pour écrire dans un report?

yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005 - 2 juin 2004 à 14:28
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005 - 7 juin 2004 à 14:26
voilà la situation, je veux créer un report et y ecrire

les données sélectionnées dans la fameuse listebox

j'ai vu que pour créer un report c:
dim rpt as report
set rpt=createreport

jusque là pas dur...
mais ensuite pour écrire dedans, je fais comment, c encore avec des requètes sql?

j'avoue que je te demande ca avt d'avoir feuilleter le manuel à fond.... 8-)

yaf_yaf

18 réponses

HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
2 juin 2004 à 14:43
Et bien mets toi au boulot ! Cherche un peu ;)

Non mais là au boulot je n'ai pas Access ... et de tête je ne vois pas.

Quand tu fais rpt. il te met une liste de propriétés et de méthodes, à toi de choisir celles qui te permettent d'afficher des éléments.

Si je trouve un Access, je regarde, promis :)

Fanny
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
2 juin 2004 à 15:59
ok j'avoue que tu me donnais l'impression d'être une encyclopédie en matière de vba et access lol

je précise qd même mon affaire: au final, le report c pour y stocker des données sélectionnées ds plusieurs listebox
et le but c de les imprimer sur une seule feuille d'où mon idée d'utiliser un report....bon, je vais essayer de me débrouiller :blush)
/me a mal au crâne après avoir réussi à régler un problème dans une boucle conditionnelle.....
yaf_yaf 8-)
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
3 juin 2004 à 11:42
En fait, un report fonctionne comme un formulaire, je peux donc y créer des control style label et y mettre du text dedans
j'en ai créer un pour voir....

mais je me demande si c'est possible de déclarer et créer un nombre de labels de manières dynamique...parce que l'utilisateur a le choix entre une soixantaine d'options et peut en prendre plusieurs et pour chaque option, il y'a un sous groupe de caractéristiques....et je me vois mal déclarer un label par option dans mon programme.

alors est-ce qu'il y'a une syntaxe permettant de déclarer en boucle une série de label variants par leurs indices?
g déjà posé une question du genre je crois...

sinon autre possibilité:je prend un seul label et j'y entre dedans toutes les données en m'arrangant pour que tout soit rangé par thème et non en vrac....c possible ca?

:question) 8-)
yaf_yaf
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
3 juin 2004 à 12:01
la declaration d'un label qu 'on va créer n'a rien à voir avec le nom qui le désigne....
du coup je pense à un algorithme du genre

dans fonction recuperationoption:

'recuperation de la liste des option
'pour chaque option->lancer fontioncreationlabel

dans fonctioncreationlabel

'declaration label
'recuperation des caracteristiques
'creation remplissage du label avec comme contenu option et caractéristiques

En procédant comme ca il va nommer lui même les labels
et je ne ferais juste qu'y mettre le contenu

bon ben j'essaye.... :blush)
yaf_yaf
0

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

Posez votre question
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
4 juin 2004 à 08:40
Bonjour,

hier je n'ai pas pu accéder au site l'après midi.
Sinon, tu peux essayer de faire une boucle pour créer tes labels et tu les mets dans un tableau de label.

Enfin, si ton idée marche, autant la faire :)

Fanny
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
4 juin 2004 à 11:11
g aussi eu qcq difficultées pr accéder au site...
sinon, mon idée marche....
g choisi un label pour le titre, un label par options, et un label pour l'ensemble des sous options de chaque options

la seule difficultées et de taille c que ca demande des structures conditionnelles avec plein de if, elseif.... car l'utilisateur va faire ses choix de caractéristiques option par option, il faut donc que je mémorise ces choix au fur et à mesure qu'il change d'option,
changer la taille des labels en fonction du nombre de caractéristiques ce qui implique de déclarer des variables publiques,...,et m'arranger pour que tout soit positionner correctement sur la feuille...

Je pense que je vais devoir créer un tableau de liste pour la mémorisation des options et caractéristiques....

le point positif c que je sais comment lancer l'impression....
8-)
yaf_yaf
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
4 juin 2004 à 13:18
Pourquoi tu ne ferais pas une méthode qui mémoriserait les options en fonction de si tu les coches ou non ?

Tu mets une variable globale qui est un tableau de Label de taille : nombre de choix maximum d'option.

Chacun des tes boutons d'options sera nommé par un nom (toujours le meme) + un chiffre incrémenté.
Ex : Option1, Option2 ...

Sur chaque option tu mets dans la méthode On_Change ou On_Click

indice = Mid(Me.Name,7,Len(Me.Name)-7)
If bouton = True Then
'ici tu mets dans le tableau un label que tu crées à l'indice de tableau ... le numéro du bouton d'option
TableauLabel(indice) = Label ...
Else
TableauLabel(indice) = null
End If

Et quand tu crées ton report ... tu parcours ton tableau pour savoir quel label créer.

Enfin, je te donne une idée mais je n'ai pas testé.

Fanny
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
4 juin 2004 à 15:26
c une idée à creuser effectivement,
là jéssaie de créer un tableau de tableau et je me demande si c possible car y'a une erreure que je ne parviens pas à résoudre:
'g un tableau: défini comme variant et de longueur=au nbre d'option choisies redimensionné ainsi:

redim tableau(longeur,1)

'ensuite je parcours la listbox des sous options
'que je met ds un second tableau défini comme string
For i 0 To i listbox1.ListCount - 1
If listbox1.Selected(i) = True Then
tableau2(i, 0) = listbox1.list(i, 0)

Else
vide = vide + 1
End If

Next i
'vide sert à vérifier que des choix ont bien été fait

et je fais tableau(j,0)=nomoption
tableau(j,1)=tableau2
c cette dernière instruction qui me pose problème.....
mais peut-être que j'ai tout faut dans ma conception de ce qu'est un tableau en visual basic, comme je l'ai dis, je débute toujours
'j est une valeur que je vais incrémenter à chaque changement d'option....

yaf_yaf :question) :)
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
4 juin 2004 à 15:58
je crois que je vais abandonner l'idée de faire un tableau de tableau,.....en c je sais comment faire mais là je ne sais pas vu que l'allocation mémoire ne e fait pas de la même manière

je vais créer un tableau de label selon ton idée....ce sera peut-être plus simple.....
;)
yaf_yaf
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
4 juin 2004 à 16:11
sinon, question, comment déclare t' on une structure en vb?
il me semble que c'est par l'instruction: type
mais je n'ai pas la syntaxe exacte

je voudrais associer à une structure:

un tableau de string
et un pointeur vers cette même structure

ce serait presque comme avoir un tableau de tableau
???
yaf_yaf
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
4 juin 2004 à 18:27
Désolée de ne pas avoir répondu plus tot (j'étais en réunion cet aprèm).

Pour déclarer un type :

Type nouveauType
machin As String
bidule As Integer
End Type

Voilà, si tu n'arrives pas à l'utiliser dis moi.

Fanny
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
7 juin 2004 à 09:06
ok merci,

figure toi que j'ai réussi à régler mon problème de création de tableau de tableau pour l'enregistrement des options et sous-options!
le problème venait de ce que lors de la lecture des valeurs sélectionnées, le programme sortait de la boucle for après la première lecture....je n'ai pas compris pourquoi alors j'ai remplacé par des boucles en while et la c nickel....

mais là où j'ai un nouveau problème c pour la création des
label correspondants.le compilateur n'accepte pas la valeur du tableau où se trouve les noms....est-ce parceque j'ai déclaré mon tableau en variant?
parce que si c'est le cas, je crois que en déclarant comme string c le tableau que je ne pourais pas remplir.....
8-)
yaf_yaf
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
7 juin 2004 à 09:15
Normalement, tu peux créer un tableau de Label :

Dim tableauLabel() As Label

Fanny
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
7 juin 2004 à 09:30
g parlé trop vite, mon erreure venait de ce que dans la fonction qui crée les label j'appelais le text comme string alors que dans le tableau, il était en variant....maintenant ca marche

pr ce qui est du tableau de label, je vais faire sans...du reste je crois que en remplissant un tableau de label sur une action onclick comme tu proposais serait génante car si jamais l'utilisateur changeait d'avis et désélectionnait une valeur, il faudrait supprimer le label correspondant...autrement dis, il faudrait faire une ultime vérification pour être sûr que le nombre de label crée est égal au nombre de valeur sélectionnées avt chaque changement d'option....et pour savoir quel label supprimer,cela me parait coton.....
je préfère faire la chose par étape enregistrement puis création de label et placement des labels....

mais simple curiosité, que fais l'instrucion mid() exactement?
c l'exemple que tu m'avais donné:
indice = Mid(Me.Name,7,Len(Me.Name)-7)

yaf_yaf 8-)
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
7 juin 2004 à 10:44
En fait, Mid extrait une sous chaine de caractère par rapport à un indice de début et à une longueur :
Mid(chaine,début,longueur)

ex :
chaine = "Bonjour à tous"

MsgBox Mid(chaine,1,7) --> "Bonjour"

En fait pour mon exemple c'était pour récupérer le numéro de l'option, ou du label ou d'autre chose en supposant que chaque contrôle est nommé pareil :

Ex :
Public tableau(nbOptions) As Label

Sub option1_Click()
'pour insérer à l'indice du bouton radioo dans le tableau, il faut récupérer le 1
Dim indice As Integer
indice = Mid (Me.ActiveControl.Name,7,Len(Me.ActiveControl.Name) - 6)
If Me.ActiveControl.Value = True Then
tableau(indice) = Me.ActiveControl.Caption
Else
tableau(indice) = ""
End If
End Sub

Voilou :)

Mais ma technique ne fonctionne pas je pense :sad)

Fanny
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
7 juin 2004 à 13:49
ok lol
eh bien la mienne elle fonctionne vu que ca imprime ce que je veux comme je veux
du coup j'ai refait des test partout et je viens de m'apercevoir de qcqchose: lorsque je fais mes modifications de table en ajoutant une ligne, ou simplement en modifiant une ligne préexistente cela fonctionne ds ts les cas sauf 1: si je veux remplacer une donnée par un blanc il ne se passe rien
g alors pensé à faire un delete ds ce cas là, mais à ce moment là toute la ligne est supprimée alors que je précise le champ que je veux supprimer....

pour l'ajout de ligne,si je veux mettre un blanc ds l'un des champs,il ne se passe rien alors que si je veux remplir tout les champs ca marche impec...

A mon avis, y'a peux de chance pour qu'un utilisateur futur décide de mettre un blanc, mais si par exemple il fait une modification à un endroit où y'a déjà un blanc en se trompant e ligne,il ne pourra pas rectifier....

autrement dit y'a un bug quelque part et je ne vois pas comment le résoudre...

t'as une idée? :sad)

yaf_yaf
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
7 juin 2004 à 14:04
Tu es sur que ça ne fonctionne pas en faisant quelque chose comme ça : (je mets des noms au pif)

txtNom.Text = ""
requete "UPDATE personne SET nom "' & txtNom.Text & "' WHERE num = " & txtNum.Text

Car il n'y a aucune raison pour que ça ne fonctionne pas ... c'est bizarre ...

A moins que tu n'aies pas autorisé que des champs puissent être vides !

Fanny
0
yafisab Messages postés 106 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 6 janvier 2005
7 juin 2004 à 14:26
ct ca ! un probleme d'autorisation, je pense que c un paramètre par défaut car moi je n'avais rien spécifié du tout...

bon a priori je n'ai plus de problème et tout ce q'il reste à faire c les commentaires en allemand....
merci
8-)
yaf_yaf
0