Aller au contenu

Access et VB


Messages recommandés

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

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

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

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

Normal car la requête te retourne une erreur :

6f737ff0d079528073825248d6abf628.jpg

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

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

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

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

  • 2 semaines après...

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...