requete d'ajout qui ne fait rien

requete d'ajout qui ne fait rien - SQL/NoSQL - Programmation

Marsh Posté le 20-10-2005 à 11:22:05    

Bonjours voila mon problème, j'ai un fichier Excel (dont chaque colonne représente une colonne de la table correspondante dans ma base Access) dont je souhaite extraire des donnée.
J'ai lié le fichier Excel dans Access, et j'ai créer la requête d'ajout suivante (c'est long car il y a beaucoup de champs) :
 
INSERT INTO Avis_travaux ( service_dem, num_demande_emmeteur, nom_dem, tel_dem, région, num_rff, site, domaine1, domaine2, type_equip1, type_equip2, raison, num_dysfonctionnement, date_heure_prév, date_heure_effective, durée_prev, durée_effective, Type_op, impact_serv, intervenant1, tel_inter1, intervenant2, tel_inter2, intervenant3, te_inter3, intervenant4, tel_inter4, responsable_cn, tel, demande, date_proposé, num_avis_trav_CN, description, motifs, date_recp, commentaires, commentaire_type_op, commentaire_impact, heure_prev, heure_effective, prononcé_par )
 
SELECT Feuil1.service_dem, Feuil1.num_demande_emmeteur, Feuil1.nom_dem, Feuil1.tel_dem, Feuil1.région, Feuil1.num_rff, Feuil1.site, Feuil1.domaine1, Feuil1.domaine2, Feuil1.type_equip1, Feuil1.type_equip2, Feuil1.raison, Feuil1.num_dysfonctionnement, Feuil1.date_heure_prév, Feuil1.date_heure_effective, Feuil1.durée_prev, Feuil1.durée_effective, Feuil1.Type_op, Feuil1.impact_serv, Feuil1.intervenant1, Feuil1.tel_inter1, Feuil1.intervenant2, Feuil1.tel_inter2, Feuil1.intervenant3, Feuil1.te_inter3, Feuil1.intervenant4, Feuil1.tel_inter4, Feuil1.responsable_cn, Feuil1.tel, Feuil1.demande, Feuil1.date_proposé, Feuil1.num_avis_trav_CN, Feuil1.description, Feuil1.motifs, Feuil1.date_recp, Feuil1.commentaires, Feuil1.commentaire_type_op, Feuil1.commentaire_impact, Feuil1.heure_prev, Feuil1.heure_effective, Feuil1.prononcé_par
 
FROM Feuil1, Avis_travaux;
 
Le problème c'est que mon fichier excel est remplis, mais quand je lance la requête il ne se passe strictement rien, pas de message d'erreur, rien et aucune données n'est ajouté dans ma table Avis_travaux  :(  
Je ne vois pas très bien pourquoi.


Message édité par sharky01 le 20-10-2005 à 11:22:55
Reply

Marsh Posté le 20-10-2005 à 11:22:05   

Reply

Marsh Posté le 20-10-2005 à 12:37:05    

INSERT INTO Table1 (Nom des Colonnes) VALUES (variables)
 
donc ici :
 
INSERT INTO Avis_Travaux ( service_dem , ...) VALUES (SELECT Feuils1.service_dem, .... FROM Feuil1)
déjà ça ira un peu mieux...

Reply

Marsh Posté le 20-10-2005 à 14:37:20    

Je sais pas pour Access, mais pour la plupart des SGBD, c'est bien INSERT INTO ... SELECT ... FROM ... donc sa syntaxe est ok.

Reply

Marsh Posté le 20-10-2005 à 16:19:10    

moi sous Access j'utilise la syntax énoncé par titione et sa marche nickel donc il peut test...

Reply

Marsh Posté le 20-10-2005 à 17:19:28    

la synthaxe spécifié dans la norme SQL 2 - SQL 3 c'est
INSERT INTO Table1 (Nom des Colonnes) VALUES (variables)  
 
voila ça c'est sure que ça marche. Après si tel ou tel sgbd à fait à sa sauce ça peu poser problème...
 
Pour en revenir au premier message, me semble que la requete n'est pas juste...
Dans le from, je vois deja pas pourquoi tu as besoin de la table "Avis_travaux"
 
Puis faire un select dans une feuille sql, on peut faire ça? moi j'ai jms fais comme ça...
 
Moi j'utilisais VB et je parcourais les lignes une à une de la feuille excel et je tapais ligne par ligne dans la bd Access...  
avec une requete INSERT INTO tab (col1, col2, ...) VALUES (val1, val2, ...)

Reply

Marsh Posté le 20-10-2005 à 18:02:45    

moi23372 a écrit :

la synthaxe spécifié dans la norme SQL 2 - SQL 3 c'est
INSERT INTO Table1 (Nom des Colonnes) VALUES (variables)  
 
voila ça c'est sure que ça marche. Après si tel ou tel sgbd à fait à sa sauce ça peu poser problème...
 
Pour en revenir au premier message, me semble que la requete n'est pas juste...
Dans le from, je vois deja pas pourquoi tu as besoin de la table "Avis_travaux"
 
Puis faire un select dans une feuille sql, on peut faire ça? moi j'ai jms fais comme ça...
 
Moi j'utilisais VB et je parcourais les lignes une à une de la feuille excel et je tapais ligne par ligne dans la bd Access...  
avec une requete INSERT INTO tab (col1, col2, ...) VALUES (val1, val2, ...)


nan, la norme spécifie deux syntaxes, le INSERT de VALEURS et le INSERT du résultat d'une requête. les deux syntaxes se ressemblent, mais ne sont pas identiques

Reply

Marsh Posté le 20-10-2005 à 18:04:27    

tout comme le create table
 
on peux faire un create table en énumérant les champs.
a côté, on peut faire un create table as select, qui n'a absolument pas la même syntaxe... les deux sont spécifiées dans la norme

Reply

Marsh Posté le 20-10-2005 à 18:12:51    

je reviens sur ce que j'ai écrit et je confirme les propos d'Arjuna...
si tu fais ligne par ligne c : INSERT INTO _table_ ( champs... ) VALUES (valeurs...)
 
si tu fais un insert d'une table : INSERT INTO _table_ ( champs ...) (SELECT * from _AnotherTABLE_)

Reply

Marsh Posté le 21-10-2005 à 15:56:53    

titione a écrit :


si tu fais un insert d'une table : INSERT INTO _table_ ( champs ...) (SELECT * from _AnotherTABLE_)


la en l'occurence tu n'es oblige de preciser le nom des champs a inserer que si tu n inseres pas dans tous les champs

Reply

Marsh Posté le 21-10-2005 à 16:50:30    

betsamee > ne JAMAIS réfléchir comme ça : un coup d'alter ou je ne sais quoi, un champ bouge, et paf ! ta requête ne plante pas, mais ne met pas à jour les bonnes colonnes.
 
impératif de toujours spécifier les noms des champs lors d'un insert (tout comme le "select *" est à banir

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed