Shtong Posté(e) le 5 juin 2009 Partager Posté(e) le 5 juin 2009 L'objectif est que pour un article condensateur tu auras dans la table Article : ID : 1, Nom : machin , Boitier : 0603, Quantité : 60, manufacturier : KERMET dans la table Condensateur : ID_Article: 1, Valeur : 2.2nf, tolérance : 5%, Technologie : tantal Bien sûr il est important que ID et ID_Article aient la même valeur dans les deux tables pour que tu puisse en déduire qu'il s'agit bien du même article (le numéro un) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Stude 12 Posté(e) le 5 juin 2009 Auteur Partager Posté(e) le 5 juin 2009 Je pense que ceci va changer quelque chose pour mes recherches et mes boites, car la je fait une requête du type (Mais bon ici je pense pas que ça change grand chose) : SELECT Condensateurs.Valeur FROM Condensateurs GROUP BY Condensateurs.Valeur ORDER BY Condensateurs.Valeur; Par contre pour mes recherches : SQL = "SELECT N°," SQL = SQL & " " & Me.Éticmbbox1.Caption & ", " & Me.Éticmbbox2.Caption & ", " & Me.Éticmbbox3.Caption & ", " & Me.Éticmbbox4.Caption & ", " & Me.Éticmbbox5.Caption & ", " & Me.Éticmbbox6.Caption & ", " & Me.Éticmbbox7.Caption & ", " & Me.Éticmbbox8.Caption & "," & Me.Éticmbbox9.Caption & "," & Me.Éticmbbox10.Caption & "," & Me.Éticmbbox11.Caption & "," & Me.Éticmbbox12.Caption & "," & Me.Éticmbbox13.Caption & "," & Me.Éticmbbox14.Caption & "," & Me.Éticmbbox15.Caption & "," & Me.Éticmbbox16.Caption & " FROM " & Me.chbComposant.Value & " (et ici venir mettre la table Article ?) where " & Me.chbComposant.Value & "!N°<> 0 " Et ensuite je rajoute le critère si la case est cocher : If Me.chkbox1 Then SQL = SQL & "And " & Me.chbComposant.Value & "!" & Me.Éticmbbox1.Caption & " like '*" & Me.cmbbox1.Value & "*'" End If En rouge, je récupère juste le nom des colonnes. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shtong Posté(e) le 5 juin 2009 Partager Posté(e) le 5 juin 2009 Je te met une requête avec juste deux colonnes pour simplifier : SELECT ID, Nom, Valeur [ autres colonnes... ] FROM Condensateur, Article WHERE ID=ID_Article AND [autres conditions...] la condition permet de dire de prendre ensemble les lignes des deux tables qui ont le même identifiant. Note : Pour sélectionner un article en fonction de son identifiant il est préférable de faire ID=mavaleur au lieu de mavaleur!ID <> 0 comme tu as l'air de faire.. Maintenant ça fait très longtemps que je n'ai pas manipulé access mais je ne pense pas que cette meilleure manière ne soit pas possible Lien vers le commentaire Partager sur d’autres sites More sharing options...
Stude 12 Posté(e) le 6 juin 2009 Auteur Partager Posté(e) le 6 juin 2009 OK là on n'est le weekend alors je peut pas tester ça, merci pour l'aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Stude 12 Posté(e) le 10 juin 2009 Auteur Partager Posté(e) le 10 juin 2009 Bon j'ai retaper toute mes tables comme au dessus soit 500 composants et 8 colonnes sot 4000 ctrl-c/crtl-v. Mais bon je vais tester. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Stude 12 Posté(e) le 10 juin 2009 Auteur Partager Posté(e) le 10 juin 2009 Par contre j'ai une ligne de code qui fait tout foiré : SQL = "SELECT ID,"SQL = SQL & " " & Me.Éticmbbox9.Caption & "," & Me.Éticmbbox10.Caption & "," & Me.Éticmbbox11.Caption & "," & Me.Éticmbbox12.Caption & "," & Me.Éticmbbox13.Caption & "," & Me.Éticmbbox14.Caption & "," & Me.Éticmbbox15.Caption & "," & Me.Éticmbbox16.Caption & " FROM ParametresGlobals " SQL = SQL & " WHERE ParametresGlobals.* = " & Me.TxtRech.Value & " " J'ai aussi essayer ceci : SQL = "SELECT ID,"SQL = SQL & " " & Me.Éticmbbox9.Caption & "," & Me.Éticmbbox10.Caption & "," & Me.Éticmbbox11.Caption & "," & Me.Éticmbbox12.Caption & "," & Me.Éticmbbox13.Caption & "," & Me.Éticmbbox14.Caption & "," & Me.Éticmbbox15.Caption & "," & Me.Éticmbbox16.Caption & " FROM ParametresGlobals WHERE ParametresGlobals!* like " & Me.TxtRech.Value & " " Voici se que ca donne vu par le logiciel : SELECT ID, Format,Quantité,Description,Manufacturier,NumManufacture,Fournisseur,Référence,E mplacement FROM ParametresGlobals WHERE ParametresGlobals!* like Moncritère ORDER BY ParametresGlobals.ID; Si je met la dernière ligne pour la requête et bien j'ai plus rien d'afficher dans ma liste de résultat. J'aimerais juste faire un filtre sur tout les colonnes de la table de paramètre globals avec la valeur d'une zone de texte. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bad Boy Posté(e) le 10 juin 2009 Partager Posté(e) le 10 juin 2009 Normal car la requête te retourne une erreur : Pour ta requête il faut que tu spécifies un critère, car faire une recherche sur tout les critères est impossible avec la fonction * même si cela pouvais fonctionner ton résultat a de grande chance d'être Null, car il faudrait qu'il y ait un enregistrement dans toute ta table qui soit égale à ID = Moncritère & Format = Moncritère & Quantité= Moncritère etc Si tu veux vraiment faire cette requette il faut que tu fasses cela : SELECT ID, Format,Quantité,Description,Manufacturier,NumManufacture,Fournisseur,Référence,E mplacement FROM ParametresGlobals WHERE ((ParametresGlobals!ID like Moncritère) AND (ParametresGlobals!Format like Moncritère) AND (ParametresGlobals!Quantité like Moncritère) AND etc... ORDER BY ParametresGlobals.ID; Pour t'aider à faire tes requêtes tu peux utiliser directement Access : en "mode graphique" pour faire ta requête ensuite tu cliques sur le bouton "exécuter" pour voir le résultat, s'il est bon tu cliques sur le bouton "mode SQL" ainsi tu récupères le code SQL que tu colles dans VB. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Stude 12 Posté(e) le 11 juin 2009 Auteur Partager Posté(e) le 11 juin 2009 J'ai réussit à faire en mettant : WHERE ((ParametresGlobals!ID like Moncritère) OR (ParametresGlobals!Format like Moncritère) OR (ParametresGlobals!Quantité like Moncritère) OR etc... ORDER BY ParametresGlobals.ID; Mais, j'aimerais faire une chose un peu plus automatisé. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bad Boy Posté(e) le 11 juin 2009 Partager Posté(e) le 11 juin 2009 Plus automatisé ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 11 juin 2009 Partager Posté(e) le 11 juin 2009 J'ai réussit à faire en mettant : WHERE ((ParametresGlobals!ID like Moncritère) OR (ParametresGlobals!Format like Moncritère) OR (ParametresGlobals!Quantité like Moncritère) OR etc... ORDER BY ParametresGlobals.ID;Mais, j'aimerais faire une chose un peu plus automatisé. Passe par le catalogue de ta base pour récupérer les colonnes de ta table et généré ta requête dynamiquement. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Stude 12 Posté(e) le 11 juin 2009 Auteur Partager Posté(e) le 11 juin 2009 Ok ceci se fait comment ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 12 juin 2009 Partager Posté(e) le 12 juin 2009 Ok ceci se fait comment ? Public Function GetColumns(tablename As String) As String() Dim rs Set rs = CurrentProject.Connection.OpenSchema(adSchemaColumns, Array(Empty, Empty, tablename)) Dim ret() As String ReDim ret(0) While Not rs.EOF ReDim Preserve ret(UBound(ret) + 1) ret(UBound(ret)) = rs!COLUMN_NAME 'Debug.Print rs!COLUMN_NAME rs.MoveNext Wend GetColumns = ret End Function SQL = "SELECT * FROM Toto WHERE " listeColonnes = GetColumns("Toto") If UBound(listeColonnes) = 0 Then MsgBox("Table sans colonnes !):End SQL = SQL & listeColonnes(1) & " = 'MonCritere' " For i = 2 To Ubound(listecolonnes) SQL = SQL & " OR " & listecolonnes(i) & " = 'MonCritere' " next Un truc comme ça Lien vers le commentaire Partager sur d’autres sites More sharing options...
Stude 12 Posté(e) le 22 juin 2009 Auteur Partager Posté(e) le 22 juin 2009 Merci du coup de main, mon stage est finit, j'ai pas eu le temps de tester ta solution de toute façon il manque plein de truc, bon déjà pas mal d'avoir finit le formulaire de recherche sans jamais avoir fait de VB avant. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shtong Posté(e) le 22 juin 2009 Partager Posté(e) le 22 juin 2009 La prochaine fois tu pensera à fuir Access Lien vers le commentaire Partager sur d’autres sites More sharing options...
Stude 12 Posté(e) le 23 juin 2009 Auteur Partager Posté(e) le 23 juin 2009 On ne l'as collé sous le nez c'est pas ma faute... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.