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 25/05/2011, 14h37   #1
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Par défaut Souci SWITCH trop complexe

Bonjour,

J'ai un petit (gros ) souci avec une requête d'ajout et la fonction SWITCH.

Cette partie de la requête suivante fonctionne:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
Private Sub Commande0_Click()
 
Dim sql As String
sql = " INSERT INTO tblReceptionfichierXLCausedesretards ( Client, [v AR-ligne], [v ref# Client : ligne], [Code article],"
sql = sql & " Article, [v representant], [v planificateur], [Qté ordre], [V fin fab prevue], [Date livraison planifiee],"
sql = sql & " [v Date modifiée accusé depart], [v Date derniere modification des dates accuses], [OF], CAP, Ligne )"
sql = sql & " SELECT Sheet1.[Def#Client], [OV] & ' - ' & [ligne] AS [V AR-ligne],"
sql = sql & " [No commande client] & ' - ' & [Numero comm# client] AS [V réf client ligne],"
sql = sql & " Sheet1.[Code Article], Sheet1.Designation, Sheet1.[Adv client],"
sql = sql & " Sheet1.Planner, Sheet1.[Qté backlog], Sheet1.[Ddée EXW],"
sql = sql & " Sheet1.[reel ddée], Sheet1.[Acc# EXW],"
sql = sql & " Sheet1.[Modif# EXW],"
sql = sql & " Sheet1.[Production order],"
 
' change le contenu dans le champ CAP
sql = sql & "  Switch("
sql = sql & "[Family Newsletter]='Accessories for A Contactors','AU5',"
sql = sql & " [Family Newsletter]='Contactor Size 1 A9 to A16','A9',"
sql = sql & " [Family Newsletter]='Contactor Size 1 AL9 to AL16','AL9',"
sql = sql & " [Family Newsletter]='Accessories for Bar Contactors' and 'Bar Contactors < 800A' and 'Bar Contactors >= 800A','OFR',"
sql = sql & " [Family Newsletter]='Contactor Size 2 A26','A26',"
sql = sql & " [Family Newsletter]='Contactor Size 2 A30 to A40','A30-40',"
sql = sql & " [Family Newsletter]='Contactor Size 2 AL26','AL26',"
sql = sql & " [Family Newsletter]='Contactor Size 2 AL30 to AL40','AL30-AL40',"
sql = sql & " [Family Newsletter]='Contactor Size 3 A50 to A75','A50-A75',"
sql = sql & " [Family Newsletter]='New AF Contactors','AF',"
sql = sql & " [Family Newsletter]='New SNK Terminal Blocks','SNK',"
sql = sql & " [Family Newsletter]='Other contactors (UA-RA, AE, GAE, TAE…) Size 1' AND 'Other contactors (UA-RA, AE, GAE, TAE…) Size 2' AND 'Other contactors (UA-RA, AE, GAE, TAE…) Size 3','AE',"
sql = sql & " [Family Newsletter]='Sensors for Industrial Market','ANR',"
sql = sql & " [Family Newsletter]='Sensors for Railway Market','ANS' "
sql = sql & " ) AS CAP,"
 
' Change le contenu dans le champ Ligne
sql = sql & " Switch("
sql = sql & "[Ligne1]='L1-Terminal Blocks','L1',"
sql = sql & "[Ligne1]='L2-PCB Connection','L2',"
sql = sql & "[Ligne1]='L3-Control Signaling','L3',"
sql = sql & "[Ligne1]='L4 -PLC','L4',"
sql = sql & "[Ligne1]='L5-Contactors','L5',"
sql = sql & "[Ligne1]='L7-Current Sensors','L7'"
sql = sql & " ) AS NumLigne"
sql = sql & " FROM Sheet1;"
Debug.Print sql
DoCmd.RunSQL (sql)
End Sub
Je rajoute ce code suivant à la suite du 1er SWITCH, et là ma requête se plante. Soit c'est trop complexe, soit un pb de syntaxe!!!
Code :
1
2
3
4
5
6
7
8
9
10
11
 
'suite après le 1er switch à la ligne 31
sql = sql & " [Family Newsletter]='Sensors for Railway Market','ANS',"
sql = sql & " [Designation]='BAM 2' AND 'BAM 2 GRIS VO' AND 'BAM 2 IVOIRE V0' AND 'BAM2' AND 'BAM3',"
sql = sql & " AND 'D2.5/5.2L' AND 'D2.5/5.3L' AND 'D2.5/5.4L' AND 'D2.5/5.N.2L' AND 'D2.5/5.N.3L' AND 'D2.5/5.N.4L',"
sql = sql & " AND 'D4/6' AND 'DA2.5/5' AND 'M4 6 N' AND 'M4/6' AND 'M4/6 TERMINAL GREY' AND 'M4/6.1' AND 'M4/6.D2.1',"
sql = sql & " AND 'M4/6.N' AND 'M4/6.V0' AND 'M6/8' AND 'M6/8 TERMINAL BLOCK 24-8AWG' AND 'M6/8.1' AND 'M6/8.4 V0',"
sql = sql & " AND 'M6/8.N' AND 'M6/8.V0' AND 'MA2 5 5' AND 'MA2,5/5.N BLUE TERMINAL BLOCK 22-12AWG' AND 'MA2.5/5',"
sql = sql & " AND 'MA2.5/5.1' AND 'MA2.5/5.N' AND 'MA2.5/5.V0' AND 'TERMINAL 4mm2 32A GREY' AND 'Terminal block ZS4',"
sql = sql & " AND 'TERMINAL ENTERLEC 4MM Type:ZS4 1SNK50501' AND 'ZS4' AND 'ZS4-BK' AND 'ZS4-BL' AND 'ZS4-PE' AND 'ZS4-PR','MAB'"
sql = sql & " ) AS CAP,"
En SQL, ce n'est pas possible trop de carractère...

J'aimerai pouvoir comprendre, et y a t'il une autre solution.
J'ai pensé de passer par une table en définissant les SWITCHs, ou par un module.....
Mais, je ne vois pas comment faire.

Merci d'avance de votre aide
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 15h09   #2
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,
Je n'ai pas regardé la requête en détail, mais il faudrait en tout cas ajouter une virgule à la fin de la chaîne de caractères de la ligne 31 pour que ça fonctionne :
Code :
sql = sql & " [Family Newsletter]='Sensors for Railway Market','ANS', "
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 15h26   #3
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Bonjour tedo01,

Effectivement, si j'intègre le code qui me pose souci.
Autrement c'est la fin du 1er switch, donc il ne faut pas de ','.
C'est la 1er partie, et celle-ci fonctionne très bien.
C'est quand je rajoute le code pour continuer le 1er switch que cela se plante.

Merci
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 16h12   #4
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Rch05 et Tedo01,

Je me permets de m'immiscer...

Quand il y "trop" de switch(), c'est qu'il faut, sans doute, attaquer le problème par un autre bout : celui de la conception.

En fait, Rch05, tu donnes, toi-même, la solution :
Citation:
Envoyé par Rch05
J'ai pensé de passer par une table en définissant les SWITCHs .../...
==> Suggestion :
Table SWICH :
- Donnee_Source (clé primaire)
- Donnee_Traduite

Ensuite, une liaison habituelle fera l'affaire.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/05/2011, 17h33   #5
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Bonjour Richard_35,

Merci de ta réponse.

Donc après avoir créé la table "tblSwitch", je lie les deux tables à la requête et j'effectue l'ajout à la table de destination.

Est-ce ça?
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 17h51   #6
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Eh bien oui : tu lies Sheet1 à tblSwitch, via Donnee_Source, et tu récupères Donnee_Traduite pour remplir le(s) champ(s) concerné(s) par le switch().

Je te conseille de passer par l'assistant pour mettre au point tes requêtes ; ensuite, tu peux récupérer le code, si tu veux.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/05/2011, 18h20   #7
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Ok et merci.
J'effectue tout ça et je te tiens au courant demain matin.

Encore merci et bonne soirée
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 09h41   #8
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Bonjour Richard_35,

J’ai trouvé une solution intermédiaire.
1) J’ai crée une table SWITCH
2) J’exécute la 1ère requête d’insertion qui fonctionne, dans la table de destination
3) Puis j’exécute une mise à jour de cette table avec le critère qui ne fonctionné pas, en liant la table de destination et la table SWITCH.
De cette manière, je retrouve tous mes enregistrements avec leur modification.
Merci de ton aide

Bonne journée
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 09h54   #9
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Rch05,

Bravo!
Effectivement, il est souvent efficace de segmenter les tâches.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 10h11   #10
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Merci Richard

A bientôt sur ce site qui m'a beaucoup aidé à réaliser divers tâches sous Access.
Vous êtes d'un grand secour pour des néophytes comme moi.
rch05 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 15h32.


 
 
 
 
Partenaires

Hébergement Web