Ma requête insert into fonctionne de façon aléatoire
Le
BV

Bonjour à tous
J'ai une BDD sous 2003. J'ai crée un formulaire qui me permet d'ajouter
des données à partir de listes déroulantes liées et d'autres champs=
indépendants. Je fais ensuite une requête d'ajout qui malheureusement =
fonctionne aléatoirement.
INSERT INTO T_HRSADMIN ( REF_ACI, REF_LIBELLE, [NUM_SEM(ADM)], [HRS_ETI(ADM=
)], [HRS_SAL(ADM)], [HRS_STAG(ADM)] )
VALUES (forms!F_SAISIETRAVAUX.form.LST_ACI, forms!F_SAISIETRAVAUX.form.LST_=
LIBELLE, forms!F_SAISIETRAVAUX.form.SEM, forms!F_SAISIETRAVAUX.form.ETIADMI=
N, forms!F_SAISIETRAVAUX.form.SALADMIN, forms!F_SAISIETRAVAUX.form.STAGADMI=
N);
Merci d'avance pour votre aide
J'ai une BDD sous 2003. J'ai crée un formulaire qui me permet d'ajouter
des données à partir de listes déroulantes liées et d'autres champs=
indépendants. Je fais ensuite une requête d'ajout qui malheureusement =
fonctionne aléatoirement.
INSERT INTO T_HRSADMIN ( REF_ACI, REF_LIBELLE, [NUM_SEM(ADM)], [HRS_ETI(ADM=
)], [HRS_SAL(ADM)], [HRS_STAG(ADM)] )
VALUES (forms!F_SAISIETRAVAUX.form.LST_ACI, forms!F_SAISIETRAVAUX.form.LST_=
LIBELLE, forms!F_SAISIETRAVAUX.form.SEM, forms!F_SAISIETRAVAUX.form.ETIADMI=
N, forms!F_SAISIETRAVAUX.form.SALADMIN, forms!F_SAISIETRAVAUX.form.STAGADMI=
N);
Merci d'avance pour votre aide
Bonjour,
Qu'en est-il des contraintes d'intégrité ?
Doublons, champs nuls alors que la définition de la table le leur
interdit, pareil pour les chaînes vides ...
Comment est faite la gestion d'erreur ?
J'ai regardé la structure de la table, j'ai modifié les indexations
et les doublons, mais rien...
J'ai changé et j'ai forcé en sql :
chaineSql = "INSERT INTO T_HRSADMIN ( REF_ACI, REF_LIBELLE, [NUM_SEM(ADM) ], [HRS_ETI(ADM)], [HRS_SAL(ADM)], [HRS_STAG(ADM)] ) VALUES ("
chaineSql = chaineSql & c & " , '" & l & "' , '" & s & "' , '" & SAL & "' , '" & ETI & "', '" & STAG & "' )"
DoCmd.RunSQL (chaineSql)
et ça fonctionne impec !
En effet. Est-ce qu'il n'y aurait pas un On Error Resume Next, quelque
part ? Ou un DoCmd.SetWarnings False ?
Autrement je ne vois pas.
Ah oui, une façon d'avoir une réponse plus claire : afficher chaineSq l
dans la fenêtre d'exécution, et la recopier dans l'éditeur SQL,
exécuter. Si il y a une erreur, le message qui s'affiche là est souve nt
plus clair qu'au cours d'une exécution depuis VBA.