[VBA Access] Problème de requête

Problème de requête [VBA Access] - VB/VBA/VBS - Programmation

Marsh Posté le 26-06-2009 à 12:11:53    

Bonjour,
 
Je tente de corriger une erreur dans une appli qui gère une BDD de production sous Access, réalisée par 2 stagiaires l'année passée.
L'objectif est d'afficher le nombre de défauts d'une pièce. Le code est absolument monstrueux et je préfère utiliser une requête plutôt que de chercher dans l'algo à quel endroit l'incrémentation sur le nombre de défauts est mal effectuée. Je pense pouvoir me permettre d'utiliser cette méthode car les défauts  par pièces sont enregistrés spécifiquement. Il se peut que j'aie complètement faux!
 
J'ai lu des trucs sur ODA/DAO mais je n'ai rien compris. La version d'access est la 2003.
 
J'ai donc essayé d'intégrer une requête dans le code de l'application, lorsque l'utilisateur choisit le numéro de son moule dans une liste déroulante:
 
En gros, l'algo que je eux suivre est "Quand l'utilisateur a entré le n° du moule, je "rafraichis" la page et affiche le résultat de la requete qui retourne le nombre de défauts (1 par ligne dans la table)".
Je sais manipuler des reqûetes dans plusieurs langages, mais je dois avouer qu'en VBA je suis complètement perdu!
 
 

Citation :

Private Sub moule_AfterUpdate()
 
'Test pour calcul nb défauts par requete
 
Dim strSQL As String
strSQL = "SELECT COUNT(*) T_DEMERITE.moule, T_DEMERITE.solde FROM T_DEMERITE WHERE (((T_DEMERITE.solde) = 0) AND T_DEMERITE.moule = Form_F_AUDIT.moule);"
'NB_Demerite_test = DCount("*", "strSQL" )


 
Bien évidemment ca ne marche pas, et je suppute que j'ai vraiment fait n'importe quoi. Je cherche sur ce site et developpez depuis 2 heures et je ne trouve rien qui puisse m'aiguiller, aussi j'attends un peu d'aide avec une grande impatience!
 
 
 
Merci d'avance
 

Reply

Marsh Posté le 26-06-2009 à 12:11:53   

Reply

Marsh Posté le 26-06-2009 à 12:38:56    

Tu pensais quand même pas qu'en créant simplement un String il allait t'effectuer la requête j'espère !
 

Code :
  1. Dim rst As New ADODB.Recordset
  2. Dim sqlCommand As String
  3. sqlCommand = "SELECT blabla..."
  4. rst.Open sqlCommand, CurrentProject.Connection, adOpenStatic


ou bien

Code :
  1. Dim rs As ADODB.Recordset
  2. Dim cmd As ADODB.Command
  3. Set rs = New ADODB.Recordset
  4. Set cmd = New ADODB.Command
  5. Set cmd.ActiveConnection = CurrentProject.Connection
  6. cmd.CommandText = "SELECT ..."
  7. Set rs = cmd.Execute


 
Et après tu récupères le résultat avec un getString sur ton RecordSet.

Reply

Marsh Posté le 26-06-2009 à 14:18:15    

Salut!
 
Merci de ta réponse. J'ai essayé d'inclure les deux codes, mais il me donne une erreur, qui d'après mes recherches indique une référence manquante.
 
J'ai donc rajouté la référence ActiveX 2.5 (il me semble que pour access 2003 c'est la bonne)
 
En revanche il me donne maintenant une erreur sur chacune des dernières lignes en me disant que "Aucune valeur n'est donnée pour un ou plusieurs des paramètres requis". J'ai cherché les paramètres en question sans succès.
 
Que de boulot pour une simple requête!
 

Reply

Marsh Posté le 26-06-2009 à 14:20:07    

Bonjour,
 
2 conseils
* ne pas utiliser des stagiaires pour cela mais des gens sérieux, qui vont faire cela pour une somme modique (il y en a, j'en connais).
* pour un truc aussi simple tu peux utiliser la fonction "DCOUNT()", regarde l'aide cela fait cela tout seul
 

Reply

Marsh Posté le 29-06-2009 à 10:13:44    

Hello,
 
Dcount a très bien marché, merci beaucoup!
 
Sinon pour les stagiaires, ils ont quand même réussi à faire quelque chose de correct dans le sens où même s'il existe quelques petits bugs l'appli est fonctionnelle. Et puis il faut bien former les jeunes! :)
 
Encore merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed