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

4 réponses
Avatar
BV
Bonjour =E0 tous
J'ai une BDD sous 2003. J'ai cr=E9e un formulaire qui me permet d'ajouter
des donn=E9es =E0 partir de listes d=E9roulantes li=E9es et d'autres champs=
ind=E9pendants. Je fais ensuite une requ=EAte d'ajout qui malheureusement =
fonctionne al=E9atoirement.

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

4 réponses

Avatar
Gloops
BV a écrit, le 29/08/2012 10:01 :
Bonjour à tous
J'ai une BDD sous 2003. J'ai crée un formulaire qui me permet d'ajout er
des données à partir de listes déroulantes liées et d'autres ch amps indépendants. Je fais ensuite une requête d'ajout qui malheureus ement 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.E TIADMIN, forms!F_SAISIETRAVAUX.form.SALADMIN, forms!F_SAISIETRAVAUX.form. STAGADMIN);

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 ?
Avatar
BV
Bonjour, merci pour vote réponse.
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 !
Avatar
Gloops
BV a écrit, le 30/08/2012 09:28 :
Bonjour, merci pour vote réponse.
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.
Avatar
Gloops
BV a écrit, le 30/08/2012 09:28 :
Bonjour, merci pour vote réponse.
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 !




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.