Problème requête Access 2007

Fermé
Loul du 63 - Modifié par Loul du 63 le 26/10/2010 à 12:17
 Loul du 63 - 6 mai 2013 à 16:29
Bonjour à tous,

Je suis en train de réaliser une base de donnée access, j'ai réussi à créer mes tables et mes formulaires mais je souhaiterai écrire une requête et là ca coince...

J'ai deux tables et j'aimerai dans un premier temps extraire certaines lignes de ma première tablecommande (celle dont l'etat à pour valeur texte "en attente d'archivage"), pour l'archiver dans une seconde. Je compte créer une autre requête afin de supprimer les lignes archivées.

J'ai utilisé la commande ajout et j'ai modifié la requête SQL et j'ai un problème "le nombre de valeurs de la requête doit coïncider avec le nombre de champs de destination"

Mon code est le suivant:
INSERT INTO [tableArchives](nomchamp1A,nomchamp2A,nomchamp3A)
SELECT tableCommande.[nomchamp1,nomchamp2,nomchamp3]
FROM tableCommande
WHERE tableCommande.Etat_commande=="En attente d'archivage";

pour info ma table commande possède plus de champ que ma table archive mais je ne veut pas tous les copier...( je me moque de copier le champ Etat_commande par exemple)

Merci pour votre aide
Loul
ps: j'ai utilisé la requête ajout car j'ai essayé de faire requête sql directe avec le même code mais il me demande d'importer une base de données ODBC, je comprends pas pourquoi car j'utilise une unique base de données..

7 réponses

Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
26 oct. 2010 à 15:15
Salut,

Heu je vois pas trop de problème ayant un rapport avec ton message d'erreur, mais il me semble que
WHERE tableCommande.Etat_commande=="En attente d'archivage"; 
est incorrect, en SQL il ne faut qu'un signe "="
0
J'ai peut être trouvé j'ai plus d'erreur quand je tape:

INSERT INTO [tableArchives](nomchamp1A,nomchamp2A,nomchamp3A)
SELECT tableCommande.[nomchamp1],[nomchamp2],[nomchamp3]
FROM tableCommande
WHERE tableCommande.Etat_commande="En attente d'archivage";

ça fait des crochets dans tous les sens mais ya plus d'erreurs!!!
merci Gaunts
0
Bon maintenant quand j'associe ma requête à un bouton de formulaire, j'ai l'erreur suivante:
"Une requête INSERT INTO ne peut pas contenir un champ à plusieurs valeurs"
Pourtant chaque champs que je veut copier contient au plus 1 unique valeur
Je ne vois pas d'où viens la faute..
Merci d'avance
0
Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
Modifié par Gaunts le 27/10/2010 à 08:34
Salut, essaye ça:
INSERT INTO tableArchives ( nomchamp1A, nomchamp2A, nomchamp3A ) 
SELECT tableCommande.nomchamp1, tableCommande.nomchamp2, tableCommande.nomchamp3 
FROM tableCommande  
WHERE tableCommande.Etat_commande = "En attente d'archivage"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci pour ton aide,
j'ai fais ta modification, mais j'ai toujours la même erreur.
Voilà mon code actuel, tu trouvera peut être l'erreur

INSERT INTO Archives ( DésignationA, Numéro_de_CommandeA, Nom_aéronefA, DélaiA, Nom_intervenantA, DuréeA, Date_de_finA, LieuA, Date_de_réceptionA, DéfautA )
SELECT Commande.Désignation, Commande.Numéro_de_Commande, Commande.Nom_aéronef, Commande.Délai, Commande.Nom_intervenant, Commande.Durée, Commande.Date_de_fin, Commande.Lieu, Commande.Date_de_réception, Commande.Défaut
FROM Commande
WHERE ((Commande.Etat_commande)="En attente d'archivage");
0
Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
27 oct. 2010 à 10:13
L'erreur n'apparait que si tu lances la requete depuis un formulaire? Si tu la lances directement, aucun problème?
0
Non j'exécute d'abord ma requête hors d'un formulaire. Mais même seule elle ne marche pas :-(
0
Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
27 oct. 2010 à 11:01
Hmmmmmmmm question bete ta table de destination existe?
La requete en mode création (et pas sql) ressemble à quelque chose de correct?
0
Oui j'ai créé une table Archives.
Sinon pour la requête en mode création, je ne m'y connais pas trop.
C'est un tableau
La ligne champ renseigne les champs des tables
La ligne table est tout le temps égale à Commande
et la ligne "Ajouter à" renseigne les champs associés de la table archives
et la dernière colonne est champ=Etat_commande; Table=commande; critères="en attente d'archivage"
Voilà ça ne me parle pas trop mais bon ça semble pas faux.
Sinon les types de mes champs sont de type texte ou date ça pose pas de pb??
0
Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
27 oct. 2010 à 12:09
Non c'est normal, et si il y avait un probleme de ce coté la l'erreur serait différente..
Toujours en mode création, passe ta requete en mode "Création de table".
En l'executant, ça va supprimer et recréer ta table archives avec les bonnes valeurs, puis repasse en mode "Ajout"
0
essai ceci
'Pour que les noms des tables et colonnes soient bien encadrés entre crochets
cmdb.QuotePrefix = "["
cmdb.QuoteSuffix = "]"
0
même 3 ans après merci pour ton aide!
0