Vba (access) Jsuis inculte en vbaaaaaaa

zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005 - 26 juil. 2005 à 11:15
cs_Bruno28 Messages postés 21 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 18 octobre 2005 - 3 août 2005 à 08:51
voila j'ai une table X

X
+-------------------------
nom | argument1 |
*-------------------------

jaimerai sous vba dire que

for inti=1 to nombre_de_colone_de_ma_table_X

Si argument1 <> "" then
argument2=se_qui_vas_dans_argument1.value
inti=nombre_de_colone_de_ma_table_X
/* jai untextbox se_qui_vas_dans_argument1
end if
next

voila j'espere que sait clair en francais sa seras peu etre mieux:
jai un bouton valider avec un champs texte que l'user rempli si il n'as jamais remplis ce champs no problem il vas dans la 1er rubrique "argument1" si argument1 de luser (ps je connais son nom) est plein je doit crée une colone argument2 dans ma table X etc
merci a vous

9 réponses

Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
26 juil. 2005 à 12:03
J'ai pas très bien compris ce que tu veux faire... c'est que ta table a
un nombre de colonne variable??? (si c'est le cas, c'est une très
mauvaise solution)



Mais explique mieux le but de ton formulaire, j'en vois pas l'intéret!
Présente mieux le contexte, décris mieux à quoi sert cette table et à
quoi ressemble ton formulaire. Ça ne sera que bénéfique!
0
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005
26 juil. 2005 à 12:45
ok ok alors jai une table X ou est referencé les livre que les user on lu.
le truc c'est que une personnes peut avoir lu 1000 livre donc il me faut 1001 colone ou 1000 ligne pour une personnes se qui est pas cool pour les recherche donc dans mon formulaire jai un champ ou le gars rentre le livre qu'il a lu et la je blloque j'ai cru touver cette solution mais je voye rien dautre
0
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
26 juil. 2005 à 13:02
Oh làlà, ta solution est désastreuse!!!



Saches qu'il vaut mieux avoir 1000 lignes que 1000 colonnes... surtout si c'est un nombre variable!!!



Ce qu'il te faut c'est ça

- une table User(NoUser, NomUser...)

- une table Livre(NoLivre, Titre...)

- une table Lire(NoUser,NoLivre)

Note : ce qui est en écris comme ça sont des Clef Primaires!



Déjà, avec cette solution, un User peut lire plus de 32000 livres!!!

IMPORTANT : "NoLivre" de la table "Lire" DOIT être un "Numérique Long"
et pas un "Numéro Auto" (ce truc est une énorme connerie!)



Maintenant, pour avoir la liste des livres lus par une personne, tu fais la requete SQL suivante :

"SELECT Titre FROM Livre,Lire WHERE Lire.NoLivre=Livre.NoLivre"

Pour avoir la liste des livres qui ne sont pas encore lus par le User "Poulet", tu feras :

"SELECT Titre FROM Livre,Lire,User WHERE Lire.NoLivre=Livre.NoLivre AND User.NoUser=Lire.NoUser AND NomUser<>'Poulet'"!



Hésite pas à poser d'autres questions!
0
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005
27 juil. 2005 à 08:57
Le probleme c'est que je doit aussi referencé la date a qulle jour a été lu le livre donc si je fait une table nom une table livre ma troisieme table doit avoir N° nom N° livre + date mouais sa me parait possible dit moi se que ten pense merci
0

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

Posez votre question
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
27 juil. 2005 à 09:30
J'y avais pensé, c'est très simple à mettre en place.



Soit tu veux uniquement retenir la dernière date de lecture alors ta table lire aura la forme suivante :



Lire(NoUser,NoLivre,DateLecture)



Mais à chaque fois que ton User va lire un Livre qu'il a déjà lu, il faudra penser à faire un UPDATE!



Sinon, si tu veux connaître toutes les dates où un User a lu un Livre, il faut que ta table ait la forme suivante :



Lire(NoUser,NoLivre,DateLecture)



Voilà!
0
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005
27 juil. 2005 à 10:26
je te remercie 1000ment pour tes reponces tres clair il faut le dire sa fait plaisir cette rapidité.
sinon jaiun autree probleme directement lié a cela.
Point de vu du formulaire sa se presente comme cela

--------------------------------------------
fiche du M. intel

nom :intel photo :ium
prenom : pent id :215451

*/formulaire fille/**********************
* _________ *
* nom du livre | | *
* _________ *
* date de lec. | | ajouter enr.*
*****************************************


----------------------------------
voila
ben le truc c'est que quand je fait ajouter jaimerai bien que le livre avec la date se metes ds un nouvelle enregistrement et que sa efface les deux texte box
jai fait cela comme code mais sa marche pas sa me met des champs vide a chaque fois y a le nom grace au champ pere fils.

code :
DoCmd.OpenTable "livre", acViewNormal
DoCmd.GoToRecord acDataTable, "connaissances_cursus", acNewRec
DoCmd.Close acTable, "connaissances_cursus", acSaveYes
domainedate = ""
textdomaines = " "

elas sa marche pas merci pour ta futur reponce
0
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
27 juil. 2005 à 11:12
Saches que je ne code pas du tout comme ça en Access... Moi, je préfère
TOUT passer par le code... même des champs comme "Nom", "Prénom"... car
dans ta manière de faire, tu as un accès direct à la base!

Essaye de changer le nom et tu quittes ton logiciel juste après
(Alt+F4) ben, ça sera sauvegardé... je trouve ça un peu nul, d'où ma
façon de faire... Pour les sous-formulaires (formulaires filles), je
lui met pas de Champ Pere/Champ Fils mais je passe tout par la requete
source de ce formulaire.



Je peux pas trop t'aider à ce sujet, mais je peux te proposer une autre solution, plus ergonomique à mon goût...



Il faut que tu interdises l'ajout, la modif et la suppression de lignes
de ton formFille, que tu lui vires le sélecteur et que tu lui mettes la
barre de défilement uniquement Verticale. (Propriétés du formFille)



Ensuite, tu alignes tes TextBox "TitreLivre" et "DateLecture" et dans
leurs propriétés tu mets "Activer" à Faux et "Verouillé" à Vrai (onglet
données).



Dans les propriétés du formFille, en "Source" tu mets la requete suivante :

"SELECT Titre, DateLecture FROM Lire, Livre WHERE
Lire.NoLivre=Livre.NomLivre AND
NoUser=[Formulaires]![NomFormulairePere]![txtNoUser]"



Pense à faire "NomFormulairePere.Requery" à chaque fois que tu vas changer de User.



Ensuite, tu ajoutes un bouton "btnAjout" juste à coté du formFille. Sur
l'événement Click de ce bouton, faut se débrouiller pour sélectionner
un livre qui est dans la base et aussi de choisir la date (mets la date
système par défaut). Tu récupères ces 2 infos dans des variables et tu
finis par un

DoCmd.RunSQL("INSERT INTO Lire VALUES(" & noUser & "," & noLivre & ",#" & dateLecture & "#)")



Voilà...
0
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005
27 juil. 2005 à 12:48
Je me suis posé une autre question apres , comment je peut faire pour en fonction du'un date affiché tout les livre lu en fonction du un livre toute les date et les mec...

a par le faite de faire une requette par champs

parce que le truc c'est que jai 5 table a + ou - 12 champs par table
et oui je ne gere pas que des livre dans ma table .Il ya un systeme de niveau dexperience sous logiciel de 1 a 4 voila le dising de la table

nom | word | excel | .......

jai douze champs jaimerai que si qqn demande qui a 4 en word sa me sorte le nom de tout les gars et que qd je clic sur le nom du gars sa me sorte de toute les table la cohérence avec son nom mais j'y arrive pas lol je vais deja essaye de faire se que tu ma dit je te remerci sa fait plaizir detre aidé comme sa

.je me plongeré apres sur lautre probleme merci :ps on peut faire des requetes sql sou vba?
0
cs_Bruno28 Messages postés 21 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 18 octobre 2005
3 août 2005 à 08:51
Salut zolt4n.

Tu peut écrire des requêtes sous VBA. Regardes le message de Chris_laFouine du 27/07/2005 11:12:58, il y a une requête, voir ci dessous
"SELECT Titre, DateLecture FROM Lire, Livre WHERE Lire.NoLivre=Livre.NomLivre AND NoUser=[Formulaires]![NomFormulairePere]![txtNoUser]"

Ceci est une requête SQL BVA et une méthode pour l'appliquer à un formulaire.

Dim a As String
a = "SELECT * FROM ......"
Me.nomduformulaire.Form.RecordSource = a

Pour le clic sur le nom du gars, quand tu as filtré tes enregistrements, il te restera par exemple 8 personnes qui répondent au critère. Rend le controle dans lequel il y a le nom du gars actif et non modifiable (propriété du controle), et sur clic (ou double clic), tu ouvres un autre formulaire qui affichera les données des autres tables à l'aide le l'instruction qui suit, à mettre dans l'évenement sur ouverture du formulaire

Dim b As String
b = "SELECT *.table1 FROM table1 WHERE ((table1.nomdugars) Like [Formulaires]![nom_formulaire_source]![nom_control_cliqué])"
Me.Form.RecordSource = b

Bon courage

Bruno28
0