Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1091 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA access requete SQL et fonction()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA access requete SQL et fonction()

n°1524475
subkiller
Posté le 06-03-2007 à 15:39:01  profilanswer
 

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

mood
Publicité
Posté le 06-03-2007 à 15:39:01  profilanswer
 

n°1524478
jpcheck
Pioupiou
Posté le 06-03-2007 à 15:41:25  profilanswer
 

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

n°1524510
subkiller
Posté le 06-03-2007 à 16:06:16  profilanswer
 

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 :??:

n°1524655
jpcheck
Pioupiou
Posté le 06-03-2007 à 17:42:28  profilanswer
 

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

n°1525032
subkiller
Posté le 07-03-2007 à 10:42:10  profilanswer
 

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

n°1525127
jpcheck
Pioupiou
Posté le 07-03-2007 à 12:21:10  profilanswer
 

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

n°1525164
subkiller
Posté le 07-03-2007 à 13:27:30  profilanswer
 

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)

n°1525372
subkiller
Posté le 07-03-2007 à 16:05:06  profilanswer
 

help je suis vraiment dedans

n°1525374
subkiller
Posté le 07-03-2007 à 16:06:09  profilanswer
 

help je suis vraiment dedans

n°1525394
jpcheck
Pioupiou
Posté le 07-03-2007 à 16:23:43  profilanswer
 

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

mood
Publicité
Posté le 07-03-2007 à 16:23:43  profilanswer
 

n°1525437
tegu
Posté le 07-03-2007 à 17:31:06  profilanswer
 

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

n°1525743
subkiller
Posté le 08-03-2007 à 11:26:48  profilanswer
 

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

n°1525900
subkiller
Posté le 08-03-2007 à 16:01:13  profilanswer
 

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

n°1525912
jpcheck
Pioupiou
Posté le 08-03-2007 à 16:10:21  profilanswer
 

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

n°1534211
bogoss1207
Posté le 27-03-2007 à 13:49:50  profilanswer
 

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.

n°1534236
jpcheck
Pioupiou
Posté le 27-03-2007 à 14:20:34  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA access requete SQL et fonction()

 

Sujets relatifs
vba access 2002 "wait"fonction javascript qui regroupe 2 pages html
VBA access fermer word [résolu]Problème de format sur le graphique Access sous Windows XP
MySQL et fonction PASSWOR('...')requête et modification d'un champ
[sql] probleme requete sql.Trigger SQL server 2005
Executer plusieurs requetes Access (a la suite ) avec un seul bouton 
Plus de sujets relatifs à : VBA access requete SQL et fonction()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR