Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/12/2011, 12h57   #1
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Par défaut Insertion d'enregistrements

bonjour à tous

est-il possible d'insérer simultanément plusieurs enregistrements dans une table access par requête insertion ?

Après plusieurs essais, il semble que access n'accepte que les enregistrements un à un

Connaissez-vous une astuce/technique de script reconnue par access pr insérer plusieurs enregistrements à la fois par le biais d'une requête insertion ;

merci de me dire.

Voici mon script

Code :
1
2
3
INSERT INTO Produit1 values ('A001', 'Farine',0.8,65),
values ('B001', 'Sel',0.5,120),
values ('A003', 'Huile olive',5.2,9);
.

Le motif de refus est : ; absent à la fin de l'instruction SQL. (sous entendu, dès après le 1er enregistrement ; si je place des points virgules après chaque enregistrement, ça n'est pas accepté non plus.

merci de m'aider
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 13h17   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
bonjour,

en effet avec VALUES on ne peut insérer qu'une seule ligne à la fois avec Access.

Pour faire ce genre d'insertions, il est parfois plus rapide de passer par un recordset.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 14h26   #3
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Merci de m'avoir répondu.

Donc en insérant un script type recordset dans un module de la base, l'enrichissement de la table pourrait se faire ?

merci de me dire
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 20h57   #4
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 554
Points : 554
Bonjour,
Pour insérer plusieurs lignes, les insert into select fonctionne aussi sur Access.
Mais ce n'est pas adapter à ton exemple.
Mais la question est quelles sont les lignes à inserer selon quelles modalités.

PS: dans ta requête tu n'as pas précisé la liste des colonnes, cela n'est pas nécessaire, mais lorsque tu rajouteras une colonne à ta table, le script ne fonctionnera plus.
A+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 21h22   #5
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
bonsoir

Dans l'exemple que j'ai repris, il faudrait notamment insérer les 3 enregistrements ds les 4 champs correspondants.

Pouvez-vs svp donner un exemple avec INSERT INTO SELECT sur deux enregistrements par exemple.

Merci d'avance
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 22h42   #6
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 554
Points : 554
bonjour,
J'ai dit que le insert into select n'était pas adapté à ton cas.
Exemple de :
Code :
1
2
3
4
Insert into PRODUIT1
Select CodeProduit,LibelleProduit,Prix
from Produit2
Where LibelleProduit like '%sel%';
Est-ce que tu as essayé cela
Code :
1
2
3
4
5
INSERT INTO Produit1 VALUES ('A001', 'Farine',0.8,65),
VALUES ('B001', 'Sel',0.5,120);
NSERT INTO Produit1 VALUES ('A001', 'Farine',0.8,65);
INSERT INTO Produit1 
VALUES ('A003', 'Huile olive',5.2,9);
C'est à dire d'enchainer les 3 inserts en les séparant par des ;
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 11h04   #7
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
bonjour

voici ce que je tape en me conformant à vos instructions.


Code :
1
2
3
INSERT INTO Produit1 VALUES ('A001', 'Farine',0.8,65);
INSERT INTO Produit1 VALUES ('B001', 'Sel',0.5,120);
INSERT INTO Produit1 VALUES ('A003', 'Huile olive',5.2,9);
Le motif de rejet est "caractères trouvés à la fin de l'instruction SQL"

Il semble que access soit perturbé par la présence de plusieurs ;

Qu'en dites-vs ?

merci de me dire
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 17h07   #8
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
bonjour,

MySQL par exemple accepte ce genre de syntaxes il me semble:
Code sql :
1
2
INSERT INTO Produit1 VALUES ('A001', 'Farine',0.8,65),
VALUES ('B001', 'Sel',0.5,120);

mais Access, non

Citation:
Envoyé par f-leb Voir le message
...en effet avec VALUES on ne peut insérer qu'une seule ligne à la fois avec Access.
donc il faut 3 requêtes:

1ère requête:
Code sql :
INSERT INTO Produit1(champ1, champ2,champ3,champ4) VALUES ('A001', 'Farine',0.8,65);
2ème requête:
Code sql :
INSERT INTO Produit1(champ1, champ2, champ3,champ4) VALUES ('B001', 'Sel',0.5,120);
3ème requête:
Code sql :
INSERT INTO Produit1(champ1, champ2, champ3,champ4) VALUES ('A003', 'Huile olive',5.2,9);

on peut évidemment exécuter ces 3 requêtes à suivre automatiquement en VBA (voir Faq: Exécuter une requête action (ajout, suppression ou mise à jour))
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 17h46   #9
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
merci Fabien.

Je vais regarder si une installation de mySQL est possible pr moi
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 17h51   #10
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
Citation:
Envoyé par pppa1 Voir le message
Je vais regarder si une installation de mySQL est possible pr moi
Tu ne vas tout de même pas changer de SGBD uniquement à cause de ce petit problème de rien du tout, si ?
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 20h08   #11
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
je vais y réfléchir, mais access présente de nombreuses limites dès que l'on veut utiliser des traitements assez 'avancés'.

De toute façon, il n'y aurait pas migration de bases, seules les nouvelles seraient le cas échéant ouvertes et traitées avec un nouvel SGBD

merci encore
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 21h26   #12
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 554
Points : 554
Bonsoir,

Il faut trois requêtes dans la plupart des SGBD, à moins de bricoler quelque chose d'infâme.
Pourquoi le fait d'enchainer trois requêtes t'embêtes, comment sont-elles lancées, à l'aide de quel outils ou de quel code.

Il y a beaucoup de bonnes raisons pour se passer d'access, mais ne pas pouvoir faire trois insert dans une seule requête est une très mauvaise raison.

Par ailleurs la syntaxe MYSQL n'est pas standard et me semble abominable.

A+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h43.


 
 
 
 
Partenaires

Hébergement Web