2 requêtes SQL en VBA à la suite, pb avec les contrôles

Signaler
Messages postés
2
Date d'inscription
vendredi 30 juin 2006
Statut
Membre
Dernière intervention
16 juin 2008
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour,

J'ai un formulaire qui contient pleins de contrôles qui reçoivent des calculs faits en vba (pour utiliser la fonction SI)

A un moment je veut mettre le contenu de ces contrôles dans une table.

En fait j'ai deux tables à remplir, donc 2 requêtes "ajout" différentes exécutées à partir du vba, voici le code de l'une d'entre elles :

Dim sql As String
sql = "insert into CalculTemps(Nmat,dateS,H_normales,H_recup_acquises)values(Nmat,Date2,Hnorm,TotHRecup);"
DoCmd.RunSQL sql
Refresh

Ca marche bien quand j'execute une requête, mais quand je met les deux requêtes à la suite j'ai un soucis :
Juste après l'execution de la requête tous les contrôles du formulaires deviennent blanc pendant environ 0,3 secondes. Et comme la 2ème requête s'execute en moins de temps ben ça m'ajoute des champs blancs.

Si vous pouviez m'aider ce serais bien je me vois mal dire aux utilisateurs de cliquer sur 36 boutons au lieu d'un qui exécuterais tout en même temps.

Merci encore

<!-- / message -->

1 réponse

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Tu veux dire deux RunSQL à la suite, je suupose ?
Regarde si ton objet DoCmd a la propriété StillExecuting ou State + l'aide
Peut-être faut-il attendre que la première soit terminée avant de lancer la seconde, avec un truc du style :
Do While DoCmd.StillExecuting
   DoEvents
Loop
ou
Do While DoCmd.State = ? (je ne connais pas la valeur)

De plus, ta syntaxe SQL est bizarre.
Exemple : Tel que tu l'as écrit (en oubliant les espaces entre les mots clé d'ailleurs --> risque d'erreur), tu vas écrire le texte "TotHRecup" dans le champ "H_recup_acquises"
Il faudrait plutôt qqchose du style :
"... values (" & Nmat & ", #" & Date2 & "#, " & Hnorm & ", " & TotHRecup & ");"
Il faut bien dissocier le monde VB et ses variables avec le monde SQL.
Je ne connaias pas assez le VBA et pas sûr de la syntaxe, je ne sais pas ce que représente tes Nmat, Date2 ...

En SQL il y a des règles de syntaxe à respecter :
- Si le champ est de type texte : il faut encadrer les données avec des '
- Si le champ est de type date : il faut encadrer les données avec des #
- Si le champ est de type numérique : pas d'encadrement

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro