Insérer données formulaire dans BDD ACCESS

pancratee Messages postés 17 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 1 avril 2010 - 27 avril 2008 à 22:36
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013 - 30 avril 2008 à 10:06
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

nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
28 avril 2008 à 11:16
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
0
pancratee Messages postés 17 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 1 avril 2010
29 avril 2008 à 23:31
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 !!
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
30 avril 2008 à 10:06
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
0