Insérer données formulaire dans BDD ACCESS

Signaler
Messages postés
17
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
1 avril 2010
-
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013
-
Bonjour à tous.

j'ai crée un formulaire en cfm. Les données doivent s'enregistrer dans une base de données ACCESS. Mon formulaire fait appel à une page appelée "traitement_form.cfm" composée uniquement de requête sql.

Mon formulaire fait référence à deux tables : DOCUMENT et VERSION.
Jai crée une requête sql qui insert dans la table document les données saisies dans mon formulaire.

Mon problème : Insérer les données relatives à la table VERSION dans la base de données, sachant que mes tables DOCUMENT et VERSION sont liées. Num_doc clé étrangère dans la table VERSION.

donc j'ai ma première requête qui remplie la table version et récupère un Num_doc et je voudrais que ma seconde requête récupère ce Num_doc et lui associe les enregistrements du même formulaire concernant la table VERSION dans la BDD.

Je dois faire une requête avec une jointure sur DOCUMENT.Num_doc=VERSION.Num_doc je pense, mais je bloque un peu.
A l'aide !!
merci

3 réponses

Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Bonjour pancratee,

plusieurs options s'offrent à toi :
1. Générer toi même la clé (Num_doc) de ta table document.
2. Faire une requète après insertion du document pour récupérer son identifiant au niveau du code et réutilisé pour insert dans version.
3. Faire une requète insert dans version en passant par une jointure vers document, ce qui équivaut au point 2 mais tu ne passes pas par le code, tout se fait au niveau SQL.

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Messages postés
17
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
1 avril 2010

Salut Nickadele, tout d'abord je voulais te remercier de ta réponse.

Mais ce n'est pas vraiment la solution à mon problème. En effet j'ai bien opté pour ta proposition n°3 dans ma page traitement_form, je n'ai que des requête sql. Mon problème réside dans l'ecriture de cette requête utilisant la jointure. Je dois avoir une erreur de syntaxe car ça ne marche pas.

ma requête est à peu prés cela :

SELECT ......
FROM VERSION, DOCUMENT
WHERE VERSION.Num_doc=DOCUMENT.Num_doc
INSERT INTO (champ1_version,champ2_version,champ3_version) VALUES (form.champ1,form.champ2,form.champ3);

au niveau de mon SELECT je ne sais pas quoi selectionner (Num_doc n'est pas possible étant donné qu'il fait référence aux tables VERSION et DOCUMENT), je pense que je dois selectionner mes champs de la table VERSION mais je suis pas sûr.

Je pense avoir également une erreur au niveau de la syntaxe de la jointure.

Merci de m'aider !!
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Re,

tu devrais avoir un truc du genre :

INSERT INTO VERSION (Num_doc, champ1, champ2)
SELECT DOCUMENT.Num_doc, '#form.champ1#' AS Expr1, '#form.champ2#' AS Expr2
FROM DOCUMENT
WHERE (DOCUMENT.Nom = 'mon document')
Traduction en considérant que l'identifiant de "mon document" 1 et que form.champ1 "version A" et que form.champ2 = "ceci est ma version A" 
La requète SELECT ci-dessous donne :
"1,  version A, ceci est ma version A"
SELECT DOCUMENT.Num_doc, '#form.champ1#' AS Expr1, '#form.champ2#' AS Expr2
FROM DOCUMENT
WHERE (DOCUMENT.Nom = 'mon document')

Enfin :
INSERT INTO VERSION (Num_doc, champ1, champ2)
Num_doc recevra "1"
champ1 recevra "version A"
champ2 recevra "ceci est ma version A"

Dernière chose, je te conseil d'utiliser <cfqueryparam> pour définir le format de tes valeurs.

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle