VBA access requete SQL et fonction()

VBA access requete SQL et fonction() - VB/VBA/VBS - Programmation

Marsh Posté le 06-03-2007 à 15:39:01    

bonjour
 
comment puis-je faire executer une fonction() dans une requete SQL "mise a jour" en VBA dans access 2002?
 
merci d'avance
 
subkiller

Reply

Marsh Posté le 06-03-2007 à 15:39:01   

Reply

Marsh Posté le 06-03-2007 à 15:41:25    

peux tu nous donner le code de départ stp ? Perso je comprends pas encore la question  :sweat:  
 

Reply

Marsh Posté le 06-03-2007 à 16:06:16    

alors voilà
 
accrocher vous a vos meninges je vais essayer d'etre clair (j'ai pas l'habitude)!
 
j'ai une table avec plein de champ donc un champ "date de creation"
 
j'ai une fonction que permet de calculer le nombre de jour ouvré entre deux dates.
 
le but etant:  
 
dans la table, dans un champ nommé "jours ouvrés" inscrire le nombre de jous ouvré separant la date de creation de la date du jour en cours :??:

Reply

Marsh Posté le 06-03-2007 à 17:42:28    

ah oki
ben un petit UPDATE a balancer dans ta requete SQL devrait suffire non ?

Reply

Marsh Posté le 07-03-2007 à 10:42:10    

bin le probleme c'est que quand je met la fonction dans la requete j'ai un message d'erreur "objet requis"
quand je remplace la fonction par une valeur fixe ça fonctionne
et quand j'execute la fonction hors de la requete pas de probleme
 
os cour

Reply

Marsh Posté le 07-03-2007 à 12:21:10    

je repete donc ma question : peus tu nous passer un petit bout de code stp ? :sarcastic:

Reply

Marsh Posté le 07-03-2007 à 13:27:30    

voila ma requete
 

Code :
  1. CurrentDb.Execute "update Table_Suivi_Incident set [ouvré1]=" & " '" & NbOpenDay([mailj0], etad) & "'" & "where [clos]=0"


 
"Table_Suivi_Incident" etant ma table,
"[ouvré1]","[mailj0]","[clos]" des champs de cette table
et
 
"NbOpenDay" une fonction calculant le nombre de jour ouvré entre [mailj0] et etad (la date d'aujourd'hui)

Reply

Marsh Posté le 07-03-2007 à 16:05:06    

help je suis vraiment dedans

Reply

Marsh Posté le 07-03-2007 à 16:06:09    

help je suis vraiment dedans

Reply

Marsh Posté le 07-03-2007 à 16:23:43    

si tu as comme retour un integer, pas la peine de mettre des " " il me semble...

Reply

Marsh Posté le 07-03-2007 à 16:23:43   

Reply

Marsh Posté le 07-03-2007 à 17:31:06    

Pas de bol subkiller, un problème de PC m'a empêché de te répondre bien plus tôt.
 
La syntaxe « CurrentDb.Execute » est du VBA
La syntaxe « update Table_Suivi_Incident set » est du sql Access
 
Le sql Access accepte de lancer une fonction Access (si ma mémoire ne me joue pas de tour)
Mais le VBA n'a pas accès aux infos sql directement
 
Pour être plus clair, quand tu écris :

"update Table_Suivi_Incident set [ouvré1]=" & " '" & NbOpenDay([mailj0], etad) & "'"

en fait, tu sors la syntaxe [mailj0] de son contexte sql Access et VBA ne comprend pas de quoi tu parles.
C'est surtout un problème de guillemets mal placés je pense et de valeur retournée par NbOpenDay
Voici ma proposition de code:

"update Table_Suivi_Incident set [ouvré1]= CStr(NbOpenDay([mailj0], etad))"


 
Avec la fatigue je sais pas si je suis clair mais j'espère que tu y trouveras de l'inspiration

Reply

Marsh Posté le 08-03-2007 à 11:26:48    

hach maintenant il me demande un argument (erreur 3061)
 
plus ça va moins je comprend

Reply

Marsh Posté le 08-03-2007 à 16:01:13    

bon bah tout compte fait j'ai contourné le probleme en passant par un recordset
 

Code :
  1. Set db5 = CurrentDb
  2. Set rs5 = db5.OpenRecordset("SELECT * FROM Table_Suivi_Incident where [clos]=0" )
  3. 'Set rs5 = db5.OpenRecordset("Table_Suivi_Incident", dbOpenDynaset)
  4. Do Until rs5.EOF
  5. 'vdate1 = rs1.Fields("mailj0" )
  6. 'vjouvré = NbOpenDay(vdate1, vdate2)
  7. vjouvré = NbOpenDay(rs5.Fields("mailj0" ), Now())
  8. rs5.Edit
  9. rs5.Fields("ouvré1" ) = vjouvré
  10. rs5.Update
  11. rs5.MoveNext
  12. Loop


 
en tout cas merci jpcheck

Reply

Marsh Posté le 08-03-2007 à 16:10:21    

rs!mailj0 doit suffire, pas la peine du Fields.
 
De rien :)

Reply

Marsh Posté le 27-03-2007 à 13:49:50    

bonjour,
 
j'ai un probléme sur access, j'ai une bdd en réseau, on m'a été demandé d'effectuer un filtre par opération. sachant que ya pas de champs " operation, juste que le code correspendant à chaque opération est mentionné devant la designation dans le champ "désignation". ce qui veut dire que j'ai 2 infos dans un seul champ.
 la bdd contient plus de 10000 enregistrements. et on se dispose de 8 opérations ( 8 codes).
 
comment peut-on reussir à faire un tri dans le tableau croisé dynamique par code d'opération?
 
merci de m'apporter votre aide j'en ai vivement besoin.
 
merci d'avance.

Reply

Marsh Posté le 27-03-2007 à 14:20:34    

peux tu créer un nouveau topic stp ? :o

Reply

Sujets relatifs:

Leave a Replay

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